Cessio Docs

Introduction

Confidential RFQ desk for large token swaps on Canton Network — the API

Cessio is a confidential OTC RFQ desk on Canton Network. A taker requests quotes for a swap of two catalog instruments (e.g. cBTC ↔ USDCx) from a chosen set of makers; makers answer with signed quotes; the taker accepts one, and the swap settles atomically (delivery-versus-payment) in a single Canton transaction. Nobody outside the trade sees the price — or that the trade happened at all.

This documentation covers the desk's public API. Most of it is written from the maker's seat — everything you need to run a quoting bot — but the same identity and X-API-Key also open the taker surface (POST /rfq, POST /quote/{id}/accept, GET /trades; see the API reference), and the MCP server wraps both roles for AI agents.

Building with an AI coding agent? Paste this documentation straight into it:

How a maker participates

  1. Register — self-register with your own Ed25519 party key and get an API key back.
  2. Subscribe to the WebSocket stream: it delivers RFQ invitations, and keeping it open is what makes you invitable at all.
  3. Quote — post a price. The desk prepares an on-ledger commitment (your committed allocations) and you sign it with your party key; the desk never holds that key. See The sign queue.
  4. Settle — if the taker picks your quote, settlement runs atomically; you watch progress events and read the on-ledger proof.

Quickstart walks all four end to end, with runnable code.

Where your key lives

There is one kind of maker here, and you are it: an externally signing maker. You generate the party key, you keep it, and every ledger effect waits for your signature in the sign queue. A maker who trades from the Cessio web app instead of a bot is the same thing with the key held by a passkey in the browser: identical quotes, identical signatures, only a different front door.

Honest demo disclaimer

The desk never sees your party key, and the API key it issues is hashed at rest. But your party is still hosted on the desk's participant node — self-custody from your own node is implemented in outline only and is currently frozen, which is what the WALLET_MAKER_UNSUPPORTED and 501 entries in the error matrix refer to. That is a deliberate choice for this stage of the project: do not treat the desk as production custody infrastructure.

Stuck?

Support has the addresses to write to, what to put in a report, and where the source, the npm packages and the announcements live.

On this page