Documentation Index Fetch the complete documentation index at: https://docs.55-tech.com/llms.txt
Use this file to discover all available pages before exploring further.
The MM engine places orders automatically based on bookmaker odds. The client API lets you monitor all trading activity, control your trading state (pause, resume, stop, start), and cancel orders. You do not place orders through this API — the engine does it for you.
Step 1: Check trading state
Confirm your API key works and see your engine’s current state:
curl -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/trading/status
Response:
{
"client" : "your-client" ,
"clientName" : "Your Client Name" ,
"oddsFormat" : "decimal" ,
"status" : "live" ,
"tradingActive" : true ,
"manualPaused" : false ,
"manualStopped" : false ,
"systemTradingBlocked" : false ,
"emergencyActive" : false ,
"systemStopped" : false ,
"softPaused" : false
}
Response fields:
Field Description statusSummary state: live, manual_paused, manual_stopped, soft_paused, system_stopped, emergency tradingActivetrue when the engine is actively posting ordersmanualPausedtrue if you paused via POST /trading/pausemanualStoppedtrue if you stopped via POST /trading/stopsystemTradingBlockedtrue if the system is globally paused or stopped (not client-specific)
Step 2: View exchange orders
Paginated list of orders the engine has placed on exchanges.
Query parameters:
Parameter Required Description fixtureIdNo Filter by fixture ID exchangeNo Filter by exchange (polymarket, kalshi, etc.) statusNo Filter by order status, comma-separated (e.g. PLACED,FILLED). Values: PENDING_PLACEMENT, PLACED, FILLED, FAILED, CANCELLED, EXPIRED fromDateNo Orders created on or after this date (YYYY-MM-DD) toDateNo Orders created on or before this date (YYYY-MM-DD) pageNo Page number, 1-indexed (default: 1) pageSizeNo Items per page, max 2000 (default: 50)
curl -H "X-API-Key: YOUR_API_KEY" \
"https://mmapi.55-tech.com/api/v1/orders?exchange=polymarket&status=FILLED"
Response:
{
"data" : [
{
"orderId" : 123 ,
"fixtureId" : "id1000000861624412" ,
"outcomeId" : 161 ,
"playerId" : 0 ,
"exchange" : "polymarket" ,
"account" : "0x1234...abcd" ,
"exchangeOrderId" : "0x1a2b3c..." ,
"exchangeOutcomeId" : "12345678" ,
"orderStatus" : "FILLED" ,
"matchedStatus" : "FULLY_MATCHED" ,
"orderCents" : 0.45 ,
"orderStake" : 100.0 ,
"matchedStake" : 100.0 ,
"back" : true ,
"side" : "buy" ,
"settlementStatus" : "UNDECIDED" ,
"settledAt" : null ,
"bookmakerOutcomePrice" : 1.808 ,
"bookmakerOutcomeLimit" : 5000.0 ,
"bookmakerOutcomeActive" : true ,
"createdAt" : "2026-02-15T10:30:00Z" ,
"matchedAt" : "2026-02-15T10:30:05Z" ,
"updatedAt" : "2026-02-15T10:30:05Z"
}
],
"total" : 1 ,
"page" : 1 ,
"pageSize" : 50 ,
"totalPages" : 1
}
Response fields (non-obvious only):
Field Description playerIdPlayer ID for player-prop markets, 0 for non-player-prop accountExchange account username used for this order orderStatusPENDING_PLACEMENT, PLACED, FILLED, FAILED, CANCELLED, EXPIREDmatchedStatusNOT_MATCHED, PARTIALLY_MATCHED, or FULLY_MATCHEDorderCentsOrder price in cents (0.01–0.99 for prediction markets) orderStakeAmount the engine intended to place matchedStakeAmount actually filled on the exchange backtrue = buy, false = sellsideComputed string form: buy or sell (derived from back) bookmakerOutcomePriceBookmaker decimal odds that triggered this order bookmakerOutcomeLimitBookmaker’s available limit at time of order bookmakerOutcomeActiveWhether the bookmaker side was active at order time settlementStatusUNDECIDED, WON, LOST, VOID, HALF_WON, HALF_LOSTsettledAtTimestamp when settlement was applied (null until settled) updatedAtLast status-change timestamp
For only currently-resting orders (no pagination), use GET /orders/open with optional fixtureId and exchange filters.
Step 3: View hedge bets
When an order fills on an exchange, the engine automatically places a hedge bet on the bookmaker. Each bet is linked to its order via orderId.
Query parameters:
Parameter Required Description orderIdNo Filter bets linked to a specific order bookmakerNo Filter by bookmaker statusNo Bet status, comma-separated (placed, pending, declined) fromDateNo Bets created on or after this date (YYYY-MM-DD) toDateNo Bets created on or before this date (YYYY-MM-DD) pageNo Page number (default: 1) pageSizeNo Items per page, max 2000 (default: 50)
curl -H "X-API-Key: YOUR_API_KEY" \
"https://mmapi.55-tech.com/api/v1/bets?orderId=123"
Response:
{
"data" : [
{
"betId" : 456 ,
"orderId" : 123 ,
"client" : "your-client" ,
"bookmaker" : "vertex" ,
"bookmakerBetId" : "789" ,
"placedPrice" : 1.808 ,
"placedStake" : 100.0 ,
"betStatus" : "placed" ,
"settlementStatus" : "undecided" ,
"placedAt" : "2026-02-15T10:30:08Z"
}
],
"total" : 1 ,
"page" : 1 ,
"pageSize" : 50 ,
"totalPages" : 1
}
Step 4: Check positions
Aggregated positions across all fixtures and exchanges.
Query parameters:
Parameter Required Description fixtureIdNo Filter by fixture ID exchangeNo Filter by exchange statusNo Comma-separated: open, matched, filled, cancelled, active (default: active) fromDateNo Filter from this date (YYYY-MM-DD) toDateNo Filter to this date (YYYY-MM-DD)
curl -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/positions
Response:
{
"positions" : [
{
"fixtureId" : "id1000000861624412" ,
"outcomeId" : 161 ,
"playerId" : 0 ,
"exchange" : "polymarket" ,
"orderCount" : 3 ,
"totalStake" : 100.0 ,
"matchedStake" : 100.0 ,
"openStake" : 0.0 ,
"avgPrice" : 0.45
}
],
"count" : 1
}
For a single rolled-up summary across every fixture, use GET /positions/summary.
Step 5: View profit & loss
Market-making P&L: spread captured between exchange fills and their bookmaker hedges.
Query parameters:
Parameter Required Description fromDateNo Filter orders created on or after this date (YYYY-MM-DD) toDateNo Filter orders created on or before this date (YYYY-MM-DD)
curl -H "X-API-Key: YOUR_API_KEY" \
"https://mmapi.55-tech.com/api/v1/pnl?fromDate=2026-01-29&toDate=2026-02-01"
Response:
{
"totalTurnover" : 98350.00 ,
"validTurnover" : 72415.30 ,
"netRealizedSpread" : 1482.55 ,
"nakedPnl" : -220.10 ,
"unhedgedStake" : 1622.78 ,
"unhedgedStakePct" : 1.65 ,
"avgHedgePriceDrift" : 0.0042 ,
"settledPairCount" : 1420 ,
"nakedSettledCount" : 12 ,
"fromDate" : "2026-01-29" ,
"toDate" : "2026-02-01"
}
Response fields:
Field Description totalTurnoverTotal stake hedged on the bookmaker side validTurnoverRisk-adjusted turnover. A 100 b e t a t 1.1 c o n t r i b u t e s l e s s t h a n 100 bet at 1.1 contributes less than 100 b e t a t 1.1 co n t r ib u t es l ess t han 100 at 3.0 netRealizedSpreadP&L from settled exchange + bookmaker pairs (both legs terminal) nakedPnlP&L from settled exchange fills that never got a successful hedge unhedgedStakeDollar amount of matched exchange stake with no successful hedge unhedgedStakePctPercentage of matched exchange stake with no successful hedge avgHedgePriceDriftStake-weighted average hedge slippage (decimal-odds points) settledPairCountNumber of fully-settled exchange + hedge pairs nakedSettledCountNumber of settled exchange fills counted in nakedPnl
Step 6: List accounts
View your exchange accounts (credentials are never exposed):
curl -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/accounts
{
"oddsFormat" : "decimal" ,
"accounts" : [
{
"username" : "0x1234...abcd" ,
"exchange" : "polymarket" ,
"active" : true ,
"maxOutcomeStake" : 1000.0 ,
"balance" : 50000.0 ,
"createdAt" : "2026-01-15T12:00:00Z"
}
],
"count" : 1
}
Step 7: Trading controls
Pause keeps existing orders on the exchange but stops new ones. Stop cancels all open orders immediately.
# Pause — keeps existing orders, stops new ones
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/trading/pause
# Resume after a pause
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/trading/resume
# Stop — cancels every open order
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/trading/stop
# Start after a stop
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/trading/start
Step 8: Cancel orders
Cancel a single order by ID, or every open order at once.
Query parameters for cancel-all:
Parameter Required Description exchangeNo Only cancel orders on a specific exchange fixtureIdNo Only cancel orders for a specific fixture
# Cancel everything
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/orders/cancel-all
# Cancel only Polymarket orders
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
"https://mmapi.55-tech.com/api/v1/orders/cancel-all?exchange=polymarket"
# Cancel a specific order
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
https://mmapi.55-tech.com/api/v1/orders/123/cancel
Next steps
WebSocket updates Get real-time order fills, hedge bets, and score updates.
API reference Explore all available endpoints.