Skip to main content
Use this page for the rules shared by the public API. Each endpoint page explains what it returns, its parameters, and the limits that affect your client. Most data routes return JSON. Markdown, streaming, redirect, and MCP routes describe their response formats on their own pages.

Base URL

For example data, use https://0xinsider.com/sandbox/api/v1/. The sandbox needs no key and returns no production data.

Authentication

Send your credential in the Authorization header:
These routes need no credential:
  • GET /api/v1
  • GET /api/v1/openapi.json
  • GET /api/v1/coverage and its deprecated alias GET /api/v1/platforms
  • GET /api/v1/health
  • GET /api/v1/pick-of-the-day/ledger
  • POST /api/v1/agents/register
Public routes ignore credentials you send. Authentication explains how to create and manage credentials.

The envelope

A JSON object response contains its type, data, and request metadata:
A paginated list also includes the information needed for the next page:
Errors use object: "error" and an error object. Errors explains the codes, reasons, and recovery actions.

Prefixed IDs

Use the IDs returned by the API. Prefixes identify what each ID refers to. The batch market routes, POST /markets/flow/batch and deprecated POST /markets/intel/batch, accept raw condition_id values only.

Query parameters

By default, an endpoint ignores query parameter names it does not recognize. On 200 and 304 responses, these headers tell you which parameters it used: During development, send X-Query-Validation: strict to catch misspelled filters. An unknown name then returns 400 with error.code: "bad_request", error.reason: "unknown_query_parameter", and the name in error.param.

Rate limits

Authenticated responses carry RateLimit-*, X-RateLimit-*, and X-Monthly-Quota-* headers. Every API response carries X-Request-Id; when a JSON envelope is present, it matches meta.request_id. Read Retry-After on a 429 or 503, a 404 with pick_not_released, or a 408 from a GET or HEAD. A timed-out write request has no retry time because it may have completed. Rate limits explains headers, monthly quota, and retry behavior.

Timeout

A request that takes more than 30 seconds returns 408 Request Timeout with error.code: "request_timeout". For GET or HEAD, wait according to Retry-After before retrying. For a write request, check the resource’s state before repeating it because the original request may have completed on the server.

Browser CORS

Browser clients can call the REST API from any origin using the Authorization header. Send no cookies or credentials: "include". The browser can cache a successful preflight for 24 hours. Remote MCP has an additional Origin check. The live server accepts only its listed 0xinsider origins; loopback origins are accepted only outside production. Requests without an Origin header can use the normal MCP credential flow.

Trust metadata

Request expand=trust on trader, batch trader, or market snapshot routes to get source, freshness, reconciliation, and completeness information for supported values. Read these fields before an automated action depends on a number. Keep unavailable values unavailable. Converting them to 0, [], or {} would change “unknown” into a claim that the value is zero or empty. Trust metadata explains each state.

What the reference does not cover

  • Internal /api/* routes used by 0xinsider.com. They use session cookies and can change without notice.
  • Full order-book depth. Market snapshots include only the best bid and ask.
  • Exchanges other than Polymarket. Polymarket is the only provider.