DocsRoom protocol and payloads

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
GET /ufc/live/stream200 OK
$ curl "https://api.citoapi.com/api/v1/ufc/live/stream" \ -H "x-api-key: $CITO_API_KEY"
{  "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 server
Claude
Cursor
OpenAI
Python
Cito API
Next.js
Discord
Slack
GitHub

Built 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.

View docs
  • GET/api/v1/ufc/live

    Live card overview: active bouts, clocks, lagSeconds, recommendedPollSeconds.

  • GET/api/v1/ufc/live/events

    Fight-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}/state

    Compact live state for polling clients.

  • GET/api/v1/ufc/live/ws

    WebSocket push: subscribe to bout:{boutId} or event:{eventSlug} rooms.

  • GET/api/v1/ufc/live/stream

    SSE push feed, filterable by boutId and/or eventSlug.

  • GET/api/v1/ufc/live/health

    Live worker health and heartbeat lag.

FAQs

Connecting, plans, quotas, and reconnects

Can't find what you're looking for? Contact our customer support team

See WebSocket plans

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.