/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. Prices are live, funding and signals refresh every hour and the screener every 4 hours. Coverage has the full table.
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, returns { "text": "...", "steps": [...] } and 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. Plus is $20 a month for 50 questions a day; Pro is $200 a month with no limit.
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.
For a bot or dashboard on a timer, Run a bot or dashboard shows which calls to repeat and which to save for a change.
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.
