Base path
All endpoints sit under/api/v1 on the orchestrator host. The canonical peaq-managed endpoint is https://orchestration.peaq.xyz:
GET /health is an exception: it lives at host root, not under /api/v1, and is exempt from API-key auth.
Self-hosters can run their own orchestrator via Docker Compose and point PEAQOS_ORCHESTRATION_URL at it.
Access model
- The API is public unless the deployment enables API-key auth (
PEAQOS_REQUIRE_API_AUTH=true). - Machine registration accepts
identityRefas either a peaq (did:peaq:0x...) or a peaqOS machine public ID (peaqos:machine:<id>). - When
PEAQOS_MACHINE_IDENTITY_VERIFICATION=required(production default), every machine registration and machine-bound write verifiesidentityRefagainst peaqOS data and requires a signed DID-controller challenge. - Machine Agent pairing is challenge-based. The agent signs a server-issued challenge with the wallet key behind
agentAddress(). The orchestrator verifies the signature, persists the pairing, and issues a signed session JWT aspairingToken. - Market search requires (a) an active, bonded peaqOS machine, (b) a verified
identityRefwith ownership proof, and (c) an active Machine Agent pairing. - When
PEAQOS_REQUIRE_AGENT_PAIRING_AUTH=true(production default), market search must include thex-agent-pairing-tokenheader. The token is a signed HS256 JWT with claims formachineId,pairingId,sessionId,agentAddress,agentDid,delegationPolicyHash, and expiry. Rotate it via the pairing sessions endpoint beforeexp. - The pairing token proves delegated permission. It does not prove machine activation.
- Pass provider credentials per request under
providerCredentials. They feed runtime discovery and are redacted before persistence.
Payment model
peaqOS does not collect marketplace payments. The payment-intent and payment-proof endpoints record provider/service payment state only when the selected adapter requires direct provider payment (x402, , wallet rails). Operators or machines pay the selected provider directly through that provider’s supported . pay.sh and Agentic Market services use request-scoped payment proofs: the API returns the provider’s payment challenge frompayment-intent, the operator agent signs or pays locally, and the resulting proof or header is sent to payment-proof and execute. Raw payment headers are never stored.
Common envelopes
Error codes
Common types
Pagination
Every list endpoint acceptsListQuery. Cursors are opaque — do not parse them.
- First page omits
cursor. nextCursoris omitted when there is no next page. It is nevernull.- Pass
nextCursorback unchanged on the next request. - Invalid
limit(out of range or non-integer) or malformedcursorreturns400 VALIDATION_ERROR.
Health
| Endpoint | Path | Description |
|---|---|---|
GET /health | host root (not /api/v1) | Process health. Returns { ok: true }. Exempt from API-key auth. |
GET /readiness | /api/v1/readiness | Store, catalog, auth, runtime, and skill checks. Returns { status, checks[] }. |
Endpoint groups
Machines & identity
Identity challenges, machine CRUD, EIP-191 controller proofs.
Machine Agent pairings
Challenge-based pairings, session JWT rotation, delegation policy.
Skills & services
Browse the skill registry, the partner service catalogue, and the adapter setup catalogue; run market search.
Market orders & payments
Order lifecycle, payment intent, escrow, execute, confirm, dispute.
Orchestration
Runtime endpoints, machine-side agents, graph, tasks, routes, outcomes, runs, policies, audit events.
Server configuration
When self-hosting the orchestrator, these toggles change the contract callers see. Defaults match the.env.example ships.
| Variable | Default | Purpose |
|---|---|---|
PEAQOS_REQUIRE_API_AUTH | false | Gate every /api/v1/* request with a deployment API key (PEAQOS_API_KEY/PEAQOS_API_KEYS). |
PEAQOS_REQUIRE_AGENT_PAIRING_AUTH | true | Require x-agent-pairing-token on market writes. |
PEAQOS_MACHINE_IDENTITY_VERIFICATION | required | Enforce DID-controller proof on machine writes. |
PEAQOS_AGENT_PAIRING_VERIFICATION | required | Enforce EIP-191 challenge proof on pairings. |
PEAQOS_AGENT_PAIRING_SESSION_SECRET | required in prod | HS256 secret for session JWTs and challenge HMAC. |
PEAQOS_AGENT_PAIRING_CHALLENGE_TTL_MS | 600000 | Pairing challenge TTL (10 min). |
PEAQOS_AGENT_PAIRING_SESSION_TTL_MS | 3600000 | Session token TTL (1 hour). |
PEAQOS_REQUIRE_MARKET_QUOTES | false | Reject POST /market/orders without searchId and quoteId. |
PEAQOS_ENFORCE_SERVICE_PAYMENT_RAILS | false | Reject payment-intent rails not in the service’s supportedRails. |
PEAQOS_REQUIRE_PAYMENT_BEFORE_EXECUTE | false | Block execute unless payment is held / release_pending / released / not_required. |
PEAQOS_REQUIRE_PAYMENT_RPC_VERIFICATION | false | Force verificationMode=rpc on payment-proof. |
PEAQOS_PAYMENT_RPC_URL | falls back to PEAQ_EVM_RPC_URL, PEAQOS_EVM_RPC_URL | Primary RPC for proof verification. |
PEAQOS_USDT_CONTRACT / PEAQOS_USDT_DECIMALS | none / 6 | Default USDT contract and decimals for payment proof. |
PEAQOS_MCR_API_URL | https://mcr.peaq.xyz | peaqOS MCR endpoint for identity resolution. |

