/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 theAuthorization 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 replacesdata 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 answers402 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.
429 RATE_LIMITED before the first line. Streams cannot be paid per call.
