Skip to main content

GET /portfolio: portfolio_busy and the rewritten rate limits

GET /portfolio can now answer 503 portfolio_busy with a Retry-After header, and its rate limits changed for anonymous and keyed callers alike.

What changed​

  • GET /portfolio can answer 503 portfolio_busy with a Retry-After header (delta-seconds) when the server is already computing as many fresh snapshots as it safely can and yours was not cached. Sleep Retry-After and retry the same request. A cached snapshot is never refused.
  • Rate limits on GET /portfolio. Anonymous calls have their own per-IP row (600 per minute). With a general tik_ key the route is not bucketed by IP at all; the per-organisation bucket is the bound, sized for one request every 5 seconds per active end user.
  • The blanket per-IP ceiling across all endpoints is now set per environment, always at or above the per-endpoint limits, and no longer covers /portfolio.
  • Portfolio snapshots refresh on a 30-second cadence (as_of, is_cached). Polling faster returns the same snapshot.

What to do​

Nothing is required. If your client has a generic transient-error branch, add 503 portfolio_busy to it and honour Retry-After. Keyed integrators polling many end-user wallets should pace to the organisation bucket rather than spreading across IPs.

Details: Integrator API Keys and the API Reference.