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 /portfoliocan answer503 portfolio_busywith aRetry-Afterheader (delta-seconds) when the server is already computing as many fresh snapshots as it safely can and yours was not cached. SleepRetry-Afterand 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 generaltik_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.