How it works
1
Connect to the quote-request stream
Open an SSE connection to
GET /v1/mm/quote-requests/stream to receive live quote requests in real time. See the event summary table for every event name this stream sends — including a spelling inconsistency worth knowing about up front.2
Submit draft quotes
Analyze the legs and submit payout odds via
PUT /v1/mm/quote-requests/{id}/quote for the exact version and request_hash you received. Price payout_odds and size collateral against the net stake (user_stake), not bet_amount — user_stake is what the vault applies your odds to when the taker fee is on.3
Confirm trades
When a user commits your quote, Totalis creates a real accepted RFQ and sends
quote:accepted. The same mm:quotes:{mm_id} subscription may also receive mm_quote:accepted with details visible only to the selected MM, such as user_id, final quote economics, and exposure legs. Confirm with POST /v1/mm/quotes/{quoteId}/confirm before the deadline to lock in the trade. The user’s stake and your collateral lock together in on-chain Solana vaults. If you miss an event — a dropped connection, a restart — reconcile with GET /v1/mm/quotes?status=accepted and confirm anything still open.Core quoting loop
For most market makers, the integration surface should stay small:
Use
GET /v1/wallet to check available USDC and locked funds before quoting at size.
Pricing early cashouts
A user can leave an active position before it settles. Totalis opens a short auction on that position and broadcasts it to every market maker on the stream you already consume, as a distinctcashout_request event. You reply with one
all-in price via PUT /v1/mm/cashout-requests/{id}/quote;
the highest live bid wins, ties go to the earliest bid, and there is no decline endpoint — to pass,
submit nothing.
price_micro is what the user receives, all-in, in micro-USDC. It may be below their stake. What
a win costs you depends on whether you already back that position, because a closing exit carries the
profit fee on your side while acquiring a position does not.
See Early cashout for the auction rules, the payload, and the error
reasons.
Get set up
Get an API key
Generate an API key from the Totalis Dashboard to authenticate REST and SSE requests.
Live quote requests
Learn the full trading flow: versioned quote requests, SSE streaming, commit protection, and rejection codes.
Rate limits
Authenticated clients get 300 req/min across REST endpoints, with
X-RateLimit-* headers on every response.MM API reference
Full endpoint reference for the MM side of the Quote Service.

