# List competitions

```http
GET /api/public/v1/competitions
```

**Scope**: `competition.read`.

Returns the active competitions visible through the Public API. The endpoint is cursor-paginated.

## Query parameters

| Parameter | Type | Required | Default | Description |
| :--- | :--- | :---: | :--- | :--- |
| `cursor` | string | No | — | Opaque cursor from the previous `nextCursor`. |
| `limit` | integer | No | `25` | Page size from `1` through `100`. |

## Response DTO

```ts
type ListCompetitionsResponse = {
  ok: true;
  data: {
    items: CompetitionSummary[];
    nextCursor: string | null;
  };
};

type CompetitionSummary = {
  id: string;
  title: string;
  submissionKind: "cheatsheet" | "igp24-polynomial" | "model-reference" | "solver-participation";
  capabilities: {
    playground: boolean;
    contributorNetwork: boolean;
    leaderboard: boolean;
  };
};
```

## Example request

```bash
curl "https://api.sair.foundation/api/public/v1/competitions?limit=25" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

## Complete example response

```json
{
  "ok": true,
  "data": {
    "items": [
      {
        "id": "igp24",
        "title": "Inverse Galois Problem (IGP24)",
        "submissionKind": "igp24-polynomial",
        "capabilities": {
          "playground": false,
          "contributorNetwork": true,
          "leaderboard": true
        }
      },
      {
        "id": "mathematics-distillation-challenge-equational-theories-stage1",
        "title": "Mathematics Distillation Challenge: Equational Theories - Stage 1",
        "submissionKind": "cheatsheet",
        "capabilities": {
          "playground": true,
          "contributorNetwork": true,
          "leaderboard": false
        }
      },
      {
        "id": "mathematics-distillation-challenge-equational-theories-stage2",
        "title": "Mathematics Distillation Challenge: Equational Theories - Stage 2",
        "submissionKind": "solver-participation",
        "capabilities": {
          "playground": true,
          "contributorNetwork": true,
          "leaderboard": false
        }
      },
      {
        "id": "modular-arithmetic-challenge",
        "title": "Modular Arithmetic Challenge",
        "submissionKind": "model-reference",
        "capabilities": {
          "playground": true,
          "contributorNetwork": true,
          "leaderboard": false
        }
      }
    ],
    "nextCursor": null
  }
}
```

`capabilities.leaderboard` reflects publication state and may change from `false` to `true` without changing the DTO.

## Errors

See [Errors](../../../errors.md) for authentication, scope, cursor, and rate-limit errors.
