# UFC webhooks

Signed POST requests to your URL when UFC events happen. Signing, retries, pauses and catch-up are the same for every sport: https://citoapi.com/docs/webhooks.md

Live catalog for this sport, with current status and volume: https://api.citoapi.com/api/v1/webhooks/events?game=ufc
Human docs: https://citoapi.com/docs/api/ufc/webhooks/
Status below was measured at 2026-11-08T20:30:57.835Z. Trust the live catalog over this file.

## Which events to subscribe to

- Live scoreboard: ufc.fight.started, ufc.round.completed, ufc.fight.completed. The opening bell, each round, and the result.
- Settle bets: ufc.fight.completed, ufc.fight.stats_ready. Result, method and round, then the official stats for stat markets.
- Results only: ufc.fight.completed, ufc.event.completed. Each fight result, and the whole card when it is done.
- Alerts: ufc.fight.started, ufc.fight.completed, ufc.card.updated. Opening bell, result and card changes. Add a fighter filter to follow someone.

## Filters

- `eventSlug`: Only this card: slug or id from /ufc/events.
- `boutId`: Only this fight: id from /ufc/events/{slug}/bouts.
- `fighterSlug`: Only fights with this fighter. On card events, cards or changes that include them.
- `series`: UFC, Contender Series or Road to UFC.

## Events

### ufc.event.started

A UFC card has started, with the public card in data.bouts.

- When: At the opening bell of the first fight. Once per card.
- Status: None recorded yet. You can subscribe, but none has been recorded. Do not rely on it.
- Frequency: 1 per card
- Plan: Pro and Scale
- Filters: eventSlug, eventId, boutId, fighterSlug, fighterId, series
- Use it to: Open your fight-night view with the card in data.bouts.
- Notes: data.boutId is the id on /ufc/events/{slug}/bouts and /ufc/bouts/{id}; data.eventSlug and data.fighters[].fighterSlug are the /ufc ids. data.dedupeKey never changes for one event: use it as your idempotency key. UFC includes DWCS and Road to UFC (data.series).

| Field | Type | Meaning |
|---|---|---|
| `dedupeKey` |  | Deterministic identity of this event. Same value if it is ever delivered twice: use it as your idempotency key. |
| `occurredAt` |  | When Cito recorded this, UTC. |
| `eventId` |  | The card id from /ufc/events. |
| `eventSlug` |  | The card slug, accepted by every /ufc/events/{slug} route. |
| `eventDataId` |  | The card dataId from /ufc/events. |
| `eventTitle` |  | The card title. |
| `series` |  | ufc, dwcs or road-to-ufc. |
| `eventStartsAt` |  | The card start time on /ufc/events. |
| `venue` |  | Venue. |
| `city` |  | City. |
| `country` |  | Country. |
| `startedAt` |  | Estimated time of the first bell. |
| `firstBoutId` |  | The fight that opened the card. |
| `bouts` |  | The public card at that moment. |

