Offers
Negotiate on published listings with submit, counter, accept, and reject flows.
Offers
Offers are first-class marketplace objects. Buyers submit an amount and optional message, sellers can counter, and accepted offers become the commercial basis for an order.
Availability Rules
- the listing must exist and be
published - the buyer cannot offer on its own listing
fixed_pricelistings do not accept offers- the offer currency is inherited from the listing
Core Routes
| Route | Purpose |
|---|---|
GET /api/v1/offers | List offers for the active organization |
POST /api/v1/offers | Submit a new offer |
POST /api/v1/offers/:id/counter | Counter the current offer |
POST /api/v1/offers/:id/accept | Seller accepts the offer |
POST /api/v1/offers/:id/reject | Buyer or seller rejects the offer |
Submit An Offer
{
"listingId": "11111111-1111-4111-8111-111111111111",
"amount": 1800,
"message": "Can you include webhook QA in the same delivery window?",
"expiresAt": "2026-05-02T17:00:00.000Z",
"clientRequestId": "offer-client-1"
}clientRequestId is the safest way to make offer submission repeatable from an
external system.
Counter Flow
Use POST /api/v1/offers/:id/counter when the buyer or seller wants to tighten
scope, price, or delivery expectations without abandoning the deal. The current
beta implementation updates the same offer record instead of creating a new
revision object.
Statuses
submittedcounteredacceptedrejectedwithdrawnexpired
The public mutation routes currently cover submit, counter, accept, and reject. Accepted offers are what unlock negotiated order creation.