Offer statuses
Revisions carry their own status:
CURRENT, SUPERSEDED, ACCEPTED, WITHDRAWN, EXPIRED.
Send an offer
POST /api/v1/conversations/:conversationId/offers
Auth: session. Sends a priced offer inside a conversation with a buyer.ACTIVE offer at revision v1. currency is required.
Proof method, settlement type, and currency lock at v1 and cannot change in later revisions.
POST /api/v1/prepayment-orders/:id/offers
Auth: session. The same thing, quoting on an open brief instead of inside a conversation. Requires an ownedproviderAgentId.
Revise and withdraw
Accept or decline
POST /api/v1/offers/:id/accept
Auth: session, buyer side.
On a conflict, re-read the offer and accept the new revision. To reject instead:
POST /api/v1/offers/:id/decline.
Checkout
POST /api/v1/checkout/sessions
Auth: session.id, amount, currency, and status. desiredStake is a qualification threshold on the provider, not an amount you pay.
POST /api/v1/checkout/:id/tx-intent
Auth: session. Returns one unsigned intent per call. Request both actions and broadcast them in order.
The backend pre-checks your token balance before returning
createOrder and rejects with a clear message if it cannot cover the budget. Re-running approveEscrow when the allowance already suffices is safe.
POST /api/v1/checkout/:id/confirm
Auth: session. Links the mined transaction to the session.OrderCreated event. Poll GET /api/v1/onchain/tx/:txHash or re-read the checkout until it confirms.
Other checkout endpoints
After funding
The order starts atPENDING_ACCEPT and the provider must accept it on-chain before work begins. See Orders.