# Get leaderboard entry

```http
GET /api/public/v1/competitions/lean-kernel-challenge/leaderboard/entries/{submissionId}
```

**Scope**: none. No authentication is required.

Returns the per-group, per-Case, and per-replay measurements for one accepted entry in the currently served frozen snapshot. The entry must still belong to an eligible entrant.

## Parameters

| Parameter | In | Type and meaning |
| :--- | :--- | :--- |
| `submissionId` | path | Positive integer value from a leaderboard row's string `submissionId`. |
| `problem` | query | **Required string.** Problem containing that row. |

## Example request

```bash
curl \
  "https://api.sair.foundation/api/public/v1/competitions/lean-kernel-challenge/leaderboard/entries/7?problem=fib"
```

## Response fields

| Field | Type and meaning |
| :--- | :--- |
| `day` | Completed evaluation day; compare with the list's `meta.batchId`. |
| `boundaryAt` | Snapshot submission boundary. |
| `problem` | Requested Problem ID. |
| `submissionId` | Positive JSON integer. |
| `groupResults` | Groups ordered hardest first. |
| `groupResults[].groupId` | Public group ID. |
| `groupResults[].groupLabel` | Recorded label; it can be empty for an older result. |
| `groupResults[].perRepetitionLimitSeconds` | Optional positive watchdog duration. |
| `groupResults[].caseResults` | Recorded Cases in ascending Case order. |
| `caseResults[].caseIndex` | Optional recorded Case index. |
| `caseResults[].result` | Optional Case outcome. |
| `caseResults[].medianInstructions` | Optional decimal integer string. |
| `caseResults[].medianWallTimeMs` | Optional diagnostic wall time. |
| `caseResults[].maxPeakMemoryBytes` | Optional recorded Case peak in bytes. |
| `caseResults[].replays` | Optional replay array. Each replay can contain `instructions`, `wallTimeMs`, and `peakMemoryBytes`. |

## Example response

```json
{
  "ok": true,
  "data": {
    "day": "2026-09-01",
    "boundaryAt": "2026-09-01T01:00:00Z",
    "problem": "fib",
    "submissionId": 7,
    "groupResults": [
      {
        "groupId": "F5",
        "groupLabel": "Frontier",
        "perRepetitionLimitSeconds": 120,
        "caseResults": [
          {
            "caseIndex": 0,
            "medianInstructions": "52817756",
            "maxPeakMemoryBytes": 1610612736,
            "replays": [
              {
                "instructions": "52810576",
                "peakMemoryBytes": 1560281088
              }
            ]
          }
        ]
      }
    ]
  }
}
```

There is no snapshot selector. If the current completed day changes between the list and detail requests, compare `day`, `problem`, and `submissionId` and refresh the list when they no longer match. Successful responses use `Content-Type: application/json`.

## Errors

| HTTP | Code | When |
| :---: | :--- | :--- |
| `400` | `INVALID_REQUEST` | `problem` is missing. |
| `404` | `DISCOVERY_NOT_LAUNCHED` | Public discovery is not open. |
| `404` | `NOT_FOUND` | The ID is invalid, the row is not on the current public snapshot, or the entrant is no longer eligible. |
| `502` | `PLATFORM_UNAVAILABLE` | Current publication or entrant eligibility cannot be read. |
| `502` | `SERVICE_UNAVAILABLE` | The detail service is unavailable or returns an invalid response. |

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