```json
{
  "event": "ufc.event.started",
  "id": "3f6f0a4e-2c1d-5b7a-9e8f-1a2b3c4d5e6f",
  "timestamp": "2026-11-07T22:10:46.813Z",
  "event_type": "ufc.event.started",
  "match_id": null,
  "previous_state": null,
  "data": {
    "dedupeKey": "ufc.event.started|ufc-fight-night-november-07-2026",
    "occurredAt": "2026-11-07T22:10:45.313Z",
    "eventId": "0a5a83bd-c925-4cb4-bd05-293e6002fb67",
    "eventSlug": "ufc-fight-night-november-07-2026",
    "eventDataId": "110404b505fb562c",
    "eventTitle": "UFC Fight Night: Cortes Acosta vs Walker",
    "series": "ufc",
    "eventStartsAt": "2026-11-07T22:00:00.000Z",
    "venue": "Meta APEX",
    "city": "Las Vegas",
    "country": "United States",
    "startedAt": "2026-11-07T22:06:29.313Z",
    "firstBoutId": "fight-night-november-07-2026-jonny-parsons-jose-henrique",
    "bouts": [
      {
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
        "cardSection": "Main Card",
        "cardPosition": "Main Card 1",
        "weightClass": "Heavyweight",
        "fighters": [
          {
            "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
            "fighterSlug": "johnny-walker",
            "fighterName": "Johnny Walker",
            "corner": "blue"
          },
          {
            "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
            "fighterSlug": "waldo-cortes-acosta",
            "fighterName": "Waldo Cortes Acosta",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-tatiana-suarez-virna-jandiroba",
        "cardSection": "Main Card",
        "cardPosition": "Main Card 2",
        "weightClass": "Women's Strawweight",
        "fighters": [
          {
            "fighterId": "fde19553-e551-4841-a91b-bc2037335aed",
            "fighterSlug": "virna-jandiroba",
            "fighterName": "Virna Jandiroba",
            "corner": "blue"
          },
          {
            "fighterId": "8b642ed7-0509-4526-864a-29d5c446b0db",
            "fighterSlug": "tatiana-suarez",
            "fighterName": "Tatiana Suarez",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-davey-grant-elijah-smith",
        "cardSection": "Main Card",
        "cardPosition": "Main Card 3",
        "weightClass": "Bantamweight",
        "fighters": [
          {
            "fighterId": "e14b1be9-26b4-4878-a7b5-977964f7e0fa",
            "fighterSlug": "elijah-smith",
            "fighterName": "Elijah Smith",
            "corner": "blue"
          },
          {
            "fighterId": "229d15be-94f6-45be-acf9-0cc02eb21044",
            "fighterSlug": "davey-grant",
            "fighterName": "Davey Grant",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-billy-elekana-lucas-fernando",
        "cardSection": "Main Card",
        "cardPosition": "Main Card 4",
        "weightClass": "Light Heavyweight",
        "fighters": [
          {
            "fighterId": "f39ca6c4-d608-41e0-939e-5f581df28768",
            "fighterSlug": "lucas-fernando",
            "fighterName": "Lucas Fernando",
            "corner": "blue"
          },
          {
            "fighterId": "2a2cc58d-aa2f-4f77-9c81-43a9d6d60b99",
            "fighterSlug": "billy-elekana",
            "fighterName": "Billy Elekana",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-nina-milosevic-priscila-cachoeira",
        "cardSection": "Main Card",
        "cardPosition": "Main Card 5",
        "weightClass": "Women's Bantamweight",
        "fighters": [
          {
            "fighterId": "e4dc8d85-7f37-4d0f-8b7c-f00b913324c8",
            "fighterSlug": "nina-milosevic",
            "fighterName": "Nina Milošević",
            "corner": "blue"
          },
          {
            "fighterId": "2e2abb2f-7f09-4b63-87ba-44797bc47578",
            "fighterSlug": "priscila-cachoeira",
            "fighterName": "Priscila Cachoeira",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-marcos-degli-mitch-raposo",
        "cardSection": "Main Card",
        "cardPosition": "Main Card 6",
        "weightClass": "Flyweight",
        "fighters": [
          {
            "fighterId": "27a49aff-0106-4c6a-ba10-528ffc4f3ee6",
            "fighterSlug": "marcos-degli",
            "fighterName": "Marcos Degli",
            "corner": "blue"
          },
          {
            "fighterId": "b0447906-54cf-4daa-9b0d-87a9b929e4ed",
            "fighterSlug": "mitch-raposo",
            "fighterName": "Mitch Raposo",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-keiichiro-nakamura-0-ollie-schmid",
        "cardSection": "Prelims",
        "cardPosition": "Prelims 1",
        "weightClass": "Featherweight",
        "fighters": [
          {
            "fighterId": "c8f1e9d1-1ab8-434f-b882-7a32f437adfa",
            "fighterSlug": "ollie-schmid",
            "fighterName": "Ollie Schmid",
            "corner": "blue"
          },
          {
            "fighterId": "f003129d-4089-49ac-8a1f-af7dac11c7ea",
            "fighterSlug": "keiichiro-nakamura",
            "fighterName": "Keiichiro Nakamura",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-gabriel-lorenco-thomas-petersen",
        "cardSection": "Prelims",
        "cardPosition": "Prelims 2",
        "weightClass": "Heavyweight",
        "fighters": [
          {
            "fighterId": "824cbd73-34be-4587-86cc-82fb49efcace",
            "fighterSlug": "thomas-petersen",
            "fighterName": "Thomas Petersen",
            "corner": "blue"
          },
          {
            "fighterId": "79e1f6d2-4cfd-4d37-9277-8dd2ab83835f",
            "fighterSlug": "gabriel-lorenco",
            "fighterName": "Gabriel Lorenço",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-gabriella-fernandes-karine-silva",
        "cardSection": "Prelims",
        "cardPosition": "Prelims 3",
        "weightClass": "Women's Flyweight",
        "fighters": [
          {
            "fighterId": "7e20c783-25a3-41ff-9daf-3bf69e0fd96e",
            "fighterSlug": "gabriella-fernandes",
            "fighterName": "Gabriella Fernandes",
            "corner": "blue"
          },
          {
            "fighterId": "971c5892-bf16-4106-bd0c-4ac1189a8358",
            "fighterSlug": "karine-silva",
            "fighterName": "Karine Silva",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-jose-delano-murtazali-magomedov",
        "cardSection": "Prelims",
        "cardPosition": "Prelims 4",
        "weightClass": "Featherweight",
        "fighters": [
          {
            "fighterId": "57414bcb-54af-4efd-8029-cee43d38f303",
            "fighterSlug": "murtazali-magomedov",
            "fighterName": "Murtazali Magomedov",
            "corner": "blue"
          },
          {
            "fighterId": "84760727-5bb0-4146-8d8a-75ed7fc282d6",
            "fighterSlug": "jose-delano",
            "fighterName": "Jose Delano",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-austin-bashi-carlos-calderon",
        "cardSection": "Prelims",
        "cardPosition": "Prelims 5",
        "weightClass": "Featherweight",
        "fighters": [
          {
            "fighterId": "242a9091-9cd6-47da-93d3-6cd3d1482071",
            "fighterSlug": "carlos-calderon",
            "fighterName": "Carlos Calderon",
            "corner": "blue"
          },
          {
            "fighterId": "997d121e-6d0b-4916-a8b7-2c69b359b41a",
            "fighterSlug": "austin-bashi",
            "fighterName": "Austin Bashi",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-andre-petroski-mantas-kondratavicius",
        "cardSection": "Prelims",
        "cardPosition": "Prelims 6",
        "weightClass": "Middleweight",
        "fighters": [
          {
            "fighterId": "3c4fbc90-5087-454a-80a0-82a53f381455",
            "fighterSlug": "andre-petroski",
            "fighterName": "Andre Petroski",
            "corner": "blue"
          },
          {
            "fighterId": "29d9fb0c-e709-4ac8-8e94-a9e31b854575",
            "fighterSlug": "mantas-kondratavicius",
            "fighterName": "Mantas Kondratavičius",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-seokhyeon-ko-wellington-turman",
        "cardSection": "Prelims",
        "cardPosition": "Prelims 7",
        "weightClass": "Welterweight",
        "fighters": [
          {
            "fighterId": "33ec8329-09eb-4946-898f-1e0942efc5d8",
            "fighterSlug": "wellington-turman",
            "fighterName": "Wellington Turman",
            "corner": "blue"
          },
          {
            "fighterId": "370a18c8-977f-422e-a844-5d8ed65f6f50",
            "fighterSlug": "seokhyeon-ko",
            "fighterName": "Seokhyeon Ko",
            "corner": "red"
          }
        ]
      },
      {
        "boutId": "fight-night-november-07-2026-jonny-parsons-jose-henrique",
        "cardSection": "Prelims",
        "cardPosition": "Prelims 8",
        "weightClass": "Welterweight",
        "fighters": [
          {
            "fighterId": "4919764f-b74e-40ba-b57b-e3eeef512bdf",
            "fighterSlug": "jose-henrique",
            "fighterName": "José Souza",
            "corner": "blue"
          },
          {
            "fighterId": "8b348104-718f-41c5-9314-3f11096a09a7",
            "fighterSlug": "jonny-parsons",
            "fighterName": "Jonny Parsons",
            "corner": "red"
          }
        ]
      }
    ]
  }
}
```

### ufc.fight.started

A fight has started: data.startedAt is the estimated bell.

- When: At the opening bell, not the walkouts. Once per fight.
- Status: None recorded yet. You can subscribe, but none has been recorded. Do not rely on it.
- Frequency: 1 per fight, 5 to 14 per card
- Plan: Pro and Scale
- Filters: eventSlug, eventId, boutId, fighterSlug, fighterId, series
- Use it to: Flip a fight to live at the opening bell.
- Notes: data.boutId is the id on /ufc/events/{slug}/bouts and /ufc/bouts/{id}; data.eventSlug and data.fighters[].fighterSlug are the /ufc ids. data.dedupeKey never changes for one event: use it as your idempotency key. UFC includes DWCS and Road to UFC (data.series).

