Developers · Core concepts

Rate limits and quotas

Requests per minute for live and test keys, the rate-limit headers, how to back off on 429, and every platform limit in one table.

Version
v1.0.0
Base URL
https://dppapi-production.up.railway.app/v1
Format
JSON · OpenAPI 3.1
FeedbackLast updated

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:

HeaderMeaning
x-ratelimit-limitRequests allowed per minute for this key (600 or 60).
x-ratelimit-remainingRequests left in the current window.
x-ratelimit-resetSeconds until the window resets.
retry-afterOn 429 only: seconds to wait before retrying.
429 response
HTTP/1.1 429 Too Many Requestscontent-type: application/json; charset=utf-8x-ratelimit-limit: 600x-ratelimit-remaining: 0x-ratelimit-reset: 12retry-after: 12

Handling 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-lifecycle and POST /passports/import-updates each take up to 1,000 rows.
  • Page lists with limit=200 instead of fetching records one by one.
  • Sync with updated_since and webhooks instead of polling everything.
  • For a full copy, GET /export/archive is one request.
  • Watch x-ratelimit-remaining in long jobs and slow down before it reaches zero.

Every limit in one table

LimitValueWhere
Requests per minute, live key600Rate limits
Requests per minute, test key60Test keys
Requests per minute without a key (resolver, specification)120 per IP addressPublic resolver
Rows per bulk request1,000Batch create, bulk publish, bulk lifecycle, import updates
Page size1–200, default 50Pagination
Battery list page size (GET /models/{id}/items)1–200, default 12Batteries
Idempotency key1–255 characters, kept 24 hIdempotency
Document uploadPDF, JPEG or PNG, ≤ 25 MB, one fileDocuments
Model name / chemistry200 / 120 charactersModels
Serial number / place of manufacture200 / 300 charactersBatteries
Status or recycling note500 charactersPassports
Industrial battery in scope> 2 kWhArt. 77(1)
Webhook response time10 sWebhooks
Webhook retries5 (1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours)Webhooks
Webhook URLhttps, public address, ≤ 2000 charactersWebhook endpoints
Stored webhook response body2,000 charactersDelivery log

Çerez tercihleri

Hangi çerezlerin kullanılacağını siz seçersiniz. Tercihinizi istediğiniz zaman alt bilgideki “Çerez ayarları”ndan değiştirebilirsiniz. Gizlilik politikası

Gerekli

Her zaman açık

Sitenin çalışması için gereklidir: açık/koyu tema seçiminiz ve bu çerez tercihiniz tarayıcınızda saklanır. Sizi izlemek için kullanılmazlar.

Analitik

Google Analytics 4, sayfaların nasıl kullanıldığını istatistiklerle ölçer ve siteyi iyileştirmemize yardımcı olur. Kabul ederseniz çerez bırakır ve ziyaretinizi tam olarak ölçer. Reddederseniz çerez bırakmaz, ancak Google yine de görüntülenen sayfa, tarayıcı türü ve IP adresi gibi teknik veriler alabilir.

_ga, _ga_* · en çok 2 yıl · Google