UFC fight night, pushed to your socket.
Open one WebSocket, join a bout or the whole card, and receive round, clock, result, and live strike updates the moment Cito has them. No polling loop, and frames do not count against your REST quota.
- Included on Scale
- +$15/mo add-on on Pro
- Frames off your REST quota
{ "success": true, "stream": "ufc.live", "websocket": "/api/v1/ufc/live/ws", "redis_subscriber_ready": true, "recommendedPollSeconds": 30}Seamless Integration with our MCP Server
Give Claude, Cursor, and Grok the UFC card. One command writes the MCP config, agents call live and card tools instead of inventing fight IDs, and your key stays on your machine.
MCPInstall the Cito MCP serverBuilt for the live card
Everything a fight-night app needs to stay current without hammering REST: rooms, pushed updates, live stats, and a clean way back after a dropped connection.
Rooms for a bout or a card
Send one subscribe action with bout:{boutId} or event:{eventSlug} rooms, and leave rooms you no longer need.
Pushed ufc.live.update frames
Status, current round, round clock, both corners, and lagSeconds, in the same fields as the live REST endpoints.
Live strike stats
Significant strikes and takedowns per corner while the fight is on, and full round tables once it ends.
SSE for one-way clients
The same updates as a Server-Sent Events stream on /ufc/live/stream, filterable by boutId or eventSlug.
Reconnect without gaps
Re-subscribe after every reconnect and read /ufc/live/{boutId} once to catch up on anything you missed.
Keepalive built in
Send a ping action to hold the socket open through the quiet minutes between bouts.
Endpoints you can ship with
Start on the live group: open the socket, subscribe to rooms, and fall back to REST to resync.
Live data
Connect to wss://api.citoapi.com/api/v1/ufc/live/ws with your key, wait for the ready frame, then subscribe to bout or event rooms. SSE and polling stay available for clients that cannot hold a socket.
- GET
/api/v1/ufc/liveLive card overview: active bouts, clocks, lagSeconds, recommendedPollSeconds.
- GET
/api/v1/ufc/live/eventsFight-night events currently tracked by the live worker.
- GET
/api/v1/ufc/live/{boutId}One live bout: clock, fighters, and stats when available.
- GET
/api/v1/ufc/live/{boutId}/stateCompact live state for polling clients.
- GET
/api/v1/ufc/live/wsWebSocket push: subscribe to bout:{boutId} or event:{eventSlug} rooms.
- GET
/api/v1/ufc/live/streamSSE push feed, filterable by boutId and/or eventSlug.
- GET
/api/v1/ufc/live/healthLive worker health and heartbeat lag.
Events & cards
List cards, open one event by its slug (for example cryptocom-ufc-331), and pull every bout on it.
- GET
/api/v1/ufc/events?page=1&limit=50Paginated events with clean slugs and stable IDs.
- GET
/api/v1/ufc/events/upcomingUpcoming fight cards.
- GET
/api/v1/ufc/events/recentRecently completed events.
- GET
/api/v1/ufc/events/{eventIdOrSlug}Event detail by slug or stable data ID.
- GET
/api/v1/ufc/events/{eventIdOrSlug}/boutsAll bouts on one card, including corner fighters.
Bouts & results
Results for any fight: who won, how, when it ended, and the event context around it.
- GET
/api/v1/ufc/bouts?hasStats=truePaginated bout list with optional stat rows.
- GET
/api/v1/ufc/bouts/{boutId}Fighters, result, method, round, time, referee, weight class.
Fight stats
Significant strikes, takedowns, control time, and knockdowns as bout totals or per round, with head/body/leg and position splits.
- GET
/api/v1/ufc/bouts/{boutId}/statsBout-level fighter stat totals, or one round with ?round=1.
- GET
/api/v1/ufc/bouts/{boutId}/roundsRound-by-round fighter stat rows for one bout.
- GET
/api/v1/ufc/events/{eventIdOrSlug}/statsFight stats for a whole card, filterable by round.
Fighters
Build profile pages and matchup tools: record, bio, career stat aggregates, and every past fight.
- GET
/api/v1/ufc/search?q={name}Search fighters, events, bouts, and divisions.
- GET
/api/v1/ufc/fighters?page=1&limit=50Paginated fighter directory.
- GET
/api/v1/ufc/fighters/{slug}Profile, bio, record, rankings, and stat summary.
- GET
/api/v1/ufc/fighters/{slug}/statsStriking, grappling, accuracy, defense, and win-method stats.
- GET
/api/v1/ufc/fighters/{slug}/fightsFight history for one fighter.
Rankings
Algorithmic Meta rankings and media-panel rankings by division, as separate endpoints.
- GET
/api/v1/ufc/rankingsMeta UFC Rankings grouped by division.
- GET
/api/v1/ufc/rankings/meta/{division}Meta rankings for one division, such as lightweight.
- GET
/api/v1/ufc/rankings/mediaMedia-panel rankings grouped by division.
- GET
/api/v1/ufc/rankings/media/{division}Media-panel rankings for one division.
Odds
Card and fight odds grouped by market, bookmaker, and outcome, with sportsbook filters.
- GET
/api/v1/ufc/events/{eventIdOrSlug}/odds?bookmaker=allAll odds for one card, grouped by fight and market.
- GET
/api/v1/ufc/fights/{boutId}/odds?bookmaker=draftkingsOdds for one fight, filterable by sportsbook.
FAQs
Connecting, plans, quotas, and reconnects
Can't find what you're looking for? Contact our customer support team
More for fight night
The pages and guides developers pair with the WebSocket.
- UFC APIFighters, cards, results, rankings, and round-by-round stats in one API.
- UFC live APIWhat the live feed contains: clocks, bout state, and live stats.
- UFC fight card APIThe full card behind the rooms you subscribe to.
- UFC results APIWinners, methods, rounds, and times once each bout ends.
- WebSocket connection guideAuth, rooms, payloads, and reconnect code.
- Build a live fight dashboardA step-by-step real-time UFC dashboard.
Push UFC to live scoreboards
Test the REST shape on a free key, then add Live WebSockets on Pro or move to Scale when your app follows the card in real time.