# GET /v2/leagues/{id}/calendar

Group: Leagues

The UTC days of a league season that have fixtures, with how many — to build a season calendar or jump to a matchday (/v2/fixtures?date=&league=). Since 2026-11-04.

Note: Oldest day first. Reschedules move a fixture to another day within a day (the list is refreshed daily).

## Parameters

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `id` | path | yes | our numeric id (positive integer) |
| `season` | query | yes | a season id from /v2/leagues/{id}/seasons |

## Response

- `data`: `SeasonDay[]`
- `meta`: season, count (days), fixtureCount (their sum)
- Objects: SeasonDay (https://sportsapi.app/markdown/en/reference.md#seasonday)

## Errors

- 403 history_not_in_plan — the season ended before your plan’s history
- 404 not_found — season is not one of this league’s seasons

Plus the common errors (https://sportsapi.app/markdown/en/docs.md#errors).

## Request

cURL:

```bash
curl -H "Authorization: Bearer sk_live_…" \
    "https://api.sportsapi.app/v2/leagues/{id}/calendar?season=…"
```

TypeScript:

```ts
const { data, meta } = await client.leagues.calendar(id, { season });
```

Python:

```python
res = client.leagues.calendar(id, season=season)
```

Go:

```go
res, err := client.Leagues.Calendar(ctx, id, &sportsapi.LeaguesCalendarParams{Season: season})
```

CLI:

```bash
$ sportsapi leagues calendar <id> --season <season>
```

## Example response

```json
{ "data": [ { "date": "2026-08-21", "fixtureCount": 1 }, { "date": "2026-08-22", "fixtureCount": 5 }, … ], "meta": { "season": 200386, "count": 112, "fixtureCount": 380 } }
```

---

Base URL: https://api.sportsapi.app. Send your API key as `Authorization: Bearer <key>` on every /v2 request; keys are created in the dashboard (https://sportsapi.app/dashboard).
HTML: https://sportsapi.app/docs/leagues/calendar · All docs: https://sportsapi.app/markdown/en/docs.md
