- 14 Mar 2024
- 1 Minute to read
- Print
- DarkLight
- PDF
URL length limitations for web API requests
- Updated on 14 Mar 2024
- 1 Minute to read
- Print
- DarkLight
- PDF
Requests to Airtable’s Web API are limited to a 16,000-character URL length. Requests exceeding this character limit typically involve complex formulas and filtering workflows, significantly increasing URL lengths when passed as query parameters. This article covers the necessary details and alternative workarounds if your workflow exceeds this limit.
URL length limitations for web API requests workarounds
If your workflow request exceeds 16,000 characters, we recommend trying one of the following alternatives:
Use POST
instead of GET
POST
instead of GET
We created a new POST
version of the existing GET
list table records endpoint, allowing you to pass the options you may currently use through query parameters as JSON in the request body instead. This new POST version will significantly reduce URL length because these parameters are no longer included in the URL.
GET
endpoint:https://api.airtable.com/v0/BASE_ID/TABLE_ID_OR_NAME
POST
endpoint:https://api.airtable.com/v0/BASE_ID/TABLE_ID_OR_NAME/listRecords
Note
The key to this change is the use of
listRecords
at the end of the URL.
This example details GET
requests for retrieving table records that include multiple query parameters:
curl
https://api.airtable.com/v0/BASE_ID/TABLE_ID_OR_NAME?cellFormat=string&fields%5B%5D=Field1&fields%5B%5D=Field2&maxRecords=50&pageSize=10&filterByFormula=%7BDays%20overdue%7D%20%3E%203 \
-H "Authorization: Bearer YOUR_API_KEY"
Following the addition of a new POST route, this same request would be made like this where the query parameters are now part of the request body:
curl -X POST https://api.airtable.com/v0/BASE_ID/TABLE_ID_OR_NAME/listRecords \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"cellFormat": "string",
"fields": ["Field1", "Field2"]
"maxRecords": 50,
"pageSize": 10,
"filterByFormula": "{Days overdue} > 3"
}'
Note
To use the
timeZone
anduserLocale
parameters, the following query parameters are required:curl -X POST https://api.airtable.com/v0/BASE_ID/TABLE_ID_OR_NAME/listRecords?timeZone=Europe%2FLondon&userLocale=en-gb \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "cellFormat": "string", "fields": ["Field1", "Field2"] "maxRecords": 50, "pageSize": 10, "filterByFormula": "{Days overdue} > 3" }'
Use a filtered view
To continue making the same GET
request for listing table records, create a separate table view — including all the filtering typically used to pass using query parameters. Next, pass the view ID with the request instead of including filterByFormula
:
curl https://api.airtable.com/v0/BASE_ID/TABLE_ID_OR_NAME?view=Grid%20view \
-H "Authorization: Bearer YOUR_API_KEY"
Note
In rare cases where you cannot resolve this with a view, we recommend using the first option of using the
POST
endpoint.
Using Airtable.js
Airtable.js
If your workflow involves making requests using Airtable.js
, we have already made a change to address this with the latest version of the SDK. To take advantage of this, you will just need to update the version you are using to 0.11.5 or higher.