Skip to main content
The API meters requests in budgets. Over a budget, a call is refused with 429 and a Retry-After header instead of being served. The budgets below are the defaults; Bullionwale’s limits for your account may differ.

Budgets

  • Reads and orders are separate. Polling GET /orders/{order_id} never uses your order budget, and placing orders never slows your reads.
  • Budgets are per key. Give each system its own key and it gets its own budget.
  • Replays count. Resending a POST /orders with the same Idempotency-Key uses order budget like a new order.
  • Test and production are metered separately, because a test key and a live key are different keys. The per-account order budget applies to production only.

When you are over a budget

429 Too Many Requests
Every 429 carries Retry-After: the number of whole seconds to wait. The API sends no other rate-limit headers, so do not wait for a remaining-count header.

Backing off

  1. On 429 or 503, wait Retry-After seconds (or, without the header, a few seconds with jitter).
  2. Retry an order with the same Idempotency-Key and body, so a retry can never book twice. See Idempotency and safe retries.
  3. On auth_throttled, fix the key first: retrying a bad key keeps the address locked out.
Spread work out instead of bursting. A program that places many orders at once should pace them to stay under the 10-second budget, and poll pending orders every 1 to 2 seconds rather than in a tight loop.