| Field | Type | Meaning |
|---|---|---|
| `dedupeKey` |  | Deterministic identity of this event. Same value if it is ever delivered twice: use it as your idempotency key. |
| `occurredAt` |  | When Cito recorded this, UTC. |
| `eventId` |  | The card id from /ufc/events. |
| `eventSlug` |  | The card slug, accepted by every /ufc/events/{slug} route. |
| `eventDataId` |  | The card dataId from /ufc/events. |
| `eventTitle` |  | The card title. |
| `series` |  | ufc, dwcs or road-to-ufc. |
| `eventStartsAt` |  | The card start time on /ufc/events. |
| `boutId` |  | The fight id: same value as id on /ufc/events/{slug}/bouts, accepted by /ufc/bouts/{id}. |
| `matchId` |  | Same as boutId (the envelope match_id). |
| `liveBoutId` |  | The id on /ufc/live, the stream and socket rooms. |
| `dataId` |  | The fight dataId, also accepted by /ufc/bouts/{id}. |
| `cardSection` |  | Main Card, Prelims or Early Prelims. |
| `cardPosition` |  | Slot on the card, for example "Main Card 1". |
| `weightClass` |  | The division of the fight. |
| `titleBout` |  | True for a title fight. |
| `fighters` |  | Both fighters: fighterId, fighterSlug, fighterName, corner. Same ids and corners as /ufc/bouts/{id}. |
| `startedAt` |  | Estimated time of the bell (first clock reading minus its elapsed time). |
| `round` |  | Always 1. |
| `clock` |  | Elapsed time on the clock when first seen, usually under 15 seconds. |

```json
{
  "event": "ufc.fight.started",
  "id": "3f6f0a4e-2c1d-5b7a-9e8f-1a2b3c4d5e6f",
  "timestamp": "2026-11-08T03:47:59.660Z",
  "event_type": "ufc.fight.started",
  "match_id": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
  "previous_state": null,
  "data": {
    "dedupeKey": "ufc.fight.started|fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "occurredAt": "2026-11-08T03:47:58.160Z",
    "eventId": "0a5a83bd-c925-4cb4-bd05-293e6002fb67",
    "eventSlug": "ufc-fight-night-november-07-2026",
    "eventDataId": "110404b505fb562c",
    "eventTitle": "UFC Fight Night: Cortes Acosta vs Walker",
    "series": "ufc",
    "eventStartsAt": "2026-11-07T22:00:00.000Z",
    "matchId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "liveBoutId": "ufc-fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "dataId": "13238",
    "cardSection": "Main Card",
    "cardPosition": "Main Card 1",
    "weightClass": "Heavyweight",
    "titleBout": false,
    "fighters": [
      {
        "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "corner": "blue"
      },
      {
        "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "corner": "red"
      }
    ],
    "startedAt": "2026-11-08T03:47:52.160Z",
    "round": 1,
    "clock": "0:06"
  }
}
```

### ufc.round.started

A round has started: data.round.

- When: When the clock of that round is first seen. Once per round.
- Status: None recorded yet. You can subscribe, but none has been recorded. Do not rely on it.
- Frequency: 1 to 5 per fight
- Plan: Pro and Scale (real time)
- Filters: eventSlug, eventId, boutId, fighterSlug, fighterId, series
- Use it to: Show the current round.
- Notes: data.boutId is the id on /ufc/events/{slug}/bouts and /ufc/bouts/{id}; data.eventSlug and data.fighters[].fighterSlug are the /ufc ids. data.dedupeKey never changes for one event: use it as your idempotency key. UFC includes DWCS and Road to UFC (data.series).

| Field | Type | Meaning |
|---|---|---|
| `dedupeKey` |  | Deterministic identity of this event. Same value if it is ever delivered twice: use it as your idempotency key. |
| `occurredAt` |  | When Cito recorded this, UTC. |
| `eventId` |  | The card id from /ufc/events. |
| `eventSlug` |  | The card slug, accepted by every /ufc/events/{slug} route. |
| `eventDataId` |  | The card dataId from /ufc/events. |
| `eventTitle` |  | The card title. |
| `series` |  | ufc, dwcs or road-to-ufc. |
| `eventStartsAt` |  | The card start time on /ufc/events. |
| `boutId` |  | The fight id: same value as id on /ufc/events/{slug}/bouts, accepted by /ufc/bouts/{id}. |
| `matchId` |  | Same as boutId (the envelope match_id). |
| `liveBoutId` |  | The id on /ufc/live, the stream and socket rooms. |
| `dataId` |  | The fight dataId, also accepted by /ufc/bouts/{id}. |
| `cardSection` |  | Main Card, Prelims or Early Prelims. |
| `cardPosition` |  | Slot on the card, for example "Main Card 1". |
| `weightClass` |  | The division of the fight. |
| `titleBout` |  | True for a title fight. |
| `fighters` |  | Both fighters: fighterId, fighterSlug, fighterName, corner. Same ids and corners as /ufc/bouts/{id}. |
| `round` |  | Round number, from 1. |
| `clock` |  | Elapsed time on the clock when first seen. |
| `startedAt` |  | Estimated start of the round. |

```json
{
  "event": "ufc.round.started",
  "id": "3f6f0a4e-2c1d-5b7a-9e8f-1a2b3c4d5e6f",
  "timestamp": "2026-11-08T03:54:15.798Z",
  "event_type": "ufc.round.started",
  "match_id": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
  "previous_state": null,
  "data": {
    "dedupeKey": "ufc.round.started|fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta|2",
    "occurredAt": "2026-11-08T03:54:14.298Z",
    "eventId": "0a5a83bd-c925-4cb4-bd05-293e6002fb67",
    "eventSlug": "ufc-fight-night-november-07-2026",
    "eventDataId": "110404b505fb562c",
    "eventTitle": "UFC Fight Night: Cortes Acosta vs Walker",
    "series": "ufc",
    "eventStartsAt": "2026-11-07T22:00:00.000Z",
    "matchId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "liveBoutId": "ufc-fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "dataId": "13238",
    "cardSection": "Main Card",
    "cardPosition": "Main Card 1",
    "weightClass": "Heavyweight",
    "titleBout": false,
    "fighters": [
      {
        "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "corner": "blue"
      },
      {
        "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "corner": "red"
      }
    ],
    "round": 2,
    "clock": "0:10",
    "startedAt": "2026-11-08T03:54:04.298Z"
  }
}
```

### ufc.round.completed

A round has ended: data.round, data.endedBy (bell or finish), and each fighter's provisional round numbers in data.stats.

- When: At the bell, or when the fight ends in that round. Once per round.
- Status: None recorded yet. You can subscribe, but none has been recorded. Do not rely on it.
- Frequency: 1 to 5 per fight
- Plan: Pro and Scale (real time)
- Filters: eventSlug, eventId, boutId, fighterSlug, fighterId, series
- Use it to: Show round numbers. They are marked provisional: the official ones arrive with ufc.fight.stats_ready.
- Notes: data.boutId is the id on /ufc/events/{slug}/bouts and /ufc/bouts/{id}; data.eventSlug and data.fighters[].fighterSlug are the /ufc ids. data.dedupeKey never changes for one event: use it as your idempotency key. UFC includes DWCS and Road to UFC (data.series).

