Skip to main content
Market makers on Totalis stream incoming parlay quote requests via SSE, submit competitive prices, and earn the spread when users commit and confirm trades. There is no separate market maker role — any authenticated user with an API key can quote.

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_amountuser_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 distinct cashout_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.

Provide liquidity at scale

To provide liquidity on Totalis at scale, contact founders@totalis.trade to discuss onboarding, integration, and partnership terms.