curl -X POST https://api.totalis.trade/v1/quote-requests \
-H "X-API-Key: $TOTALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"legs": [
{"market_ticker": "KXBTC-26JUN01-T72500", "side": "yes", "venue": "kalshi"},
{"market_ticker": "KXBTC-26JUN01-T73000", "side": "no", "venue": "kalshi"}
],
"bet_amount": 25
}'
{
"data": {
"quote_request": {
"id": "1a6d1f06-9d4f-47cb-994b-3bdfbbef7e40",
"user_id": "did:privy:cm3abc...",
"version": 1,
"request_hash": "sha256:9f86d08...",
"book_seq": 0,
"status": "active",
"bet_amount": 25,
"implied_probability": 0,
"expires_at": "2026-06-01T18:45:30.000Z",
"legs": [
{
"id": "8ccf2c5d-3a61-4707-93f2-b6f0a0f0c0c6",
"event_ticker": "KXBTC-26JUN01",
"market_ticker": "KXBTC-26JUN01-T72500",
"side": "yes",
"venue": "kalshi"
},
{
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"event_ticker": "KXBTC-26JUN01",
"market_ticker": "KXBTC-26JUN01-T73000",
"side": "no",
"venue": "kalshi"
}
],
"input_legs": [
{"market_ticker": "KXBTC-26JUN01-T72500", "side": "yes", "venue": "kalshi"},
{"market_ticker": "KXBTC-26JUN01-T73000", "side": "no", "venue": "kalshi"}
]
}
}
}
Quote service
Create Quote Request
Create a new quote request for a multi-leg parlay.
POST
/
v1
/
quote-requests
curl -X POST https://api.totalis.trade/v1/quote-requests \
-H "X-API-Key: $TOTALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"legs": [
{"market_ticker": "KXBTC-26JUN01-T72500", "side": "yes", "venue": "kalshi"},
{"market_ticker": "KXBTC-26JUN01-T73000", "side": "no", "venue": "kalshi"}
],
"bet_amount": 25
}'
{
"data": {
"quote_request": {
"id": "1a6d1f06-9d4f-47cb-994b-3bdfbbef7e40",
"user_id": "did:privy:cm3abc...",
"version": 1,
"request_hash": "sha256:9f86d08...",
"book_seq": 0,
"status": "active",
"bet_amount": 25,
"implied_probability": 0,
"expires_at": "2026-06-01T18:45:30.000Z",
"legs": [
{
"id": "8ccf2c5d-3a61-4707-93f2-b6f0a0f0c0c6",
"event_ticker": "KXBTC-26JUN01",
"market_ticker": "KXBTC-26JUN01-T72500",
"side": "yes",
"venue": "kalshi"
},
{
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"event_ticker": "KXBTC-26JUN01",
"market_ticker": "KXBTC-26JUN01-T73000",
"side": "no",
"venue": "kalshi"
}
],
"input_legs": [
{"market_ticker": "KXBTC-26JUN01-T72500", "side": "yes", "venue": "kalshi"},
{"market_ticker": "KXBTC-26JUN01-T73000", "side": "no", "venue": "kalshi"}
]
}
}
}
Create a new live quote request. It’s immediately broadcast to all connected market makers, who begin submitting competitive prices in real time.
A quote request requires 2-5 legs and a USDC bet amount. Each leg specifies a market ticker, a side (
A Privy JWT (
yes or no), and optionally a venue.
Authentication
API key required. Pass your API key in theX-API-Key header. The key needs the trading:write scope.
X-API-Key: <your-api-key>
Authorization: Bearer <jwt>) is also accepted — see Authentication.
Request body
array
required
number
required
USDC bet amount. Must be between 1 and 100.
Response
object
Show data
Show data
object
The created quote request.
Show quote_request
Show quote_request
string
UUID of the quote request.
string
Your user ID.
integer
Request version, starts at
1.string
Hash of the current request parameters.
integer
Quote book sequence number, starts at
0.string
"active"number
The bet amount in USDC.
number
Combined implied probability of all legs.
string
ISO 8601 expiration timestamp.
array
Validated legs with enriched metadata.
array
The legs exactly as you submitted them.
Errors
| Status | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR | Invalid legs, side, venue, or bet amount. See details.issues for specifics. |
| 400 | VALIDATION_ERROR | Market validation failed (market not found, expired, or exclusion conflict). See details.leg_errors. |
| 401 | UNAUTHORIZED | Missing or invalid API key. |
curl -X POST https://api.totalis.trade/v1/quote-requests \
-H "X-API-Key: $TOTALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"legs": [
{"market_ticker": "KXBTC-26JUN01-T72500", "side": "yes", "venue": "kalshi"},
{"market_ticker": "KXBTC-26JUN01-T73000", "side": "no", "venue": "kalshi"}
],
"bet_amount": 25
}'
{
"data": {
"quote_request": {
"id": "1a6d1f06-9d4f-47cb-994b-3bdfbbef7e40",
"user_id": "did:privy:cm3abc...",
"version": 1,
"request_hash": "sha256:9f86d08...",
"book_seq": 0,
"status": "active",
"bet_amount": 25,
"implied_probability": 0,
"expires_at": "2026-06-01T18:45:30.000Z",
"legs": [
{
"id": "8ccf2c5d-3a61-4707-93f2-b6f0a0f0c0c6",
"event_ticker": "KXBTC-26JUN01",
"market_ticker": "KXBTC-26JUN01-T72500",
"side": "yes",
"venue": "kalshi"
},
{
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"event_ticker": "KXBTC-26JUN01",
"market_ticker": "KXBTC-26JUN01-T73000",
"side": "no",
"venue": "kalshi"
}
],
"input_legs": [
{"market_ticker": "KXBTC-26JUN01-T72500", "side": "yes", "venue": "kalshi"},
{"market_ticker": "KXBTC-26JUN01-T73000", "side": "no", "venue": "kalshi"}
]
}
}
}
Was this page helpful?
⌘I
