---
title: "ICS calendar feed"
method: GET
path: "/v1/calendar/{org}.ics"
tags: ["Events"]
---

# ICS calendar feed

`GET /v1/calendar/{org}.ics`

## Request

- Base URL: `https://api.ufcalendar.com`
- URL: `https://api.ufcalendar.com/v1/calendar/{org}.ics`
- Auth: HTTP bearer

Subscribe your calendar app to an org's schedule. Calendar apps can't send headers, so pass the key as `?key=`. Refresh hourly at most. Three shapes: `{org}.ics` is one entry per event (first bell to the estimated last bout, full card and results in the description); `{org}-sections.ics` splits each card into early prelims, prelims and main card at their declared start times; `{org}-fights.ics` has one TENTATIVE entry per bout at its estimated start, linking the bout page. No betting odds.

## Path parameters

- `org` string, required

## Query parameters

- `key` string, required

## Response `200`

text/calendar VEVENT feed of upcoming events (or their card sections / bouts)

## Other responses

- `401`: Missing/invalid API key (`unauthorized`).
- `403`: No active plan on the key's account (`subscription_required`) — choose a plan or start the free 1-day trial at https://www.ufcalendar.com/account/api.
- `404`: Not found (`not_found`; staged-org data 404s until the org is promoted).
- `429`: Rate limited (`rate_limited`) or monthly quota reached (`quota_exceeded`). Honor `Retry-After`.
- `500`: Something broke on our side (`internal_error`). It has been logged under the `request_id`.

---

[API](https://skmtc.dev/ufcalendar/apis/ufcalendar-fight-api.md) · [All operations](https://skmtc.dev/ufcalendar/apis/ufcalendar-fight-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ufcalendar/apis/ufcalendar-fight-api/revisions/9623cc8fb70b?raw)
