Endpoint
Authentication
Each market maker authenticates with a per-MM API key generated from the dashboard. The key maps to a stablemakerId. Authenticate either way:
- Query parameter:
wss://api.convallax.com/maker/v1/ws?apiKey=<your-key> authmessage: send{ "type": "auth", "apiKey": "<your-key>" }immediately after the socket opens.
makerId:
4001. If the relay is started without any keys, it runs in OPEN dev mode (anonymous makerId, accepts anyone). See the Authentication guide.
The post-trade WebSocket authenticates via
?apiKey= or the auth message. The SSE quote-request stream and REST quote endpoints authenticate via the X-API-Key header.Keep-Alive
The server sends a WebSocket ping every ~25 seconds; respond with a pong to maintain the connection (most libraries do this automatically). You may also send an application-level{ "type": "ping" }, to which the relay replies { "type": "pong", "timestamp": "..." }.
Server → Maker Messages
connected — Authentication confirmation
string
Always
"connected".number
Current protocol version. Currently
3.string
Your resolved maker identifier.
boolean
true once your API key is accepted.string
ISO 8601 server time at connection.
quote:accepted — You won; sign and confirm
Sent only to the winning maker when a taker commits. Sign the order with the wallet key for order.maker (using the provided domain and types) and POST the signature to POST /v1/mm/quotes/:quoteId/confirm before confirmationDeadline. The backend verifies that your signature recovers to order.maker.
string
Always
"quote:accepted".string
The server-generated
quoteId of your winning quote. Use it in the confirm endpoint path.string
The quote request you won.
object
The EIP-712
Order struct to sign: maker, seriesId, optionAmount, premiumAmount, makerSelling, taker, validUntil, nonce.object
EIP-712 domain:
name "ConvallaxRFQSettlement", version "1", chainId 80002, verifyingContract.object
EIP-712 type definitions for
Order.string
ISO 8601 deadline to POST your signature (controlled by
MAKER_CONFIRMATION_MS). Miss it and the backend falls back to the next-best maker.quote:confirmed — Your quote won and was confirmed
Sent after your confirmation signature is verified.
string
Always
"quote:confirmed".string
The quote request.
string
Your confirmed quote’s server-generated identifier.
quote:rejected — Another maker won
Sent when another maker’s quote won, or the request closed without your quote winning. Drop it from local state.
string
Always
"quote:rejected".string
The quote request.
string
Your rejected quote’s server-generated identifier.
string
Reason for rejection, e.g.
"another_quote_won".pong — Heartbeat reply
Sent in reply to a { "type": "ping" } message.
Maker → Server Messages
auth — Authenticate
Optional if you already passed ?apiKey= on the connection URL. Send immediately after the socket opens.
string
required
Must be
"auth".string
required
Your per-MM API key.
ping — Application keep-alive
pong message.
