The budget
Requests to the Developer API are counted per API key in a fixed one minute window, with one budget:
One budget, because this version only reads. When write endpoints arrive they will get their own, much lower, ceiling: a read loop is cheap and integrations legitimately do a lot of it, while a write loop creates rows.
The budget belongs to the key, not to your user or your organization. Two keys in one organization each get their own, which is what lets you isolate a batch job from your live integration by giving it its own key.
The unversioned payment-acceptance endpoints (
/one-time-payment, /payment-intent, /payment-method) are not metered by this mechanism. The limit above applies to /api/developer/v1 only.Reading your remaining budget
Every Developer API response carries the current state, including successful ones, so you can slow down before you are cut off rather than after.When you exceed it
The API answers429 with a Retry-After header, in seconds:
Backing off correctly
Wait forRetry-After, then add a little randomness so that several workers throttled at the same moment do not all return at the same instant.
Staying well under the limit
Filter server side, do not page and discard
Filter server side, do not page and discard
Fetching every payment to keep the ten you wanted spends your whole budget on rows you throw away.
GET /developer/v1/payment accepts status, date bounds and the id of the payment link, subscription or saved card the payment came from. See Pagination.Raise limit instead of making more requests
Raise limit instead of making more requests
One request for 100 rows costs one unit of budget. Ten requests for 10 rows cost ten.
limit=100 is the maximum.Poll on a schedule, not in a loop
Poll on a schedule, not in a loop
Nothing in a payments system changes fast enough to need second-by-second polling. Ask for what changed since your last run with
createdAtFrom, on a cadence measured in minutes.Use a separate key for batch work
Use a separate key for batch work
Because the budget is per key, a nightly export running on its own key cannot throttle the key another integration depends on. Create keys in the dashboard under Configuraciones, then Desarrollador.