List events (schedule + results)
A bare listing is the upcoming calendar: events from the last ~6h onward, soonest first. Ordering defaults: explicit order always wins; else from= or a forward status (announced|scheduled|live|upcoming) → asc; else (completed|cancelled|postponed|to=) → desc, newest first. order=desc with no filters browses the full archive newest-first. Live results land within ≤5 minutes (UFC ≤2). Rows are the list shape (no card) — short_title, numbering and the three section clocks (main_card_at, prelims_at, early_prelims_at, null when the org publishes no split) ride along.
Request
- Base URL: https://api.ufcalendar.com
- URL: https://api.ufcalendar.com/v1/events
- Auth: HTTP bearer
Query parameters
Launch org slug: ufc, pfl, oktagon, bkfc or rizin. Staged orgs 400 until promoted.
What ?status= accepts on the event lists: every EventStatus, plus upcoming = announced, scheduled or live cards that have not finished (the site's upcoming-or-live window: started under 6 h ago, or under 14 h ago with a bout still to fight). upcoming is a filter only — it never appears on an event.
Filter on lifecycle status; postponed is accepted (2026-09-24). upcoming = everything not yet over (announced, scheduled or live), soonest first.
First UTC calendar day, inclusive YYYY-MM-DD, matched against the event's starts_at (first bell, UTC) — not the venue's local date. Must be a real calendar day.
Last UTC calendar day, inclusive YYYY-MM-DD, matched against starts_at (UTC). An evening card in the Americas starts after midnight UTC, so it falls on the next UTC day: a Saturday-night Las Vegas card needs to= the Sunday. Must be a real calendar day.
Sort by start time. Defaults are contextual — see endpoint description.
true = only cards with a title bout, false = only cards without one.
true = only pay-per-view cards, false = only non-PPV cards.
headline adds each event's main event: { fight_id, fighter_a, fighter_b, weight_class, is_title, winner_fighter_id, method, round, time } (corners are { id, slug, name }), or null when the card has no main-event bout. A replaced main event is skipped in favour of the active one. One extra query per page. Unknown values 400 invalid_include.
Opaque cursor from meta.pagination.next_cursor.
Response
Events page
Example response
{
"data": [
{
"sport": "mma"
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.