Rate Limits / Pagination Conventions
4 min
Rate limits
🔶 TO CONFIRM (remove before publishing)
No rate limit is documented in the material available so far. Confirm with the dev team whether a limit exists (requests per minute, concurrent requests) and which HTTP status goes with it. Then write the numbers here.
Until then, design your integration to avoid unnecessary requests:
- Cache reference data that rarely changes (locations, price lists, categories) and refresh it on a schedule.
- Use webhooks (Delivery API) instead of polling for changes.
- Request only the fields you need.
Pagination
Both APIs paginate with cursors.
Arguments | first, after, last, before |
|---|---|
Total count | totalCount |
How to read the next page | Send pageInfo.endCursor as after |
When to stop | pageInfo.hasNextPage is false |
List field | items (and edges) |
query GetCustomersPage($first: Int, $after: String) {
customers {
customer(first: $first, after: $after) {
totalCount
pageInfo {
hasNextPage
endCursor
}
items {
publicKey
firstName
lastName
}
}
}
}{
"first": 30,
"after": "<endCursor of the previous page>"
}Fields that return a connection accept the cursor arguments. These are customer, products, streets, country, companies, orders, promotion, deliveryStreets and driverUsers.
Plain lists, such as customerCategories, locations or currencies, aren't paged. They return all items.
💡 TIP
Use totalCount to show progress to your users (for example "30 of 309") instead of reading all pages first.
ℹ️ INFO
orders also needs order keys or a period of at most 1 year.