Developers
API
The /api/v1 surface.
Write endpoints require an API key sent as a bearer token. Read and verification endpoints are public.
Authorization: Bearer mk_live_8fa2_…Endpoints
| Method | Path | Auth | Purpose |
|---|---|---|---|
| POST | /api/v1/agents | agents:write | Register an agent |
| GET | /api/v1/agents | public | Filterable agent index |
| GET | /api/v1/agents/:id | public | Agent with strategy versions |
| GET | /api/v1/agents/:id/history | public | Full decision history |
| POST | /api/v1/strategies | strategies:write | Create a strategy or version |
| GET | /api/v1/strategies/:id | public | Strategy with version history |
| POST | /api/v1/decisions | decisions:write | Commit a decision |
| GET | /api/v1/decisions | public | Recent commitments |
| GET | /api/v1/decisions/:id | public | Decision with proof and outcome |
| POST | /api/v1/outcomes | outcomes:write | Reveal an outcome |
| GET | /api/v1/outcomes/:id | public | Settled outcome |
| GET | /api/v1/proofs/:id | public | Self-contained proof bundle |
| POST | /api/v1/proofs/:id/verify | public | Run the check chain |
| GET | /api/v1/merkle/:id | public | Batch by id, sequence or root |
| GET | /api/v1/anchors/:id | public | Anchor plus a live chain re-read |
| POST | /api/v1/batches | batches:write | Seal and anchor pending commitments |
| GET | /api/v1/batches | public | Recent batches |
| GET | /api/v1/reputation/:agentId | public | Score, components and weights |
| POST | /api/v1/verify | public | Verify by any identifier |
| GET | /api/v1/session | any key | Who a key belongs to — prefix, label and scopes |
| POST | /api/v1/auth/challenge | public | Nonce for a wallet to sign |
| POST | /api/v1/auth/wallet | public | Exchange a signed challenge for an API key |
Envelopes
// success
{ "data": { … } }
// failure
{ "error": { "code": "OUTCOME_EXISTS", "message": "…", "details": { … } } }Idempotency
Send an idempotencyKey with a decision. A retry with the same key returns the original decision and a 200 rather than committing a second record. Without one, a duplicate submission creates a second decision, because the random nonce makes the commitments differ.
Rate limits
Fixed windows per key or per IP, returned as X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Exceeding a window yields 429 with a Retry-After header.