Skip to main content
POST
/
quote-requests
/
{id}
/
commit
Commit to Quote
curl --request POST \
  --url https://api.convallax.com/quote-requests/{id}/commit \
  --header 'Content-Type: application/json' \
  --data '
{
  "wallet": "0xTrader0000000000000000000000000000000000"
}
'
{
  "success": true,
  "message": "Order signed by maker — call fill() on-chain",
  "mode": "onchain",
  "quote": {
    "maker_id": "mm-alpha",
    "quote_id": "8f3c2b1a-1d2e-4c3b-9a8f-6e5d4c3b2a1f",
    "maker": "0x1234000000000000000000000000000000abcd",
    "side": "buy",
    "price": 0.12,
    "size": 10,
    "expires_in_ms": 5000
  },
  "execution": {
    "execution_id": "e1f2a3b4-5c6d-7e8f-9a0b-1c2d3e4f5a6b",
    "request_id": "req-789",
    "quote_id": "8f3c2b1a-1d2e-4c3b-9a8f-6e5d4c3b2a1f",
    "maker_id": "mm-alpha",
    "executed_at": "2026-06-15T12:00:01.234Z"
  },
  "onchain": {
    "settlementAddress": "0x721C428fb5a5468698C295dD4DC2D7bE06479f21",
    "coreAddress": "0x5bcE81D59b755628700D94166FE98cb17014dE3f",
    "order": {
      "maker": "0x1234000000000000000000000000000000abcd",
      "seriesId": "98765432109876543210",
      "optionAmount": "10000000",
      "premiumAmount": "1200000",
      "makerSelling": true,
      "taker": "0xTrader0000000000000000000000000000000000",
      "validUntil": 1717189320,
      "nonce": 1717189200042
    },
    "makerSignature": "0xabcdef...",
    "domain": {
      "name": "ConvallaxRFQSettlement",
      "version": "1",
      "chainId": 80002,
      "verifyingContract": "0x721C428fb5a5468698C295dD4DC2D7bE06479f21"
    },
    "chainId": 80002,
    "takerApproval": {
      "spender": "0x721C428fb5a5468698C295dD4DC2D7bE06479f21",
      "amount": "1200000",
      "reason": "premium"
    }
  }
}
Commit to the best available quote on an open quote request. The relay selects the best valid quote, resolves the option seriesId, builds the exact EIP-712 Order, and emits a quote:accepted message to the winning market maker over the post-trade WebSocket, starting a confirmation deadline (MAKER_CONFIRMATION_MS, default 10s). Market makers are independent — the backend does not post collateral, set approvals, or sign on their behalf. The winning maker signs the order with its own wallet key and submits the signature over REST (POST /v1/mm/quotes/{quoteId}/confirm), which the backend verifies recovers to order.maker. The successful response contains everything the taker needs to call fill() on ConvallaxRFQSettlement for atomic mint-on-fill settlement, including the single USDC approval the taker must make first (onchain.takerApproval).
Confirmation handshake. This request blocks until a maker confirms. If the winning maker misses its deadline, the backend falls back to the next-best maker’s quote. If no maker confirms in time, the request stays open and the call returns HTTP 503 so the taker can retry.
If the on-chain environment is not configured, the relay returns a simulated execution response (mode: "simulated") with no onchain block.
Before calling fill(), the taker makes exactly one USDC approval as described by onchain.takerApproval: approve takerApproval.spender for takerApproval.amount. For a long fill this is the settlement contract (premium); for a short fill it is the core contract (collateral). The maker has already pre-approved its own side.

Path Parameters

id
string
required

The requestId returned by Create Quote Request.

Example:

"req-789"

Body

application/json
wallet
string
required

Taker wallet (checksummed). Set as taker in the order — only this wallet can call fill().

Example:

"0xTrader0000000000000000000000000000000000"

Response

Order signed by the winning maker (or simulated execution)

success
boolean
message
string
Example:

"Order signed by maker — call fill() on-chain"

mode
enum<string>
Available options:
onchain,
simulated
Example:

"onchain"

quote
object

A market maker quote as exposed to takers.

execution
object
onchain
object

Everything needed for on-chain fill(). Present only when mode is "onchain".