| Field | Type | Meaning |
|---|---|---|
| `dedupeKey` |  | Deterministic identity of this event. Same value if it is ever delivered twice: use it as your idempotency key. |
| `occurredAt` |  | When Cito recorded this, UTC. |
| `eventId` |  | The card id from /ufc/events. |
| `eventSlug` |  | The card slug, accepted by every /ufc/events/{slug} route. |
| `eventDataId` |  | The card dataId from /ufc/events. |
| `eventTitle` |  | The card title. |
| `series` |  | ufc, dwcs or road-to-ufc. |
| `eventStartsAt` |  | The card start time on /ufc/events. |
| `boutId` |  | The fight id: same value as id on /ufc/events/{slug}/bouts, accepted by /ufc/bouts/{id}. |
| `matchId` |  | Same as boutId (the envelope match_id). |
| `liveBoutId` |  | The id on /ufc/live, the stream and socket rooms. |
| `dataId` |  | The fight dataId, also accepted by /ufc/bouts/{id}. |
| `cardSection` |  | Main Card, Prelims or Early Prelims. |
| `cardPosition` |  | Slot on the card, for example "Main Card 1". |
| `weightClass` |  | The division of the fight. |
| `titleBout` |  | True for a title fight. |
| `fighters` |  | Both fighters: fighterId, fighterSlug, fighterName, corner. Same ids and corners as /ufc/bouts/{id}. |
| `round` |  | Round number. |
| `endedBy` |  | bell, or finish when the fight ended inside the round. |
| `clock` |  | 5:00 at the bell, otherwise the finish time. |
| `statsProvisional` |  | Always true: round numbers can still settle after the bell. ufc.fight.stats_ready has the official ones. |
| `stats` |  | Each fighter's numbers for this round, same fields as /ufc/bouts/{id}/rounds. |

```json
{
  "event": "ufc.round.completed",
  "id": "3f6f0a4e-2c1d-5b7a-9e8f-1a2b3c4d5e6f",
  "timestamp": "2026-11-08T04:05:34.400Z",
  "event_type": "ufc.round.completed",
  "match_id": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
  "previous_state": null,
  "data": {
    "dedupeKey": "ufc.round.completed|fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta|3",
    "occurredAt": "2026-11-08T04:05:32.900Z",
    "eventId": "0a5a83bd-c925-4cb4-bd05-293e6002fb67",
    "eventSlug": "ufc-fight-night-november-07-2026",
    "eventDataId": "110404b505fb562c",
    "eventTitle": "UFC Fight Night: Cortes Acosta vs Walker",
    "series": "ufc",
    "eventStartsAt": "2026-11-07T22:00:00.000Z",
    "matchId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "liveBoutId": "ufc-fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "dataId": "13238",
    "cardSection": "Main Card",
    "cardPosition": "Main Card 1",
    "weightClass": "Heavyweight",
    "titleBout": false,
    "fighters": [
      {
        "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "corner": "blue"
      },
      {
        "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "corner": "red"
      }
    ],
    "round": 3,
    "endedBy": "finish",
    "clock": "2:27",
    "statsProvisional": true,
    "stats": [
      {
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "round": 3,
        "knockdowns": 0,
        "significantStrikes": "5 of 18",
        "totalStrikes": "7 of 20",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "1:07",
        "head": "5 of 18",
        "body": "0 of 0",
        "leg": "0 of 0",
        "distance": "4 of 15",
        "clinch": "1 of 3",
        "ground": "0 of 0"
      },
      {
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "round": 3,
        "knockdowns": 1,
        "significantStrikes": "12 of 23",
        "totalStrikes": "12 of 23",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "0:09",
        "head": "8 of 18",
        "body": "1 of 2",
        "leg": "3 of 3",
        "distance": "11 of 20",
        "clinch": "0 of 2",
        "ground": "1 of 1"
      }
    ]
  }
}
```

### ufc.fight.completed

A fight result: data.outcome (win, draw or no_contest), data.winner, data.loser, data.method, data.methodDetails, data.resultRound, data.resultTime.

- When: When the result is held. Once per fight.
- Status: None recorded yet. You can subscribe, but none has been recorded. Do not rely on it.
- Frequency: 1 per fight
- Plan: Pro and Scale
- Filters: eventSlug, eventId, boutId, fighterSlug, fighterId, series
- Use it to: Settle on data.outcome, data.winner, data.method and data.resultRound.
- Notes: data.boutId is the id on /ufc/events/{slug}/bouts and /ufc/bouts/{id}; data.eventSlug and data.fighters[].fighterSlug are the /ufc ids. data.dedupeKey never changes for one event: use it as your idempotency key. UFC includes DWCS and Road to UFC (data.series).

| Field | Type | Meaning |
|---|---|---|
| `dedupeKey` |  | Deterministic identity of this event. Same value if it is ever delivered twice: use it as your idempotency key. |
| `occurredAt` |  | When Cito recorded this, UTC. |
| `eventId` |  | The card id from /ufc/events. |
| `eventSlug` |  | The card slug, accepted by every /ufc/events/{slug} route. |
| `eventDataId` |  | The card dataId from /ufc/events. |
| `eventTitle` |  | The card title. |
| `series` |  | ufc, dwcs or road-to-ufc. |
| `eventStartsAt` |  | The card start time on /ufc/events. |
| `boutId` |  | The fight id: same value as id on /ufc/events/{slug}/bouts, accepted by /ufc/bouts/{id}. |
| `matchId` |  | Same as boutId (the envelope match_id). |
| `liveBoutId` |  | The id on /ufc/live, the stream and socket rooms. |
| `dataId` |  | The fight dataId, also accepted by /ufc/bouts/{id}. |
| `cardSection` |  | Main Card, Prelims or Early Prelims. |
| `cardPosition` |  | Slot on the card, for example "Main Card 1". |
| `weightClass` |  | The division of the fight. |
| `titleBout` |  | True for a title fight. |
| `fighters` |  | Both fighters: fighterId, fighterSlug, fighterName, corner. Same ids and corners as /ufc/bouts/{id}. |
| `completedAt` |  | When the result was held. |
| `outcome` |  | win, draw or no_contest. |
| `winner` |  | fighterId, fighterSlug, fighterName, corner. null on a draw or no contest. |
| `loser` |  | Same shape as winner. |
| `winnerFighterSlug` |  | Same value as /ufc/bouts/{id}. |
| `method` |  | KO/TKO, SUB, U-DEC, S-DEC, M-DEC, DQ, CNC, Overturned and similar. |
| `methodDetails` |  | Finish detail such as "Punch". May be null. |
| `resultRound` |  | Round the fight ended in. |
| `resultTime` |  | Time in that round. Can differ by a second or two from the final official time; ufc.fight.stats_ready and /ufc/bouts/{id} hold the final value. |

