api_key field empty and press Send.
Two ways in
demo-api.cabalspy.xyz adds the demo key for you, so a link or an example request works as it is. The key demo works anywhere a normal key does: in the SDKs, the MCP server and WebSocket connections.
Limits
The 20 requests are shared between REST and WebSocket; opening a WebSocket connection counts as one request. The counter resets at 00:00 UTC. IPv6 addresses are counted per /64 network.
Events younger than 15 minutes are left out of every answer, so the newest trade you see is about 15 minutes old. Totals and profiles are current, but lists stop at 5 rows and pagination always reports
has_more: false.
How a demo answer looks
Every demo answer carries ademo block and the header X-CabalSpy-Demo: true, so you, your code and an AI agent can always tell demo data from live data.
X-Demo-Remaining carries the same count as remaining_today.
When the 20 requests are used up, the API answers with HTTP 429:
WebSocket
demo block. Replies such as subscribed arrive at once; trade and stream events arrive 15 minutes after they happened. The connection closes after 30 minutes. A second demo connection from the same IP is refused while the first is open.
SDKs and the MCP server
DemoLimitError in TypeScript and Python, Error::DemoLimit in Rust) and do not retry it, because the budget only resets the next day.
The MCP server uses the demo automatically when you connect without a key, so an assistant can answer its first questions before anyone signs up.
When the demo is not enough
Free test key
1,000 real-time requests a month, full lists, every stream. Free account, no credit card.
Pay per request
AI agents pay per call in USDC with x402. No account, no key.

