# Get competition detail

```http
GET /api/public/v1/competitions/{competitionId}
```

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

Returns one competition and the complete `submissionSpec` clients must use to construct submissions.

## Path parameters

| Parameter | Type | Required | Description |
| :--- | :--- | :---: | :--- |
| `competitionId` | string | Yes | Competition ID returned by [List competitions](./list-competitions.md). |

## Response DTO

```ts
type GetCompetitionResponse = {
  ok: true;
  data: {
    id: string;
    title: string;
    description: string | null;
    capabilities: {
      playground: boolean;
      contributorNetwork: boolean;
      leaderboard: boolean;
    };
    leaderboardPublished: boolean;
    submissionSpec: SubmissionSpec;
  };
};
```

`SubmissionSpec` is a kind-specific object. The examples below expand every field instead of replacing schemas with placeholders. See [Submission spec](../../../reference/submission-spec.md) for field semantics.

## Modular Arithmetic Challenge

### Example request

```bash
curl "https://api.sair.foundation/api/public/v1/competitions/modular-arithmetic-challenge" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

### Complete example response

```json
{
  "ok": true,
  "data": {
    "id": "modular-arithmetic-challenge",
    "title": "Modular Arithmetic Challenge",
    "description": "Submit a pinned model artifact for modular arithmetic evaluation.",
    "capabilities": {
      "playground": true,
      "contributorNetwork": true,
      "leaderboard": false
    },
    "leaderboardPublished": false,
    "submissionSpec": {
      "kind": "model-reference",
      "schema": {
        "type": "object",
        "required": ["modelName", "commitHash"],
        "properties": {
          "modelName": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._-]+/[A-Za-z0-9._-]+$"
          },
          "commitHash": {
            "type": "string",
            "pattern": "^[0-9a-fA-F]{40}$"
          }
        },
        "additionalProperties": false
      },
      "metaSchema": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "maxLength": 5000
          }
        },
        "additionalProperties": false
      },
      "permission": {
        "teamRole": "owner"
      },
      "window": {
        "opensAt": "2026-04-01T00:00:00Z",
        "closesAt": "2026-09-30T23:59:59Z"
      },
      "limits": {
        "maxBytes": null,
        "maxEntries": 3
      }
    }
  }
}
```

## Mathematics Distillation Stage 1

### Example request

```bash
curl "https://api.sair.foundation/api/public/v1/competitions/mathematics-distillation-challenge-equational-theories-stage1" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

### Complete example response

```json
{
  "ok": true,
  "data": {
    "id": "mathematics-distillation-challenge-equational-theories-stage1",
    "title": "Mathematics Distillation Challenge: Equational Theories - Stage 1",
    "description": "Submit a cheatsheet for formal evaluation.",
    "capabilities": {
      "playground": true,
      "contributorNetwork": true,
      "leaderboard": false
    },
    "leaderboardPublished": false,
    "submissionSpec": {
      "kind": "cheatsheet",
      "schema": {
        "type": "object",
        "required": ["content"],
        "properties": {
          "content": {
            "type": "string",
            "minLength": 1
          }
        },
        "additionalProperties": false
      },
      "metaSchema": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "maxLength": 5000
          },
          "contributorNetworkItemId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "permission": {
        "teamRole": "owner"
      },
      "window": {
        "opensAt": "2026-04-01T00:00:00Z",
        "closesAt": "2026-09-30T23:59:59Z"
      },
      "limits": {
        "maxBytes": 10240,
        "maxEntries": 1
      }
    }
  }
}
```

## Mathematics Distillation Stage 2

### Example request

```bash
curl "https://api.sair.foundation/api/public/v1/competitions/mathematics-distillation-challenge-equational-theories-stage2" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

### Complete example response

```json
{
  "ok": true,
  "data": {
    "id": "mathematics-distillation-challenge-equational-theories-stage2",
    "title": "Mathematics Distillation Challenge: Equational Theories - Stage 2",
    "description": "Submit Lean solver source for one competition track.",
    "capabilities": {
      "playground": true,
      "contributorNetwork": true,
      "leaderboard": false
    },
    "leaderboardPublished": false,
    "submissionSpec": {
      "kind": "solver-participation",
      "schema": {
        "type": "object",
        "required": ["track", "modelId", "solverCode"],
        "properties": {
          "track": {
            "type": "string",
            "enum": ["solo", "marathon"]
          },
          "modelId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "enum": ["openai-gpt-oss-120b"]
          },
          "solverCode": {
            "type": "string",
            "minLength": 1
          }
        },
        "additionalProperties": false
      },
      "metaSchema": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "maxLength": 5000
          },
          "contributorNetworkItemId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "permission": {
        "teamRole": "owner"
      },
      "window": {
        "opensAt": "2026-04-01T00:00:00Z",
        "closesAt": "2026-09-30T23:59:59Z"
      },
      "limits": {
        "maxBytes": 10240,
        "maxEntries": 1
      },
      "catalog": {
        "tracks": [
          {
            "id": "solo",
            "label": "Solo"
          },
          {
            "id": "marathon",
            "label": "Marathon"
          }
        ],
        "models": [
          {
            "id": "openai-gpt-oss-120b",
            "name": "OpenAI: GPT OSS 120B"
          }
        ]
      }
    }
  }
}
```

Catalog values are live configuration. Always use the IDs returned by the response rather than hard-coding the example IDs.

## Inverse Galois Problem (IGP24)

### Example request

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

### Complete example response

```json
{
  "ok": true,
  "data": {
    "id": "igp24",
    "title": "Inverse Galois Problem (IGP24)",
    "description": "Submit degree 24 polynomial candidates.",
    "capabilities": {
      "playground": false,
      "contributorNetwork": true,
      "leaderboard": true
    },
    "leaderboardPublished": true,
    "submissionSpec": {
      "kind": "igp24-polynomial",
      "schema": {
        "type": "object",
        "required": ["polynomials"],
        "properties": {
          "polynomials": {
            "type": "array",
            "minItems": 1,
            "maxItems": 1000,
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "metaSchema": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "maxLength": 500
          }
        },
        "additionalProperties": false
      },
      "permission": {
        "teamRole": "activeMember"
      },
      "window": {
        "opensAt": "2026-04-01T00:00:00Z",
        "closesAt": "2026-09-30T23:59:59Z"
      },
      "limits": {
        "maxBytes": 1000000,
        "maxEntries": 1,
        "maxPolynomials": 1000,
        "maxRequestBytes": 1310720
      }
    }
  }
}
```

## Errors

| HTTP | Code | When |
| :---: | :--- | :--- |
| `404` | `NOT_FOUND` | The competition is not active or does not exist. |

See [Errors](../../../errors.md) for the common error envelope.
