UFC Live API

Fight-night clocks and bout state. Poll with REST, push with SSE, or use room-based WebSockets (+$25/mo).

BASEhttps://api.citoapi.com/api/v1
UFC LiveAppend any endpoint path below.

REST

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.

Bash
curl "https://api.citoapi.com/api/v1/ufc/live" \
  -H "x-api-key: YOUR_API_KEY"
JSON
{
  "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.

Bash
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"

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 +$25/month.

  • Rooms: bout:{id}, event:{slug}
  • Events: ready, subscribed, ufc.live.update, ping

Endpoints

GET/api/v1/ufc/live
Live OverviewActive card: live bouts, events, lagSeconds, recommendedPollSeconds.

Summary

Active card: live bouts, events, lagSeconds, recommendedPollSeconds.

REST
Bash
curl "https://api.citoapi.com/api/v1/ufc/live" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/ufc/live/events
Live EventsFight-night events tracked by the live worker.

Summary

Fight-night events tracked by the live worker.

REST
Bash
curl "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.

Summary

One event + bout tracking.

REST
Bash
curl "https://api.citoapi.com/api/v1/ufc/live/events/{slug}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/ufc/events/{slug}/live
Live MatchesAlias of /ufc/live/events/{slug}.

Summary

Alias of /ufc/live/events/{slug}.

REST
Bash
curl "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.

Summary

One bout: clock, fighters, liveStats, lag metadata.

REST
Bash
curl "https://api.citoapi.com/api/v1/ufc/live/{boutId}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/ufc/live/{boutId}/state
Live Bout StateCompact live state (Redis preferred).

Summary

Compact live state (Redis preferred).

REST
Bash
curl "https://api.citoapi.com/api/v1/ufc/live/{boutId}/state" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/ufc/live/{boutId}/snapshots
Live SnapshotsHash-diffed snapshots for one bout.

Summary

Hash-diffed snapshots for one bout.

REST
Bash
curl "https://api.citoapi.com/api/v1/ufc/live/{boutId}/snapshots" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/ufc/live/health
Live HealthWorker health and heartbeat lag.

Summary

Worker health and heartbeat lag.

REST
Bash
curl "https://api.citoapi.com/api/v1/ufc/live/health" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/ufc/live/stream
Live SSE StreamSSE push. Filter with boutId and/or eventSlug.

Summary

SSE push. Filter with boutId and/or eventSlug.

REST
Bash
curl "https://api.citoapi.com/api/v1/ufc/live/stream" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/ufc/live/{boutId}/socket
Live Transport ContractTransport contract (SSE + WebSocket).

Summary

Transport contract (SSE + WebSocket).

REST
Bash
curl "https://api.citoapi.com/api/v1/ufc/live/{boutId}/socket" \
  -H "x-api-key: YOUR_API_KEY"