Base URL
The API is reachable at two equivalent base URLs:api.counsel.markets) is preferred for programmatic clients; the path-based form (/api/v1) is provided for convenience.
Authentication
None. All endpoints are publicly accessible without credentials. NoAuthorization header, no API key, no session cookie.
Response Format
All responses areapplication/json. Successful responses return HTTP 200 with a JSON object. Collection responses include a top-level generated_at field (ISO 8601 timestamp) indicating when the indexer snapshot was produced.
Error Format
Errors return a non-2xx HTTP status code and a JSON body. Single-error responses use:
Rate Limiting
No hard rate limits are published. The API is backed by a live XRPL indexer; treat it like any shared public API and avoid polling at intervals shorter than a few seconds. If you are running a bot, cache the market list and only re-fetch on a reasonable schedule.Endpoints
Common Response Fields
generated_at, present on all list responses. ISO 8601 string representing the moment the indexer snapshot was generated. Use this to detect stale data; under normal conditions it should be within a few seconds of the current time.
source_tag, present on /markets and /markets/:id/bet-intent. The SourceTag counsel uses to attribute on-chain volume. Do not strip it from transactions you construct or sign.
List Markets
Fetch all public markets with live pool totals and indicative odds.
Get Market
Fetch a single market by ID, including bet caps.
Bet Intent
Build an unsigned XRPL Payment ready to sign and submit.
Overview
Error codes, rate limits, and base URL reference.