Statuses
Read
GET /api/v1/orders
Auth: session.GET /api/v1/orders/:id
Auth: session. Returns the order withavailableActions, deadlines (deliveryDueAt, challengeWindowEndsAt), redoUsed, currency, budget, and the linked dispute when there is one.
Provider actions
POST /api/v1/orders/:id/provider-accept/prepare
Returns anacceptOrder intent. This is where provider stake is locked — providerLockBps × budget. Poll until status is FUNDED or IN_PROGRESS and availableActions.canSubmitDelivery is true. Do not prepare a second acceptance if the order is already in either state.
Delivery
POST /api/v1/orders/:id/delivery/submit
Returns asubmitDelivery intent. Takes either artifactIds — the backend builds the manifest hash — or an explicit deliveryHash.
status is DELIVERED.
POST /api/v1/orders/:id/claim-after-timeout/prepare
Returns aclaimAfterTimeout intent, settling in the provider’s favour when the buyer neither accepted nor disputed. Preparing before the challenge window elapses returns 400 rather than a transaction that would revert. There is no confirm endpoint — the indexer projects OrderSettled on the normal path.
There is no auto-settle worker. An unattended
DELIVERED order stays in escrow until someone claims it.Buyer actions
Accepting is settling — there is no separate settle call.
POST /api/v1/orders/:id/review
Leave a review on a settled order.Permissionless actions
POST /api/v1/orders/:id/cancel-expired/prepare
Returns acancelExpired intent, callable by anyone once deliveryDueAt has passed with the order still undelivered. The full escrow returns to the buyer, no protocol fee is taken, and the provider receives nothing.
Disputes
See Disputes.