API Overview¶
You can control Tinybird services using the API as an alternative to the UI and CLI.
The following APIs are available:
| API name | Description |
|---|---|
| Analyze API | Analyze a given NDJSON, CSV, or Parquet file to generate a Tinybird Data Source schema. |
| Data Sources API | List, create, update, or delete your Tinybird Data Sources, and insert or delete data from Data Sources. |
| Events API | Ingest NDJSON events with a simple HTTP POST request. |
| Jobs API | Get details on Tinybird jobs, and list the jobs for the last 48 hours or the last 100 jobs. |
| Pipes API | Interact with your Pipes, including Pipes themselves, API Endpoints, Materialized Views, and managing Copy jobs. |
| Query API | Query your Pipes and Data Sources inside Tinybird as if you were running SQL statements against a regular database. |
| Environment Variables API | Create, update, delete, and list variables that can be used in Pipes in a Workspace. |
| Sink Pipes API | Create, delete, schedule, and trigger Sink Pipes. |
| Tokens API | List, create, update, or delete your Tinybird Static Tokens. |
Make all requests to Tinybird's API Endpoints over TLS (HTTPS). All response bodies, including errors, are encoded as JSON.
You can get information on several Workspace operations by monitoring your jobs, using either the APIs or the built-in Tinybird Service Data Sources.
Regions and endpoints¶
A workspace belongs to a region. The API for each region has a specific API base URL that you use to make API requests.
The following table lists the current regions and their corresponding API base URLs:
Current Tinybird regions¶
| Region | Provider | Provider region | API base URL |
|---|---|---|---|
| Europe | GCP | europe-west2 | https://api.europe-west2.gcp.tinybird.co |
| Europe | GCP | europe-west3 | https://api.tinybird.co |
| US East | GCP | us-east4 | https://api.us-east.tinybird.co |
| North America | GCP | northamerica-northeast2 | https://api.northamerica-northeast2.gcp.tinybird.co |
| Europe | AWS | eu-central-1 | https://api.eu-central-1.aws.tinybird.co |
| Europe | AWS | eu-west-1 | https://api.eu-west-1.aws.tinybird.co |
| US East | AWS | us-east-1 | https://api.us-east.aws.tinybird.co |
| US West | AWS | us-west-2 | https://api.us-west-2.aws.tinybird.co |
Tinybird Local¶
The Tinybird Local container exposes the following API endpoint:
http://localhost:7181/v0/
See Tinybird Local for more information.
Authentication¶
Tinybird makes use of Tokens for every API call. This ensures that each user or application can only access data that they are authorized to access. See Tokens.
You must make all API requests over HTTPS. Don't make calls over plain HTTP or send API requests without authentication.
Replace the Tinybird API hostname or region with the API region that matches your Workspace.
There are two ways to authenticate your requests in the Tinybird API: using an authorization header, or using a URL parameter.
Authorization header¶
You can send a Bearer authorization header to authenticate API calls. With cURL, use -H "Authorization: Bearer <token>".
If you have a valid Token with read access to the particular Data Source, you can get a successful response by sending the following request:
Authorization header Authenticated request
curl \ -X GET \ -H "Authorization: Bearer <token>" \ "https://api.tinybird.co/v0/sql?q=SELECT+*+FROM+<pipe>"
URL parameter¶
You can also specify the Token using a parameter in the URL, using token=<token>. For example:
URL parameter authenticated request
curl -X GET \ "https://api.tinybird.co/v0/sql?q=SELECT+*+FROM+<pipe>&token=<token>"
Compression¶
To compress API responses, add Accept-Encoding: gzip to your requests. For example:
Request with compressed response
curl \ -X GET \ -H "Authorization: Bearer <token>" \ -H "Accept-Encoding: gzip" \ "https://api.tinybird.co/v0/sql?q=SELECT+*+FROM+<pipe>"
Errors¶
Tinybird's API returns standard HTTP success or error status codes. In case of errors, responses include additional information in JSON format.
The following table lists the error status codes.
### Response codes
| Code | Description |
|---|---|
| 400 | Bad request. This could be due to a missing parameter in a request, for instance |
| 403 | Forbidden. Provided auth token doesn't have the right scope or the Data Source isn't available |
| 404 | Not found |
| 405 | HTTP Method not allowed |
| 408 | Request timeout (e.g. query execution time was exceeded) |
| 409 | You need to resubmit the request due to a conflict with the current state of the target source (e.g.: you need to delete a Materialized View) |
| 411 | No valid Content-Length header containing the length of the message-body |
| 413 | The message body is too large |
| 429 | Too many requests. When over the rate limits of your account |
| 500 | Unexpected error |
Limits¶
Check the limits page for limits on ingestion, queries, API Endpoints, and more.
Versioning¶
All Tinybird APIs are versioned with a version string specified in the base URL. Always use the latest API available.
When versioning services, Tinybird adheres to semantic versioning rules.
Reserved words¶
The following keywords are reserved. You can't use them to name Data Sources, Pipes, nodes or Workspaces. Case is ignored.
ArrayBoolBooleanDateDate32DateTimeDateTime32DateTime64DecimalDecimal128Decimal256Decimal32Decimal64EnumEnum16Enum8FixedStringFloat32Float64IPv4IPv6Int128Int16Int256Int32Int64Int8MultiPolygonPointPolygonRingStringTABLEUInt128UInt16UInt256UInt32UInt64UInt8UUID_temporary_and_external_tablesaddafterallandantianyarrayasascasofbetweenbycasecollatecolumncolumnscrosscubecustom_errorday_diffdefaultdefineddescdistinctelseendenumerate_with_lasterrorexistsfromfullfunctionsgenerateRandomglobalgrouphavingifilikeininnerinsertintervalintojoinleftlikelimitlimitsmaxminnotnullnumbers_mtononeororderouterprewherepublicrightsampleselectsemisplit_to_arraysql_andsql_unescapesystemtablethentinybirdtounionusingwherewithzeros_mt
Pipe, Data Source and node names are globally unique. You can't use an alias for a column that matches a globally unique name.