Skip to main content
PUT
Submit a quote for an active quote request. If you already have an active quote for the same request version, it is replaced atomically. Only one active quote per market maker per request version is allowed. When the user updates their request (changing legs or bet amount), the version and request_hash change, and your existing quote is automatically invalidated. Listen for quote_request:updated events on the SSE stream to detect version changes and re-price.
Moving to a new version needs no withdraw. A quote is scoped to a single (request, version) pair. When the request advances to a new version, your prior version quote is invalidated automatically — it leaves the book at once, can no longer be accepted, and never blocks a new submission. To quote the new version, PUT again with the new request_version and request_hash from the latest quote_request:updated event. You don’t need to withdraw the old quote first.A 409 with reason: version_mismatch is not caused by an outstanding prior quote. It means the request_version and/or request_hash in your body no longer match the live request — you priced a stale version, or the slip changed again while you were pricing. Re-read the latest stream event and submit with both current values (they must both match).

Authentication

API key required. Pass your market maker API key in the X-API-Key header.

Path parameters

string
required
The quote request ID (UUID).

Request body

integer
required
The version of the quote request you priced. Must match the current version from the SSE stream.
string
required
The request_hash from the quote request event. Prevents pricing against stale data.
number
required
Payout multiplier on the user’s bet amount. Between 1.0001 and 1000. The server derives all cost fields (user_cost, total_payout, mm_cost) from this value and the request’s bet_amount.
integer
How long this quote is valid, in milliseconds. Range: 5000-60000. Default: 15000.

Response

Returns 201 Created for a new quote or 200 OK when replacing an existing quote.
object

Conflict reasons

When a submit is rejected with 409 Conflict, the error.details.reason field explains why:

Errors