UFC Live API
Fight-night clocks and bout state. Poll with REST, push with SSE, or use room-based WebSockets (+$15/mo on Pro, included in Scale).
https://api.citoapi.com/api/v1REST
Poll GET /ufc/live for the card, then GET /ufc/live/{boutId} for the fight. Use recommendedPollSeconds from the response (about 1–2s on fight night). Empty clocks stay empty — do not invent timers.
curl "https://api.citoapi.com/api/v1/ufc/live" \
-H "x-api-key: YOUR_API_KEY"{
"success": true,
"data": {
"liveBouts": [
{
"boutId": "ufc-12938",
"status": "live",
"currentRound": 3,
"currentTime": "2:27",
"red": { "fighterName": "Fighter A" },
"blue": { "fighterName": "Fighter B" },
"lagSeconds": 2,
"recommendedPollSeconds": 2,
"source": "ufc_fightmetric_cdn"
}
]
},
"meta": {
"stream": "/api/v1/ufc/live/stream",
"websocket": "/api/v1/ufc/live/ws"
}
}Single bout: GET /ufc/live/ufc-12938 (or bare FightMetric id). Fields include status, round clock, corners, liveStats when present, method/winner when final, and lag metadata.
SSE
HTTP push without WebSockets. Filter with boutId or eventSlug.
curl -N "https://api.citoapi.com/api/v1/ufc/live/stream?eventSlug=YOUR_EVENT" \
-H "x-api-key: YOUR_API_KEY" \
-H "Accept: text/event-stream"Billing. An open stream counts toward your monthly quota like polling: one request when it connects, then one for every 15 seconds it stays open. That is the same cost as polling /ufc/live every 15 seconds, so open the stream while a card is live and close it afterwards. When the quota runs out, the stream sends an error event with code RATE_LIMIT_EXCEEDED and closes. The first ready event carries these rules in billing.
Delay. Free and Starter plans receive every event 60 seconds late (ready.delay_seconds), the same delay as the polled live endpoints. Other plans are real-time.
WebSocket
wss://api.citoapi.com/api/v1/ufc/live/ws
Room subscriptions for multi-bout boards. Auth with the same API key as REST. Frames do not count against request quota. Add-on is +$15/month on Pro, included in Scale.
- Rooms:
bout:{id},event:{slug} - Events:
ready,subscribed,ufc.live.update,ping
Endpoints
GET/api/v1/ufc/liveLive OverviewActive card: live bouts, events, lagSeconds, recommendedPollSeconds.
/api/v1/ufc/livecurl "https://api.citoapi.com/api/v1/ufc/live" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/live/eventsLive EventsFight-night events tracked by the live worker.
/api/v1/ufc/live/eventscurl "https://api.citoapi.com/api/v1/ufc/live/events" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/live/events/{slug}Live Event DetailOne event + bout tracking.
/api/v1/ufc/live/events/{slug}curl "https://api.citoapi.com/api/v1/ufc/live/events/{slug}" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/events/{slug}/liveLive MatchesAlias of /ufc/live/events/{slug}.
/api/v1/ufc/events/{slug}/livecurl "https://api.citoapi.com/api/v1/ufc/events/{slug}/live" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/live/{boutId}Live BoutOne bout: clock, fighters, liveStats, lag metadata.
/api/v1/ufc/live/{boutId}curl "https://api.citoapi.com/api/v1/ufc/live/{boutId}" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/live/{boutId}/stateLive Bout StateCompact live state (Redis preferred).
/api/v1/ufc/live/{boutId}/statecurl "https://api.citoapi.com/api/v1/ufc/live/{boutId}/state" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/live/{boutId}/snapshotsLive SnapshotsHash-diffed snapshots for one bout.
/api/v1/ufc/live/{boutId}/snapshotscurl "https://api.citoapi.com/api/v1/ufc/live/{boutId}/snapshots" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/live/healthLive HealthWorker health and heartbeat lag.
/api/v1/ufc/live/healthcurl "https://api.citoapi.com/api/v1/ufc/live/health" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/live/streamLive SSE StreamSSE push. Filter with boutId and/or eventSlug. Counts 1 request at connect + 1 per 15s open.
/api/v1/ufc/live/streamcurl "https://api.citoapi.com/api/v1/ufc/live/stream" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/ufc/live/{boutId}/socketLive Transport ContractTransport contract (SSE + WebSocket).
/api/v1/ufc/live/{boutId}/socketcurl "https://api.citoapi.com/api/v1/ufc/live/{boutId}/socket" \
-H "x-api-key: YOUR_API_KEY"