RIP.BET Docs

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 as https://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, or oi_cap_usd on 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:

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. The detail field 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). See detail for 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.

On this page