---
title: "Every season, newest first"
method: GET
path: "/seasons"
tags: ["Seasons"]
---

# Every season, newest first

`GET /seasons`

## Request

- Base URL: `https://kellian.app/api/v1`
- URL: `https://kellian.app/api/v1/seasons`
- Auth: none required

## Response `200`

Success

- SeasonsListResponse
  - `seasons` SeasonSummary[], required
    - `id` string, required
    - `number` integer, required
    - `name` string, required
    - `status` 'scheduled' | 'open' | 'closed' | 'frozen', required: scheduled → open → closed → frozen. `closed` means calls no longer attribute to it; `frozen` means the standings are written and stand.
    - `opensAt` union, required
      - string, date-time
      - string
    - `closesAt` union, required: Exclusive. A call filled at this instant belongs to no season.
      - string, date-time
      - string
    - `frozenAt` union, required
      - string, date-time
      - string
    - `rulesetHash` string, required: keccak256 of the canonical ruleset. Immutable once the season opens, so the archive can always say which rules a standing was scored under.
    - `rulesetVersion` string, required
    - `counterWindowEndsAt` union, required: Denormalised from `opensAt` at charter: a published methodology whose window moved later is not a methodology.
      - string, date-time
      - string

## Other responses

- `429`: Error: one of RATE_LIMITED
- `500`: Error: one of INTERNAL_ERROR
- `default`: Error response (RFC 9457 Problem Details for HTTP APIs)

---

[API](https://skmtc.dev/problee/apis/kellian-consumer-api.md) · [All operations](https://skmtc.dev/problee/apis/kellian-consumer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/problee/apis/kellian-consumer-api/revisions/2b8254b0ec57?raw)
