Errors
The RIPBET API returns errors as application/problem+json documents following RFC 7807 (and its successor RFC 9457). Every error response carries:
The RIPBET API returns errors as application/problem+json documents
following RFC 7807 (and its
successor RFC 9457). Every error response carries:
type— a stable URI such ashttps://docs.rip.bet/errors/<slug>that identifies the error class.title— a short, machine-readable code (the<slug>).status— the HTTP status code, repeated in the body for convenience.detail— a human-readable explanation of this specific occurrence.instance(optional) — the request path that produced the error.- Extension fields — additional context, such as
asset,current_oi_usd, oroi_cap_usdon capacity errors.
Example:
{
"type": "https://docs.rip.bet/errors/oi-cap-exceeded",
"title": "OI Cap Exceeded",
"status": 403,
"detail": "Projected OI 1200000 would exceed cap 1000000",
"asset": "NYCTMP1",
"oi_cap_usd": "1000000"
}
Treat the type URI as an identifier, not a URL
Match on the type slug (the final path segment) rather than the host or
the human-readable title. The slug is part of the API contract; the host
and prose may change. Do not block on whether the URL resolves to a docs
page — many slugs intentionally do not have a dedicated page.
Categories
- Trading errors — common user-actionable errors when placing
orders, setting leverage, or registering an agent wallet (e.g.
agent_not_approved,oi_cap_reached,close_only_mode,price-outside-oracle-band,market-halted,unknown-asset,invalid-leverage,unsupported-tif,invalid-side,reduce-only-required,no-safe-liquidity).
Documented error codes
The pages below cover the application-level errors a public API caller is most likely to need to handle:
- access_request_already_processed — admin tried to approve or reject a request that is no longer pending.
- access_revoked — the caller's access has been revoked.
- already_allowlisted — a wallet that is already approved tried to submit a new access request.
- identifier_revoked — an admin tried to add a whitelist entry that conflicts with a revoked identifier.
- oi-cap-exceeded — an order would push open interest past the per-asset cap.
- request_conflicts_with_revoked_identifier — deprecated; previously emitted on approval conflicts with revoked identifiers.
Codes without a dedicated page
The API also emits codes that intentionally do not have their own pages because they describe transient infrastructure conditions or generic contract violations. You may encounter, for example:
invalid_input(400) — request failed validation. Thedetailfield describes the specific rule that was violated; fix the request and retry.cap_exceeded(403) — a generic capacity-cap rejection from a non-trading subsystem (rebates, payouts). Seedetailfor the limit.budget_exhausted(409) — a per-window budget has been used up; retry after the window resets.serialization_error(500),config-error(500),internal-error(500),database-error(503) — service-side conditions. Treat as transient: retry idempotent requests with backoff and contact support if the condition persists.payout_already_exists(409),violation_not_approved(403) — back-office bookkeeping errors that surface only on internal admin endpoints.
If you receive a type you do not recognize, fall back to status and
detail: 4xx codes mean the request needs to change before it will
succeed; 5xx codes are server-side and are usually safe to retry with
backoff. For persistent or unexplained errors, contact support with the
type, instance, and a request ID if your client has one.
Errors and limits
Normal API errors use application/problem+json. Missing routes and routes hidden by the active market mode may return a plain text 404 Not found.
Trading Errors
These are the most common user-actionable errors clients hit when placing or modifying orders, or when setting up an agent wallet for trading. Each entry lists the slug, status code, when it surfaces, and how to resolve it. Match on the slug (the final path segment of type), not the title or status alone — see Errors for the contract.