Documentation
All 214 endpoints share the same request handling, response envelope and error taxonomy. Learn it once.
Quickstart
Your first paid call, end to end.
Paying with x402
The challenge, the signature, and every rejection explained.
Errors
Stable codes, what they mean, and which are worth retrying.
The response envelope
Success or failure, every response has the same shape. Handlers return a result and the framework wraps it, so the envelope cannot drift between endpoints.
{
"request_id": "0f1c…", // echo it back when reporting a problem
"service_id": "market-ticker",
"service_version": "1.0.0",
"status": "success",
"data": { … }, // the endpoint's own payload
"warnings": [], // things you should know about this result
"sources": [], // where the data came from, with timestamps
"confidence": null, // 0..1 for graded judgements; null for exact maths
"informational_only": true, // true when this is analysis, not advice
"data_timestamp": "…", // when the underlying data was true
"processing_ms": 42, // measured, not estimated
"generated_at": "…"
} Fields worth understanding
warnings- Not decoration. A partial extraction, a truncated document, a figure that could not be verified, a source that was stale — all appear here. An empty array means the endpoint had nothing to qualify.
sources- Every endpoint that touches an upstream names it, says what was obtained from it, and whether the value came from cache. This is what makes a finding checkable rather than merely asserted.
confidence-
Present only where a graded judgement was made — screening, extraction,
classification. Deliberately
nullon exact calculations: a fixed 1.0 on arithmetic would be noise, and an invented number on a screening result would be worse than none at all. informational_only- True where the output is analysis rather than advice. Screening and analytics results are a starting point for a decision, never the decision.
Free routes
These need no payment:
| Route | What it is for |
|---|---|
GET /health | Liveness probe. |
GET /ready | Readiness probe including datastore and provider checks. |
GET /version | Application name, version and build metadata. |
GET /metrics | Prometheus metrics. Restricted to loopback/LAN or a token. |
GET /v1/catalog | Full public service catalogue. |
GET /v1/catalog/{service_id} | Public catalogue entry for one service. |
GET /v1/pricing | Public price list for every paid service. |
GET /v1/examples/{service_id} | Example request and response for one service. |
GET /v1/schema/{service_id} | JSON Schema for one service's input and output. |
GET /v1/status/public | Coarse public status. Exposes no sensitive detail. |
Conventions
- Money and prices are strings. Every monetary value is decimal arithmetic serialised as a string. Parsing them as floats reintroduces exactly the error the API went to trouble to avoid.
- Times are ISO-8601 UTC with a
Zsuffix. -
X-Request-Idis echoed on every response, errors included. Send your own to correlate with your logs. - Limits are per endpoint. Request size, timeout and concurrency are set individually and published on each endpoint's page.