Overview

External API limits are shared by all OAuth clients attached to the same GetBill company. They use a one-hour sliding window. For campaign snapshots specifically: The write limit permits a maximum-size 100,000-row staged snapshot to be delivered in five chunks of 20,000 rows, while leaving room for start, finalize, status, and safe retries.

Rate limit response

When a limit is exceeded, the API returns 429 Too Many Requests:
These headers are provided on the 429 response:
  • Retry-After: seconds to wait before retrying
  • X-RateLimit-Limit: request limit for the exceeded class
  • X-RateLimit-Remaining: remaining tokens
  • X-RateLimit-Reset: Unix reset timestamp
  • X-RateLimit-Window: window length in seconds.

Retry safely

Wait at least the Retry-After duration. Add jitter when many workers share the company credentials.
For snapshot mutations, a transport timeout and a 429 require different handling:
  • after 429, the request was rejected; wait and retry
  • after an uncertain timeout, retry using the endpoint’s idempotency rules, then poll the reference-based status URL.
One-request snapshot retries and chunk retries must reuse the exact request-body bytes. See Synchronize Campaign Snapshots.