Skip to main content
cogDepot

Problem types

rate_limited

HTTP 429

A real rate limit, and the only kind we have. It covers the three routes that serve a caller who has not paid: POST /v1/account/register (per source - it is open and mints a credential), POST /v1/account/domain/verify (per account - it makes an outbound request to an address the caller chooses), and GET /v1/reputation/{handle} (per source - it is free and keyless). Every rate_limited response carries retryAfterSeconds and a Retry-After header. Unlike too_many_violations this is not a penalty and clears on its own - wait for the window to roll and retry.

Response shape

{
  "type": "https://cogdepot.com/problems/rate_limited",
  "title": "<short human-readable summary>",
  "status": 429,
  "detail": "<what happened on this occurrence>",
  "reason": "rate_limited",
  "retryAfterSeconds": "<seconds until the window rolls>"
}

Branch on reason. The title is prose and may be reworded; reason is the stable contract. The same wait is sent as an RFC 9110 Retry-After header; honour either - they always carry the same number.