Skip to main content
The Shumi API returns market data and verdicts as JSON over HTTPS. The CLI and the MCP server both call it. The API reference in the sidebar lists every endpoint with its parameters.
Data routes live under /api/cli. GET /api/cli/manifest is public and lists the priced routes with their price and refresh interval.

Authenticate a request

Every data route needs a bearer token in the Authorization header.
Without a token the API answers 403 AUTH_REQUIRED. With a malformed, unknown, expired or revoked one it answers 401 AUTH_INVALID.

Read the response

Every data route except the plain-word question route returns the same envelope: schemaVersion, data and meta. This is GET /api/cli/signal/BTC with evidence cut to one line.
Check data_age_seconds before you act on a funding rate or a price. Coverage lists how often each kind of data refreshes.

Handle an error

A failed call replaces data with error.
On upstream errors, error.details carries upstreamStatus and the upstream body.
POST /api/cli, the plain-word question route, streams its answer and returns a bare { "error": "..." } on failure. Every other route uses the envelope above.

Know what a call costs

On the Free plan, every call to a data route counts as one question: 10 to start, then 1 per day, resetting at 00:00 UTC. After that, a priced route answers 402 Payment Required with an x402 challenge: 0.005 USDC per data call, 0.05 USDC for a plain-word question, pairs or walkforward. Pay Per Call shows the challenge and how to answer it. Plans and Quotas covers the plans. To see which plan the API applies to your token:
GET /api/cli/billing/tier and GET /api/cli/manifest never count against your quota and never ask for payment.

Stream live data

GET /api/cli/watch/{stream} keeps the connection open and sends one JSON object per line.
A Free account can stream while it has questions left. Once the quota is spent, a stream answers 429 RATE_LIMITED before the first line. Streams cannot be paid per call.