# Baseloop Docs > Read your Baseloop tables, send rows into them, and work with Baseloop from the CLI. - **Getting started** - [Introduction](https://docs.baseloop.io/index.md): Read your Baseloop tables from your own code, and send rows into them. - [Quickstart](https://docs.baseloop.io/quickstart.md): Get your API key and read your first rows. - [Authentication](https://docs.baseloop.io/authentication.md): Send your organization API key as a bearer token. - **Concepts** - [Rate limits](https://docs.baseloop.io/rate-limits.md): How many requests you can send, and the size limits on each one. - [Pagination](https://docs.baseloop.io/pagination.md): Page through rows with a cursor. - [Errors](https://docs.baseloop.io/errors.md): Every error has the same shape. Branch on the status code. - [Filtering rows](https://docs.baseloop.io/filtering-rows.md): Search rows by text and filter them by column values. - **Send data in** - [Webhooks](https://docs.baseloop.io/webhooks.md): Send rows into a table by posting JSON to its webhook URL. - **CLI** - [CLI](https://docs.baseloop.io/cli.md): Use Baseloop from your terminal, or let Claude Code and Codex use it for you. - **API reference** - Workspaces: The workspaces in your organization. - [List workspaces](https://docs.baseloop.io/api-reference/workspaces/list-workspaces.md): Returns every workspace in your organization with its number of tables. - Tables: Tables and their columns. - [List tables](https://docs.baseloop.io/api-reference/tables/list-tables.md): Returns the tables in your organization, or only those in one workspace. - [Get table columns](https://docs.baseloop.io/api-reference/tables/get-table-schema.md): Returns the columns of a table. Row cells are keyed by column ID, so use this to put names on them. AI prompts, action settings and credentials are never included. - Rows: Read, search and filter rows. - [List rows](https://docs.baseloop.io/api-reference/rows/list-rows.md): Returns rows newest first, one page at a time. Add q to keep only rows whose cells contain that text. For column filters, use POST /tables/{tableId}/rows/query. - [Search and filter rows](https://docs.baseloop.io/api-reference/rows/query-rows.md): Returns the same rows as GET /tables/{tableId}/rows, narrowed by text search, column filters or both. - Webhooks: Send rows into a table. - [Send rows to a table](https://docs.baseloop.io/api-reference/webhooks/send-webhook-rows.md): Adds rows to a table that has a webhook. Send one JSON object, an array of objects, or an object with the array under "data". Each object becomes one row: the webhook column keeps the whole object and the columns mapped from it in the app fill in. Up to 500 objects and 1 MB per request. Rows can take up to 10 seconds to appear. No API key: anyone with the URL can add rows, so keep it private.