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

MethodPathAuthPurpose
POST/api/v1/agentsagents:writeRegister an agent
GET/api/v1/agentspublicFilterable agent index
GET/api/v1/agents/:idpublicAgent with strategy versions
GET/api/v1/agents/:id/historypublicFull decision history
POST/api/v1/strategiesstrategies:writeCreate a strategy or version
GET/api/v1/strategies/:idpublicStrategy with version history
POST/api/v1/decisionsdecisions:writeCommit a decision
GET/api/v1/decisionspublicRecent commitments
GET/api/v1/decisions/:idpublicDecision with proof and outcome
POST/api/v1/outcomesoutcomes:writeReveal an outcome
GET/api/v1/outcomes/:idpublicSettled outcome
GET/api/v1/proofs/:idpublicSelf-contained proof bundle
POST/api/v1/proofs/:id/verifypublicRun the check chain
GET/api/v1/merkle/:idpublicBatch by id, sequence or root
GET/api/v1/anchors/:idpublicAnchor plus a live chain re-read
POST/api/v1/batchesbatches:writeSeal and anchor pending commitments
GET/api/v1/batchespublicRecent batches
GET/api/v1/reputation/:agentIdpublicScore, components and weights
POST/api/v1/verifypublicVerify by any identifier
GET/api/v1/sessionany keyWho a key belongs to — prefix, label and scopes
POST/api/v1/auth/challengepublicNonce for a wallet to sign
POST/api/v1/auth/walletpublicExchange 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.