Daily allowance
Each partner has an allowance of 1,000 calls a day unless agreed otherwise. The day is the UTC day. Every authenticated call counts, including the webhook test. Every authenticated answer carries:X-RateLimit-Limit: your daily allowance;X-RateLimit-Remaining: what is left of it after this call.
401, and a path or method outside the Partner API, carry neither.
Past the allowance the API answers 429 rate_limited with reason rate_limited, does nothing, and sends Retry-After with the HTTP date of the next UTC midnight.
Flight totals throttle
PUT /v1/partner/grants/{grant_id}/flight-totals takes one accepted push per grant every 15 minutes. The server checks, in this order: a retry of the last accepted push (same as_of, same totals) answers 200 and applies nothing; a push whose as_of is older than the last accepted one answers 409 with reason stale_totals; and only then a NEW push inside the 15 minutes answers 429 rate_limited with reason push_throttled, with Retry-After naming the time the next push is taken. Nothing is applied in the last two cases. Because a push is a whole state, you lose nothing by waiting and sending the current state. See the idempotency guide.
Good practice
Reconcile withGET /v1/partner/grants (page with next_cursor) rather than polling each grant, and read the summary when a pilot opens your screen rather than on a timer.
