# List my submissions

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

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

Returns one collection shape for every competition. The meaning of `items` is selected by the competition's submission kind.

## Parameters

| Parameter | Location | Type | Required | Description |
| :--- | :--- | :--- | :---: | :--- |
| `competitionId` | path | string | Yes | Competition ID. |
| `cursor` | query | string | IGP24 only | Opaque history cursor. |
| `limit` | query | integer | IGP24 only | History page size. Default `25`, maximum `100`. |

## Response DTO

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

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

## Modular Arithmetic Challenge

Returns the occupied slots ordered by `slot`. Empty slots are not represented by placeholder objects.

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

```json
{
  "ok": true,
  "data": {
    "items": [
      {
        "submissionId": "sub_01JMAC00000000000000000001",
        "competitionId": "modular-arithmetic-challenge",
        "kind": "model-reference",
        "slot": 1,
        "payload": {
          "modelName": "your-team/model-a",
          "commitHash": "0123456789abcdef0123456789abcdef01234567"
        },
        "meta": {
          "description": "Primary model."
        },
        "createdAt": "2026-05-18T12:34:56Z",
        "updatedAt": "2026-05-20T08:11:02Z"
      },
      {
        "submissionId": "sub_01JMAC00000000000000000002",
        "competitionId": "modular-arithmetic-challenge",
        "kind": "model-reference",
        "slot": 3,
        "payload": {
          "modelName": "your-team/model-c",
          "commitHash": "89abcdef0123456789abcdef0123456789abcdef"
        },
        "meta": {},
        "createdAt": "2026-05-19T09:00:00Z",
        "updatedAt": "2026-05-19T09:00:00Z"
      }
    ],
    "nextCursor": null
  }
}
```

## Mathematics Distillation Stage 1

Returns zero or one current cheatsheet.

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

```json
{
  "ok": true,
  "data": {
    "items": [
      {
        "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"
      }
    ],
    "nextCursor": null
  }
}
```

## Mathematics Distillation Stage 2

Returns every current track entry.

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

```json
{
  "ok": true,
  "data": {
    "items": [
      {
        "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"
      },
      {
        "submissionId": "sub_01JSTAGE200000000000000002",
        "competitionId": "mathematics-distillation-challenge-equational-theories-stage2",
        "kind": "solver-participation",
        "payload": {
          "track": "marathon",
          "modelId": "openai-gpt-oss-120b",
          "solverCode": "import Mathlib\n\nexample (a b : Nat) : a + b = b + a := by\n  omega"
        },
        "meta": {
          "description": "Marathon solver."
        },
        "createdAt": "2026-05-19T12:34:56Z",
        "updatedAt": "2026-05-19T12:34:56Z"
      }
    ],
    "nextCursor": null
  }
}
```

## Inverse Galois Problem (IGP24)

Returns submission history newest first and supports `cursor` and `limit`.

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

```json
{
  "ok": true,
  "data": {
    "items": [
      {
        "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"
      }
    ],
    "nextCursor": "eyJhZnRlciI6WzEwNDIsInN1Yl8wMUpJR1AyNDAwMDAwMDAwMDAwMDAwMDAwMSJdfQ"
  }
}
```

## Empty collection

Every competition returns the same complete empty shape:

```json
{
  "ok": true,
  "data": {
    "items": [],
    "nextCursor": null
  }
}
```

## Errors

| HTTP | Code | When |
| :---: | :--- | :--- |
| `400` | `MALFORMED_BODY` | An IGP24 cursor is invalid. |
| `422` | `RESOURCE_FIELD_INVALID` | An IGP24 `limit` is not an integer from `1` through `100`. |

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