Cessio Docs
Guides

Quoting

Submitting, replacing and revoking quotes — and the invariants that 4xx you

Submit

curl -X POST -H "X-API-Key: $API_KEY" -H "content-type: application/json" \
  -d '{"rfqId": "…", "price": "97300.0"}' \
  $API_URL/maker/quotes
  • price — the amount of the pair's quote instrument per 1 unit of the base instrument, positive decimal string. Remember direction is the taker's side: on a SELL RFQ the taker sells base, so you are buying — quote below your reference; on BUY you are selling — quote above.
  • validUntiloptional. Omitted, the desk uses its own quote lifetime, capped at the RFQ deadline. Send it when your pricing has a real window; an explicit value past the deadline is a 409, since silently shortening a commitment you stated on purpose would be worse than the error.

The 200 response is your QuoteDto plus actions — but the quote is not live yet. It arrives unanchored: sign both hashes in actions and submit them in one POST /tx/execute (the sign queue), then wait for quote.anchored before the taker can accept it. Budget one ledger round-trip of latency (~1–2 s on DevNet) for that.

What can go wrong

StatusWhy
400Body failed validation (bad decimal, malformed timestamp)
403Your party is not invited to this RFQ
404RFQ unknown or already closed
409Deadline passed · an explicit validUntil > deadline · quote already settling · WALLET_MAKER_UNSUPPORTED

Replace

Posting a second quote on the same RFQ replaces the first: the old quote turns revoked (you'll see quote.status) and its proposal pair is cancelled on the ledger. There is no partial update — send the full body.

Revoke

curl -X DELETE -H "X-API-Key: $API_KEY" $API_URL/maker/quotes/$QUOTE_ID

204 on success. 403 if the quote is not yours, 404 if it is gone, and 409 once the quote is accepted and settling — from that point your commitment is locked in.

On this page