# Get a submission by ID

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

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

Returns one visible submission record. The response union is selected by `kind`.

## Path parameters

| Parameter | Type | Required | Description |
| :--- | :--- | :---: | :--- |
| `competitionId` | string | Yes | Competition ID. |
| `submissionId` | string | Yes | Opaque ID returned by a submission write or collection read. |

## Response DTO

```ts
type GetSubmissionResponse = {
  ok: true;
  data: SubmissionDto;
};
```

See [Submission record DTOs](../../../reference/submission-kinds.md#submission-record-dtos) for the complete named union.

## Modular Arithmetic Challenge

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

```json
{
  "ok": true,
  "data": {
    "submissionId": "sub_01JMAC00000000000000000002",
    "competitionId": "modular-arithmetic-challenge",
    "kind": "model-reference",
    "slot": 2,
    "payload": {
      "modelName": "your-team/your-model",
      "commitHash": "0123456789abcdef0123456789abcdef01234567"
    },
    "meta": {
      "description": "Pinned model revision for official evaluation."
    },
    "createdAt": "2026-05-18T12:34:56Z",
    "updatedAt": "2026-05-20T08:11:02Z"
  }
}
```

## Mathematics Distillation Stage 1

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

```json
{
  "ok": true,
  "data": {
    "submissionId": "sub_01JSTAGE100000000000000001",
    "competitionId": "mathematics-distillation-challenge-equational-theories-stage1",
    "kind": "cheatsheet",
    "payload": {
      "content": "When the equation has a neutral element, test substitutions that preserve it before expanding the search."
    },
    "meta": {
      "description": "Playground-tested cheatsheet.",
      "contributorNetworkItemId": "cn_01JSTAGE100000000000000001"
    },
    "createdAt": "2026-05-18T12:34:56Z",
    "updatedAt": "2026-05-18T12:34:56Z"
  }
}
```

## Mathematics Distillation Stage 2

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

```json
{
  "ok": true,
  "data": {
    "submissionId": "sub_01JSTAGE200000000000000001",
    "competitionId": "mathematics-distillation-challenge-equational-theories-stage2",
    "kind": "solver-participation",
    "payload": {
      "track": "solo",
      "modelId": "openai-gpt-oss-120b",
      "solverCode": "import Mathlib\n\nexample (n : Nat) : n = n := by\n  rfl"
    },
    "meta": {
      "description": "Solo solver.",
      "contributorNetworkItemId": "cn_01JSTAGE200000000000000001"
    },
    "createdAt": "2026-05-18T12:34:56Z",
    "updatedAt": "2026-05-18T12:34:56Z"
  }
}
```

## Inverse Galois Problem (IGP24)

Submitted coefficient strings are omitted from JSON reads. Use the download endpoint to retrieve them.

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

```json
{
  "ok": true,
  "data": {
    "submissionId": "sub_01JIGP24000000000000000001",
    "competitionId": "igp24",
    "kind": "igp24-polynomial",
    "payload": {
      "queuedPolynomials": []
    },
    "meta": {
      "description": "Search batch 12."
    },
    "verifiedPolynomials": [
      {
        "polynomialIndex": 0,
        "status": "accepted",
        "label": "24T25000",
        "t": 25000,
        "r": 1,
        "scoreable": true,
        "scoringStatus": "scoreable",
        "inBaseline": false,
        "baselineUnlocked": true,
        "baselineDiscAbs": "19342813113834066795298816",
        "fieldDiscAbs": "1822477585834316228120576",
        "discSource": "exact_nfdisc"
      }
    ],
    "failedPolynomials": [],
    "createdAt": "2026-05-18T12:34:56Z",
    "updatedAt": "2026-05-18T12:40:03Z"
  }
}
```

## Errors

| HTTP | Code | When |
| :---: | :--- | :--- |
| `404` | `NOT_FOUND` | The record does not exist, belongs to another competition, or is not visible to the caller. |

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