```json
{
  "event": "ufc.fight.completed",
  "id": "3f6f0a4e-2c1d-5b7a-9e8f-1a2b3c4d5e6f",
  "timestamp": "2026-11-08T04:05:34.400Z",
  "event_type": "ufc.fight.completed",
  "match_id": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
  "previous_state": null,
  "data": {
    "dedupeKey": "ufc.fight.completed|fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "occurredAt": "2026-11-08T04:05:32.900Z",
    "eventId": "0a5a83bd-c925-4cb4-bd05-293e6002fb67",
    "eventSlug": "ufc-fight-night-november-07-2026",
    "eventDataId": "110404b505fb562c",
    "eventTitle": "UFC Fight Night: Cortes Acosta vs Walker",
    "series": "ufc",
    "eventStartsAt": "2026-11-07T22:00:00.000Z",
    "matchId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "liveBoutId": "ufc-fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "dataId": "13238",
    "cardSection": "Main Card",
    "cardPosition": "Main Card 1",
    "weightClass": "Heavyweight",
    "titleBout": false,
    "fighters": [
      {
        "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "corner": "blue"
      },
      {
        "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "corner": "red"
      }
    ],
    "completedAt": "2026-11-08T04:05:32.900Z",
    "outcome": "win",
    "winner": {
      "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
      "fighterSlug": "johnny-walker",
      "fighterName": "Johnny Walker",
      "corner": "blue"
    },
    "loser": {
      "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
      "fighterSlug": "waldo-cortes-acosta",
      "fighterName": "Waldo Cortes Acosta",
      "corner": "red"
    },
    "winnerFighterSlug": "johnny-walker",
    "method": "KO/TKO",
    "methodDetails": "Punch",
    "resultRound": 3,
    "resultTime": "2:27"
  }
}
```

### ufc.fight.stats_ready

The official whole-fight and per-round stats of a finished fight are available, in data.boutStats and data.roundStats, with the final result.

- When: When both fighters have stats for every round fought. Once per fight.
- Status: None recorded yet. You can subscribe, but none has been recorded. Do not rely on it.
- Frequency: 1 per fight, minutes to a few hours after the result
- Plan: Pro and Scale
- Filters: eventSlug, eventId, boutId, fighterSlug, fighterId, series
- Use it to: Store the official whole-fight and per-round stats. Re-grade anything you graded on provisional numbers.
- Notes: data.boutId is the id on /ufc/events/{slug}/bouts and /ufc/bouts/{id}; data.eventSlug and data.fighters[].fighterSlug are the /ufc ids. data.dedupeKey never changes for one event: use it as your idempotency key. UFC includes DWCS and Road to UFC (data.series).

| Field | Type | Meaning |
|---|---|---|
| `dedupeKey` |  | Deterministic identity of this event. Same value if it is ever delivered twice: use it as your idempotency key. |
| `occurredAt` |  | When Cito recorded this, UTC. |
| `eventId` |  | The card id from /ufc/events. |
| `eventSlug` |  | The card slug, accepted by every /ufc/events/{slug} route. |
| `eventDataId` |  | The card dataId from /ufc/events. |
| `eventTitle` |  | The card title. |
| `series` |  | ufc, dwcs or road-to-ufc. |
| `eventStartsAt` |  | The card start time on /ufc/events. |
| `boutId` |  | The fight id: same value as id on /ufc/events/{slug}/bouts, accepted by /ufc/bouts/{id}. |
| `matchId` |  | Same as boutId (the envelope match_id). |
| `liveBoutId` |  | The id on /ufc/live, the stream and socket rooms. |
| `dataId` |  | The fight dataId, also accepted by /ufc/bouts/{id}. |
| `cardSection` |  | Main Card, Prelims or Early Prelims. |
| `cardPosition` |  | Slot on the card, for example "Main Card 1". |
| `weightClass` |  | The division of the fight. |
| `titleBout` |  | True for a title fight. |
| `fighters` |  | Both fighters: fighterId, fighterSlug, fighterName, corner. Same ids and corners as /ufc/bouts/{id}. |
| `outcome` |  | As on ufc.fight.completed. |
| `winner` |  | As on ufc.fight.completed. |
| `loser` |  | As on ufc.fight.completed. |
| `winnerFighterSlug` |  | As on ufc.fight.completed. |
| `method` |  | Final method. |
| `methodDetails` |  | Final detail. |
| `resultRound` |  | Final round. |
| `resultTime` |  | Final time. |
| `scorecards` |  | Judges' cards on a decision, otherwise null. |
| `boutStats` |  | One row per fighter, same fields as /ufc/bouts/{id}/stats boutStats. |
| `roundStats` |  | One row per fighter per round, same fields as /ufc/bouts/{id}/stats roundStats. |

