# Get competition detail

```http
GET /api/public/v1/competitions/lean-kernel-challenge
```

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

Returns stable competition metadata and high-level feature flags. Use this response to choose the next competition-scoped read; it does not report caller eligibility, the live Playground write state, or the complete Lean source contract.

## Example request

```bash
export SAIR_API_BASE="https://api.sair.foundation/api/public/v1"

curl "$SAIR_API_BASE/competitions/lean-kernel-challenge" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

## Example response

The title, description, and publication flags below illustrate the response shape. Use the values returned by the live endpoint.

```json
{
  "ok": true,
  "data": {
    "id": "lean-kernel-challenge",
    "title": "Lean Kernel Challenge",
    "description": "Verified Lean 4 kernel computation.",
    "capabilities": {
      "playground": true,
      "contributorNetwork": true,
      "leaderboard": false
    },
    "leaderboardPublished": false,
    "leaderboardTeamDetailsEnabled": false,
    "submissionSpec": {
      "kind": "lean-kernel-package"
    }
  }
}
```

## Response fields

| Field | Type and meaning |
| :--- | :--- |
| `id` | `string` — Stable competition ID used in Lean Kernel competition routes. |
| `title` | `string` — Display title. |
| `description` | `string \| null` — Competition description, when configured. |
| `capabilities.playground` | `boolean` — Whether the competition-level Playground feature is enabled. This is not the live write state. |
| `capabilities.contributorNetwork` | `boolean` — Whether this competition supports `lean-kernel-package` Contributor Network items. This does not indicate the caller's publication eligibility or remaining capacity. |
| `capabilities.leaderboard` | `boolean` — Whether the official leaderboard is currently published and publicly readable. |
| `leaderboardPublished` | `boolean` — Explicit official leaderboard publication state. It currently matches `capabilities.leaderboard`. |
| `leaderboardTeamDetailsEnabled` | `boolean` — Whether a published leaderboard may include the [`teamDetails` projection](../../competitions.md#leaderboard-team-details-and-privacy). An individual entry may still return `teamDetails: null` under the applicable privacy rules. |
| `submissionSpec` | `object` — Competition-level submission discriminator. Lean Kernel returns only `kind`; read the dedicated submission-spec endpoint for the complete contract. |
| `submissionSpec.kind` | `string` — Formal submission kind. Lean Kernel returns `lean-kernel-package`. |

## Choose the next read

| Need | Endpoint |
| :--- | :--- |
| Current Problems, names, availability, and official workspaces | [List problems](./list-problems.md) |
| Formal source shape, limits, rules, and opaque `contractVersion` | [Get submission spec](./get-submission-spec.md) |
| Caller enrollment, current team, formal-submission eligibility, and Contributor Network capacity | [Get my participation](./get-my-participation.md) |
| Authoritative Playground state and opening or closing timestamps | [Get Playground lifecycle](./get-playground-lifecycle.md) |

`capabilities.playground: true` means the feature is configured, not that new Solutions or Runs are currently accepted. Read the lifecycle endpoint before a Playground write. Likewise, do not infer formal-submission eligibility or leaderboard publication from dates; use the explicit participant and publication fields.

## Errors

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

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