# Get my standing

```http
GET /api/public/v1/competitions/modular-arithmetic-challenge/leaderboard/me
```

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

Returns the caller's active team's standing and all of that team's official slot outcomes from the latest published Modular Arithmetic evaluation batch. The ranked `entry` uses the same fields as [Get leaderboard](./get-leaderboard.md); `slots` also includes the team's ineligible and failed outcomes from that batch.

Any active team member may call this endpoint. Team ownership is not required.

## Access and snapshot behavior

- The caller's team is resolved from active membership at request time. Leaving a team removes access to that team's private slot outcomes; joining another team changes which team is resolved.
- `entry`, `slots`, and `batch` always refer to one latest published batch. A new request may move to a newer published batch; this endpoint has no historical-batch selector.
- Slot outcomes are immutable batch snapshots, not the team's current formal-submission slots. Replacing or deleting a formal slot after the batch snapshot does not change this response.
- Only publicly visible active or closed competitions are readable. A draft competition returns `404 NOT_FOUND`, even if it is accepting submissions.

## Response fields

| Field | Type | Always present | Description |
| :--- | :--- | :---: | :--- |
| `published` | boolean | Yes | Whether an official leaderboard batch is publicly available in this response. |
| `publishedAt` | string \| null | Yes | ISO 8601 time at which the Competition leaderboard was made public; non-null exactly when `published` is `true`. |
| `batch` | [`ModularArithmeticOfficialBatch`](./get-leaderboard.md#modulararithmeticofficialbatch) \| null | Yes | Immutable official batch used for both `entry` and `slots`; non-null exactly when `published` is `true`. |
| `entry` | [`ModularArithmeticLeaderboardEntry`](./get-leaderboard.md#modulararithmeticleaderboardentry) \| null | Yes | Ranked row for the caller's active team in `batch`, or `null` when the caller has no active team or that team has no eligible result. |
| `slots` | [`ModularArithmeticSlotResult`](#modulararithmeticslotresult)[] | Yes | Every official entry captured for the caller's active team in `batch`, ordered by `slot` ascending. Empty when unpublished, when the caller has no active team, or when that team has no entry in the batch. |

When present, `entry` has exactly the same field semantics as a leaderboard list item, including:

- `score = overallAccuracy`;
- every tied team-best entry in `bestEntries`;
- an `entryId` that can be passed to [Get a leaderboard entry](./get-leaderboard-entry.md);
- the always-present nullable, live [`teamDetails`](../../competitions.md#leaderboard-team-details-and-privacy) projection.

### `ModularArithmeticSlotResult`

One immutable outcome per formal slot captured for the caller's team in the published batch. An outcome can remain here after the corresponding current formal slot is replaced or deleted.

A published batch contains only terminal evaluations with final ranking decisions. Pending or running evaluations and pending review decisions are never exposed here.

| Field | Type | Always present | Description |
| :--- | :--- | :---: | :--- |
| `entryId` | string | Yes | Opaque, immutable official entry ID. Only eligible entries can be resolved by [Get a leaderboard entry](./get-leaderboard-entry.md). |
| `formalSubmissionId` | string | Yes | Opaque formal submission ID captured by the batch. |
| `slot` | integer | Yes | One-based formal slot captured by the batch. |
| `repository` | string | Yes | Evaluated Hugging Face repository in `owner/name` form. |
| `commitSha` | string | Yes | Evaluated commit SHA. This is the snapshot-time revision and may differ from the team's current submission if it was updated after the batch snapshot. |
| `formalSubmittedAt` | string | Yes | ISO 8601 UTC time of the captured formal submission. |
| `artifactStatus` | enum | Yes | `valid`, `unavailable`, or `invalid`. |
| `officialCheckStatus` | enum | Yes | `pending`, `passed`, `rejected`, or `failed`. |
| `evaluationStatus` | enum | Yes | `completed` or `failed`. A batch cannot be published while an entry is pending or running. |
| `reviewStatus` | enum | Yes | Final review decision: `compliant` or `non_compliant`. A compliant entry is eligible; a non-compliant entry is ineligible. |
| `rankingEligibility` | enum | Yes | `eligible` or `ineligible`. A batch cannot be published while an entry's decision is pending. |
| `timedOut` | boolean | Yes | Whether the authoritative official result was marked as timed out. |
| `inferenceTimeMs` | integer \| null | Yes | Recorded inference duration in milliseconds, or `null` when none was recorded. |
| `terminalErrorClass` | string \| null | Yes | Stable machine-classified terminal condition, or `null` when none was recorded. Raw error text is never returned. |
| `contestantMessage` | string \| null | Yes | Message from the latest organizer review intended for the team, or `null` when no message is available. |
| `highestTierAbove90` | integer \| null | Yes | Highest completed T1–T10 tier with at least 90% accuracy, or `-1` when none reached the threshold. Non-null only when `rankingEligibility` is `eligible`. |
| `overallAccuracy` | number \| null | Yes | Mean accuracy across T1–T10 in the `[0, 1]` range; an incomplete tier contributes `0`. Non-null only when `rankingEligibility` is `eligible`. |

Semantics:

- `slots` only reflects entries frozen into the latest published batch. It is not a current-slot inventory; use [List my submissions](./list-my-submissions.md) for current slots.
- Scores (`highestTierAbove90`, `overallAccuracy`) are never returned for ineligible entries, even if an earlier evaluation produced provisional metrics.
- Tier-level accuracy is not included here; fetch it per eligible entry via [Get a leaderboard entry](./get-leaderboard-entry.md).

## Privacy boundary

`slots` is private to the caller's current active team. Use `contestantMessage` for any organizer feedback intended for your team. Official evaluation cases and answers are not included.

The `teamDetails` inside a ranked `entry` remains the same current, consent-gated public projection used by the leaderboard. It can be `null` even for the caller's own team and never contains member IDs, roles, or full user objects.

## Example request

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

## Example response

```json
{
  "ok": true,
  "data": {
    "published": true,
    "publishedAt": "2026-08-14T03:00:00Z",
    "batch": {
      "id": "mcb_3c0a9d2f1e8b4a6f9d7c2b5e8a1d4f6c",
      "problemSetId": "candidate-a-review",
      "problemSetLabel": "A",
      "problemSetSha256": "762a9ee2fb0f40ff205ebcca02526751d7cfcd9df856d1dae74add1768d75334",
      "caseCount": 1100,
      "specCommit": "99cac6ef5c2f82e53105ec0ddcbb9b8d37bf6fca",
      "scoringVersion": "mac-score-v1"
    },
    "entry": {
      "rank": 2,
      "teamId": "teamv2_0e52064c5e864ffd9f4e7532f4de63d0",
      "teamNumber": "MAC-T00001",
      "teamName": "Example Team",
      "score": 0.91,
      "highestTierAbove90": 7,
      "overallAccuracy": 0.91,
      "bestEntries": [
        {
          "entryId": "mce_3f7a52b902c54f0d9eb416a99d0992ce",
          "formalSubmissionId": "sub_7b91f430fe2e48b9bb2b6dfc65bce386",
          "slot": 1,
          "repository": "example-team/modular-model",
          "commitSha": "abcdef0123456789abcdef0123456789abcdef01",
          "timedOut": false
        }
      ],
      "teamDetails": {
        "members": [
          {
            "name": "Alice Example"
          }
        ]
      }
    },
    "slots": [
      {
        "entryId": "mce_3f7a52b902c54f0d9eb416a99d0992ce",
        "formalSubmissionId": "sub_7b91f430fe2e48b9bb2b6dfc65bce386",
        "slot": 1,
        "repository": "example-team/modular-model",
        "commitSha": "abcdef0123456789abcdef0123456789abcdef01",
        "formalSubmittedAt": "2026-07-20T12:34:56Z",
        "artifactStatus": "valid",
        "officialCheckStatus": "passed",
        "evaluationStatus": "completed",
        "reviewStatus": "compliant",
        "rankingEligibility": "eligible",
        "timedOut": false,
        "inferenceTimeMs": 1240,
        "terminalErrorClass": null,
        "contestantMessage": null,
        "highestTierAbove90": 7,
        "overallAccuracy": 0.91
      },
      {
        "entryId": "mce_8d4c6b1a2f3e4d5c8b7a6f5e4d3c2b1a",
        "formalSubmissionId": "sub_6c80f3d9e1a2b4c5d6e7f8a9b0c1d2e3f",
        "slot": 2,
        "repository": "example-team/modular-model-b",
        "commitSha": "1234567890abcdef1234567890abcdef12345678",
        "formalSubmittedAt": "2026-07-21T09:00:00Z",
        "artifactStatus": "valid",
        "officialCheckStatus": "passed",
        "evaluationStatus": "completed",
        "reviewStatus": "non_compliant",
        "rankingEligibility": "ineligible",
        "timedOut": false,
        "inferenceTimeMs": null,
        "terminalErrorClass": null,
        "contestantMessage": "This submission did not pass compliance review. Please contact organizers if you have questions.",
        "highestTierAbove90": null,
        "overallAccuracy": null
      }
    ]
  }
}
```

## Publication and empty states

The response has two publication states:

- `published: false` always has `publishedAt: null`, `batch: null`, `entry: null`, and empty `slots`.
- `published: true` always has a non-null `publishedAt` and `batch`. `entry` may still be `null`, and `slots` may still be empty.

The endpoint returns the unpublished state when the leaderboard publication switch is off or no published official batch exists. A switch without a published batch must not produce a partially published response.

With `published: true`, `entry` is `null` when either of the following is true:

- the caller has no active Competition Team for this competition;
- the caller's active team has no completed, eligible result in `batch`.

With `published: true`, `slots` is empty when either of the following is true:

- the caller has no active Competition Team for this competition;
- the caller's active team has no official entry in `batch`.

```json
{
  "ok": true,
  "data": {
    "published": false,
    "publishedAt": null,
    "batch": null,
    "entry": null,
    "slots": []
  }
}
```

The unpublished response reveals no batch, result, team, model reference, review message, or member projection.

## Errors

| Status | Code | When |
| :---: | :--- | :--- |
| `404` | `NOT_FOUND` | The competition does not exist or is not publicly visible as active or closed. |

See [Errors](../../../errors.md) for authentication, scope, rate-limit, and standard error-envelope behavior.