```json
{
  "event": "ufc.fight.stats_ready",
  "id": "3f6f0a4e-2c1d-5b7a-9e8f-1a2b3c4d5e6f",
  "timestamp": "2026-11-08T09:11:34.003Z",
  "event_type": "ufc.fight.stats_ready",
  "match_id": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
  "previous_state": null,
  "data": {
    "dedupeKey": "ufc.fight.stats_ready|fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "occurredAt": "2026-11-08T09:11:32.503Z",
    "eventId": "0a5a83bd-c925-4cb4-bd05-293e6002fb67",
    "eventSlug": "ufc-fight-night-november-07-2026",
    "eventDataId": "110404b505fb562c",
    "eventTitle": "UFC Fight Night: Cortes Acosta vs Walker",
    "series": "ufc",
    "eventStartsAt": "2026-11-07T22:00:00.000Z",
    "matchId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "liveBoutId": "ufc-fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
    "dataId": "13238",
    "cardSection": "Main Card",
    "cardPosition": "Main Card 1",
    "weightClass": "Heavyweight",
    "titleBout": false,
    "fighters": [
      {
        "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "corner": "blue"
      },
      {
        "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "corner": "red"
      }
    ],
    "outcome": "win",
    "winner": {
      "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
      "fighterSlug": "johnny-walker",
      "fighterName": "Johnny Walker",
      "corner": "blue"
    },
    "loser": {
      "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
      "fighterSlug": "waldo-cortes-acosta",
      "fighterName": "Waldo Cortes Acosta",
      "corner": "red"
    },
    "winnerFighterSlug": "johnny-walker",
    "method": "KO/TKO",
    "methodDetails": "Punch",
    "resultRound": 3,
    "resultTime": "2:27",
    "scorecards": null,
    "boutStats": [
      {
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "knockdowns": 1,
        "significantStrikes": "51 of 77",
        "totalStrikes": "61 of 87",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "0:09",
        "head": "17 of 42",
        "body": "11 of 12",
        "leg": "23 of 23",
        "distance": "45 of 68",
        "clinch": "5 of 8",
        "ground": "1 of 1",
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta"
      },
      {
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "knockdowns": 1,
        "significantStrikes": "40 of 89",
        "totalStrikes": "67 of 117",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "4:24",
        "head": "36 of 85",
        "body": "3 of 3",
        "leg": "1 of 1",
        "distance": "28 of 71",
        "clinch": "10 of 15",
        "ground": "2 of 3",
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta"
      }
    ],
    "roundStats": [
      {
        "round": 1,
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "knockdowns": 0,
        "significantStrikes": "25 of 36",
        "totalStrikes": "25 of 36",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "0:00",
        "head": "7 of 18",
        "body": "6 of 6",
        "leg": "12 of 12",
        "distance": "23 of 34",
        "clinch": "2 of 2",
        "ground": "0 of 0",
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta"
      },
      {
        "round": 1,
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "knockdowns": 1,
        "significantStrikes": "20 of 47",
        "totalStrikes": "23 of 51",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "1:23",
        "head": "18 of 45",
        "body": "2 of 2",
        "leg": "0 of 0",
        "distance": "13 of 36",
        "clinch": "7 of 10",
        "ground": "0 of 1",
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta"
      },
      {
        "round": 2,
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "knockdowns": 0,
        "significantStrikes": "11 of 21",
        "totalStrikes": "21 of 31",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "0:00",
        "head": "1 of 10",
        "body": "2 of 3",
        "leg": "8 of 8",
        "distance": "11 of 19",
        "clinch": "0 of 2",
        "ground": "0 of 0",
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta"
      },
      {
        "round": 2,
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "knockdowns": 0,
        "significantStrikes": "15 of 27",
        "totalStrikes": "36 of 48",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "1:54",
        "head": "13 of 25",
        "body": "1 of 1",
        "leg": "1 of 1",
        "distance": "11 of 21",
        "clinch": "2 of 4",
        "ground": "2 of 2",
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta"
      },
      {
        "round": 3,
        "fighterSlug": "johnny-walker",
        "fighterName": "Johnny Walker",
        "knockdowns": 1,
        "significantStrikes": "15 of 20",
        "totalStrikes": "15 of 20",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "0:09",
        "head": "9 of 14",
        "body": "3 of 3",
        "leg": "3 of 3",
        "distance": "11 of 15",
        "clinch": "3 of 4",
        "ground": "1 of 1",
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta"
      },
      {
        "round": 3,
        "fighterSlug": "waldo-cortes-acosta",
        "fighterName": "Waldo Cortes Acosta",
        "knockdowns": 0,
        "significantStrikes": "5 of 15",
        "totalStrikes": "8 of 18",
        "takedowns": "0 of 0",
        "submissionAttempts": 0,
        "reversals": 0,
        "controlTime": "1:07",
        "head": "5 of 15",
        "body": "0 of 0",
        "leg": "0 of 0",
        "distance": "4 of 14",
        "clinch": "1 of 1",
        "ground": "0 of 0",
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta"
      }
    ]
  }
}
```

### ufc.card.updated

A UFC card changed: data.changes lists bouts added, moved between sections or cancelled.

- When: When a change on an upcoming or running card has held for 10 minutes.
- Status: None recorded yet. You can subscribe, but none has been recorded. Do not rely on it.
- Frequency: Up to a few per card in fight week, none on most days
- Plan: Pro and Scale
- Filters: eventSlug, eventId, boutId, fighterSlug, fighterId, series
- Use it to: Refresh a card page: data.changes lists bouts added, moved or cancelled.
- Notes: data.boutId is the id on /ufc/events/{slug}/bouts and /ufc/bouts/{id}; data.eventSlug and data.fighters[].fighterSlug are the /ufc ids. data.dedupeKey never changes for one event: use it as your idempotency key. UFC includes DWCS and Road to UFC (data.series).

| Field | Type | Meaning |
|---|---|---|
| `dedupeKey` |  | Deterministic identity of this event. Same value if it is ever delivered twice: use it as your idempotency key. |
| `occurredAt` |  | When Cito recorded this, UTC. |
| `eventId` |  | The card id from /ufc/events. |
| `eventSlug` |  | The card slug, accepted by every /ufc/events/{slug} route. |
| `eventDataId` |  | The card dataId from /ufc/events. |
| `eventTitle` |  | The card title. |
| `series` |  | ufc, dwcs or road-to-ufc. |
| `eventStartsAt` |  | The card start time on /ufc/events. |
| `revision` |  | Increases by 1 with each update of this card. |
| `changes` |  | List of {type: added \| moved \| cancelled, boutId, weightClass, fighters, cardSection, cardPosition, from (moved only)}. |

```json
{
  "event": "ufc.card.updated",
  "id": "3f6f0a4e-2c1d-5b7a-9e8f-1a2b3c4d5e6f",
  "timestamp": "2026-11-08T18:11:02.500Z",
  "event_type": "ufc.card.updated",
  "match_id": null,
  "previous_state": null,
  "data": {
    "dedupeKey": "ufc.card.updated|ufc-334|1",
    "occurredAt": "2026-11-08T18:11:01.000Z",
    "eventId": "a380d664-081b-48b7-a069-5815ad86ff08",
    "eventSlug": "ufc-334",
    "eventDataId": "a380d664-081b-48b7-a069-5815ad86ff08",
    "eventTitle": "UFC 334",
    "series": "ufc",
    "eventStartsAt": "2026-11-14T22:00:00.000Z",
    "revision": 1,
    "changes": [
      {
        "type": "added",
        "boutId": "334-cesar-almeida-donte-johnson",
        "weightClass": "Middleweight",
        "fighters": [
          {
            "fighterId": "d4e20d36-1ff0-40d8-88c9-7715baff7b9d",
            "fighterSlug": "cesar-almeida",
            "fighterName": "Cesar Almeida",
            "corner": "blue"
          },
          {
            "fighterId": "7e06193c-f1fc-4efa-8037-f59c279d7dd8",
            "fighterSlug": "donte-johnson",
            "fighterName": "Donte Johnson",
            "corner": "red"
          }
        ],
        "cardSection": "Prelims",
        "cardPosition": "Prelims 4"
      },
      {
        "type": "cancelled",
        "boutId": "334-baisangur-susurkaev-donte-johnson",
        "weightClass": "Middleweight",
        "fighters": [
          {
            "fighterId": "f038c50e-983d-4b03-b4b6-8c67cd7324fe",
            "fighterSlug": "baisangur-susurkaev",
            "fighterName": "Baisangur Susurkaev",
            "corner": "blue"
          },
          {
            "fighterId": "7e06193c-f1fc-4efa-8037-f59c279d7dd8",
            "fighterSlug": "donte-johnson",
            "fighterName": "Donte Johnson",
            "corner": "red"
          }
        ],
        "cardSection": "Prelims",
        "cardPosition": "Prelims 4"
      }
    ]
  }
}
```

