Bu makale İngilizce olarak mevcuttur.
On this pageThe limit
The limit
Each live key may make 600 requests per minute; each test key 60. The budget is counted per key, not per IP address, so two integrations with their own keys never eat into each other’s — and integrations behind one NAT do not either. A request over the limit is answered with 429 Too Many Requests and changes nothing.
Headers
Every response carries the current state of the key’s budget:
| Header | Meaning |
|---|---|
x-ratelimit-limit | Requests allowed per minute for this key (600 or 60). |
x-ratelimit-remaining | Requests left in the current window. |
x-ratelimit-reset | Seconds until the window resets. |
retry-after | On 429 only: seconds to wait before retrying. |
HTTP/1.1 429 Too Many Requestscontent-type: application/json; charset=utf-8x-ratelimit-limit: 600x-ratelimit-remaining: 0x-ratelimit-reset: 12retry-after: 12Handling 429
Wait retry-after seconds, then send the same request again. A request refused with 429 was not applied, so retrying it is safe — and with an Idempotency-Key, so is every other retry.
# curl retries 429 and honours retry-after with --retry.curl --retry 5 "https://dppapi-production.up.railway.app/v1/models" \-H "Authorization: Bearer $DPP_API_KEY"Staying under the limit
- Use the bulk endpoints:
POST /items/batch,POST /passports/publish,POST /passports/bulk-lifecycleandPOST /passports/import-updateseach take up to 1,000 rows. - Page lists with
limit=200instead of fetching records one by one. - Sync with
updated_sinceand webhooks instead of polling everything. - For a full copy,
GET /export/archiveis one request. - Watch
x-ratelimit-remainingin long jobs and slow down before it reaches zero.
Every limit in one table
| Limit | Value | Where |
|---|---|---|
| Requests per minute, live key | 600 | Rate limits |
| Requests per minute, test key | 60 | Test keys |
| Requests per minute without a key (resolver, specification) | 120 per IP address | Public resolver |
| Rows per bulk request | 1,000 | Batch create, bulk publish, bulk lifecycle, import updates |
| Page size | 1–200, default 50 | Pagination |
Battery list page size (GET /models/{id}/items) | 1–200, default 12 | Batteries |
| Idempotency key | 1–255 characters, kept 24 h | Idempotency |
| Document upload | PDF, JPEG or PNG, ≤ 25 MB, one file | Documents |
| Model name / chemistry | 200 / 120 characters | Models |
| Serial number / place of manufacture | 200 / 300 characters | Batteries |
| Status or recycling note | 500 characters | Passports |
| Industrial battery in scope | > 2 kWh | Art. 77(1) |
| Webhook response time | 10 s | Webhooks |
| Webhook retries | 5 (1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours) | Webhooks |
| Webhook URL | https, public address, ≤ 2000 characters | Webhook endpoints |
| Stored webhook response body | 2,000 characters | Delivery log |