### ufc.event.completed

A UFC card has finished, with every result in data.results.

- When: When every public fight has a result. Once per card.
- Status: None recorded yet. You can subscribe, but none has been recorded. Do not rely on it.
- Frequency: 1 per card
- Plan: Pro and Scale
- Filters: eventSlug, eventId, boutId, fighterSlug, fighterId, series
- Use it to: Close the card with every result in data.results.
- Notes: data.boutId is the id on /ufc/events/{slug}/bouts and /ufc/bouts/{id}; data.eventSlug and data.fighters[].fighterSlug are the /ufc ids. data.dedupeKey never changes for one event: use it as your idempotency key. UFC includes DWCS and Road to UFC (data.series).

| Field | Type | Meaning |
|---|---|---|
| `dedupeKey` |  | Deterministic identity of this event. Same value if it is ever delivered twice: use it as your idempotency key. |
| `occurredAt` |  | When Cito recorded this, UTC. |
| `eventId` |  | The card id from /ufc/events. |
| `eventSlug` |  | The card slug, accepted by every /ufc/events/{slug} route. |
| `eventDataId` |  | The card dataId from /ufc/events. |
| `eventTitle` |  | The card title. |
| `series` |  | ufc, dwcs or road-to-ufc. |
| `eventStartsAt` |  | The card start time on /ufc/events. |
| `completedAt` |  | When the last result was held. |
| `boutsCompleted` |  | Number of fights with a result. |
| `boutsWithoutResult` |  | Public fights with no result yet, normally empty. |
| `results` |  | Each fight: boutId, cardPosition, fighters, outcome, winnerFighterSlug, method, methodDetails, resultRound, resultTime. |

```json
{
  "event": "ufc.event.completed",
  "id": "3f6f0a4e-2c1d-5b7a-9e8f-1a2b3c4d5e6f",
  "timestamp": "2026-11-08T04:07:51.905Z",
  "event_type": "ufc.event.completed",
  "match_id": null,
  "previous_state": null,
  "data": {
    "dedupeKey": "ufc.event.completed|ufc-fight-night-november-07-2026",
    "occurredAt": "2026-11-08T04:07:50.405Z",
    "eventId": "0a5a83bd-c925-4cb4-bd05-293e6002fb67",
    "eventSlug": "ufc-fight-night-november-07-2026",
    "eventDataId": "110404b505fb562c",
    "eventTitle": "UFC Fight Night: Cortes Acosta vs Walker",
    "series": "ufc",
    "eventStartsAt": "2026-11-07T22:00:00.000Z",
    "completedAt": "2026-11-08T04:07:50.405Z",
    "boutsCompleted": 14,
    "boutsWithoutResult": [],
    "results": [
      {
        "boutId": "fight-night-november-07-2026-johnny-walker-waldo-cortes-acosta",
        "cardPosition": "Main Card 1",
        "fighters": [
          {
            "fighterId": "26d3ffaf-7b1e-4498-adc1-c129e4530fab",
            "fighterSlug": "johnny-walker",
            "fighterName": "Johnny Walker",
            "corner": "blue"
          },
          {
            "fighterId": "ae6aa622-1b62-4cac-ab64-9179aa9f07af",
            "fighterSlug": "waldo-cortes-acosta",
            "fighterName": "Waldo Cortes Acosta",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "johnny-walker",
        "method": "KO/TKO",
        "methodDetails": "Punch",
        "resultRound": 3,
        "resultTime": "2:27"
      },
      {
        "boutId": "fight-night-november-07-2026-tatiana-suarez-virna-jandiroba",
        "cardPosition": "Main Card 2",
        "fighters": [
          {
            "fighterId": "fde19553-e551-4841-a91b-bc2037335aed",
            "fighterSlug": "virna-jandiroba",
            "fighterName": "Virna Jandiroba",
            "corner": "blue"
          },
          {
            "fighterId": "8b642ed7-0509-4526-864a-29d5c446b0db",
            "fighterSlug": "tatiana-suarez",
            "fighterName": "Tatiana Suarez",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "tatiana-suarez",
        "method": "U-DEC",
        "methodDetails": null,
        "resultRound": 3,
        "resultTime": "5:00"
      },
      {
        "boutId": "fight-night-november-07-2026-davey-grant-elijah-smith",
        "cardPosition": "Main Card 3",
        "fighters": [
          {
            "fighterId": "e14b1be9-26b4-4878-a7b5-977964f7e0fa",
            "fighterSlug": "elijah-smith",
            "fighterName": "Elijah Smith",
            "corner": "blue"
          },
          {
            "fighterId": "229d15be-94f6-45be-acf9-0cc02eb21044",
            "fighterSlug": "davey-grant",
            "fighterName": "Davey Grant",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "elijah-smith",
        "method": "KO/TKO",
        "methodDetails": "Punches",
        "resultRound": 1,
        "resultTime": "1:00"
      },
      {
        "boutId": "fight-night-november-07-2026-billy-elekana-lucas-fernando",
        "cardPosition": "Main Card 4",
        "fighters": [
          {
            "fighterId": "f39ca6c4-d608-41e0-939e-5f581df28768",
            "fighterSlug": "lucas-fernando",
            "fighterName": "Lucas Fernando",
            "corner": "blue"
          },
          {
            "fighterId": "2a2cc58d-aa2f-4f77-9c81-43a9d6d60b99",
            "fighterSlug": "billy-elekana",
            "fighterName": "Billy Elekana",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "lucas-fernando",
        "method": "U-DEC",
        "methodDetails": null,
        "resultRound": 3,
        "resultTime": "5:00"
      },
      {
        "boutId": "fight-night-november-07-2026-nina-milosevic-priscila-cachoeira",
        "cardPosition": "Main Card 5",
        "fighters": [
          {
            "fighterId": "e4dc8d85-7f37-4d0f-8b7c-f00b913324c8",
            "fighterSlug": "nina-milosevic",
            "fighterName": "Nina Milošević",
            "corner": "blue"
          },
          {
            "fighterId": "2e2abb2f-7f09-4b63-87ba-44797bc47578",
            "fighterSlug": "priscila-cachoeira",
            "fighterName": "Priscila Cachoeira",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "nina-milosevic",
        "method": "KO/TKO",
        "methodDetails": "Elbows",
        "resultRound": 2,
        "resultTime": "3:40"
      },
      {
        "boutId": "fight-night-november-07-2026-marcos-degli-mitch-raposo",
        "cardPosition": "Main Card 6",
        "fighters": [
          {
            "fighterId": "27a49aff-0106-4c6a-ba10-528ffc4f3ee6",
            "fighterSlug": "marcos-degli",
            "fighterName": "Marcos Degli",
            "corner": "blue"
          },
          {
            "fighterId": "b0447906-54cf-4daa-9b0d-87a9b929e4ed",
            "fighterSlug": "mitch-raposo",
            "fighterName": "Mitch Raposo",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "mitch-raposo",
        "method": "U-DEC",
        "methodDetails": null,
        "resultRound": 3,
        "resultTime": "5:00"
      },
      {
        "boutId": "fight-night-november-07-2026-keiichiro-nakamura-0-ollie-schmid",
        "cardPosition": "Prelims 1",
        "fighters": [
          {
            "fighterId": "c8f1e9d1-1ab8-434f-b882-7a32f437adfa",
            "fighterSlug": "ollie-schmid",
            "fighterName": "Ollie Schmid",
            "corner": "blue"
          },
          {
            "fighterId": "f003129d-4089-49ac-8a1f-af7dac11c7ea",
            "fighterSlug": "keiichiro-nakamura",
            "fighterName": "Keiichiro Nakamura",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "ollie-schmid",
        "method": "U-DEC",
        "methodDetails": null,
        "resultRound": 3,
        "resultTime": "5:00"
      },
      {
        "boutId": "fight-night-november-07-2026-gabriel-lorenco-thomas-petersen",
        "cardPosition": "Prelims 2",
        "fighters": [
          {
            "fighterId": "824cbd73-34be-4587-86cc-82fb49efcace",
            "fighterSlug": "thomas-petersen",
            "fighterName": "Thomas Petersen",
            "corner": "blue"
          },
          {
            "fighterId": "79e1f6d2-4cfd-4d37-9277-8dd2ab83835f",
            "fighterSlug": "gabriel-lorenco",
            "fighterName": "Gabriel Lorenço",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "thomas-petersen",
        "method": "KO/TKO",
        "methodDetails": "Punches",
        "resultRound": 3,
        "resultTime": "4:47"
      },
      {
        "boutId": "fight-night-november-07-2026-gabriella-fernandes-karine-silva",
        "cardPosition": "Prelims 3",
        "fighters": [
          {
            "fighterId": "7e20c783-25a3-41ff-9daf-3bf69e0fd96e",
            "fighterSlug": "gabriella-fernandes",
            "fighterName": "Gabriella Fernandes",
            "corner": "blue"
          },
          {
            "fighterId": "971c5892-bf16-4106-bd0c-4ac1189a8358",
            "fighterSlug": "karine-silva",
            "fighterName": "Karine Silva",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "karine-silva",
        "method": "U-DEC",
        "methodDetails": null,
        "resultRound": 3,
        "resultTime": "5:00"
      },
      {
        "boutId": "fight-night-november-07-2026-jose-delano-murtazali-magomedov",
        "cardPosition": "Prelims 4",
        "fighters": [
          {
            "fighterId": "57414bcb-54af-4efd-8029-cee43d38f303",
            "fighterSlug": "murtazali-magomedov",
            "fighterName": "Murtazali Magomedov",
            "corner": "blue"
          },
          {
            "fighterId": "84760727-5bb0-4146-8d8a-75ed7fc282d6",
            "fighterSlug": "jose-delano",
            "fighterName": "Jose Delano",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "murtazali-magomedov",
        "method": "U-DEC",
        "methodDetails": null,
        "resultRound": 3,
        "resultTime": "5:00"
      },
      {
        "boutId": "fight-night-november-07-2026-austin-bashi-carlos-calderon",
        "cardPosition": "Prelims 5",
        "fighters": [
          {
            "fighterId": "242a9091-9cd6-47da-93d3-6cd3d1482071",
            "fighterSlug": "carlos-calderon",
            "fighterName": "Carlos Calderon",
            "corner": "blue"
          },
          {
            "fighterId": "997d121e-6d0b-4916-a8b7-2c69b359b41a",
            "fighterSlug": "austin-bashi",
            "fighterName": "Austin Bashi",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "austin-bashi",
        "method": "SUB",
        "methodDetails": "Rear Naked Choke",
        "resultRound": 1,
        "resultTime": "1:07"
      },
      {
        "boutId": "fight-night-november-07-2026-andre-petroski-mantas-kondratavicius",
        "cardPosition": "Prelims 6",
        "fighters": [
          {
            "fighterId": "3c4fbc90-5087-454a-80a0-82a53f381455",
            "fighterSlug": "andre-petroski",
            "fighterName": "Andre Petroski",
            "corner": "blue"
          },
          {
            "fighterId": "29d9fb0c-e709-4ac8-8e94-a9e31b854575",
            "fighterSlug": "mantas-kondratavicius",
            "fighterName": "Mantas Kondratavičius",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "andre-petroski",
        "method": "KO/TKO",
        "methodDetails": "Punches",
        "resultRound": 2,
        "resultTime": "4:39"
      },
      {
        "boutId": "fight-night-november-07-2026-seokhyeon-ko-wellington-turman",
        "cardPosition": "Prelims 7",
        "fighters": [
          {
            "fighterId": "33ec8329-09eb-4946-898f-1e0942efc5d8",
            "fighterSlug": "wellington-turman",
            "fighterName": "Wellington Turman",
            "corner": "blue"
          },
          {
            "fighterId": "370a18c8-977f-422e-a844-5d8ed65f6f50",
            "fighterSlug": "seokhyeon-ko",
            "fighterName": "Seokhyeon Ko",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "seokhyeon-ko",
        "method": "U-DEC",
        "methodDetails": null,
        "resultRound": 3,
        "resultTime": "5:00"
      },
      {
        "boutId": "fight-night-november-07-2026-jonny-parsons-jose-henrique",
        "cardPosition": "Prelims 8",
        "fighters": [
          {
            "fighterId": "4919764f-b74e-40ba-b57b-e3eeef512bdf",
            "fighterSlug": "jose-henrique",
            "fighterName": "José Souza",
            "corner": "blue"
          },
          {
            "fighterId": "8b348104-718f-41c5-9314-3f11096a09a7",
            "fighterSlug": "jonny-parsons",
            "fighterName": "Jonny Parsons",
            "corner": "red"
          }
        ],
        "outcome": "win",
        "winnerFighterSlug": "jose-henrique",
        "method": "KO/TKO",
        "methodDetails": "Punches",
        "resultRound": 1,
        "resultTime": "4:16"
      }
    ]
  }
}
```
