# Get my standing

```http
GET /api/public/v1/competitions/igp24/leaderboard/me
```

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

Returns the frozen official leaderboard row for the caller's IGP24 deadline team, together with the leaderboard publication state. It never uses a team the caller joins after the official deadline and never includes post-event validation or Discovery-only results.

Every member recorded for the same deadline team receives the same public standing. An owner role and current active-team membership are not required. This read does not create a team or change membership.

## Response fields

| Field | Type | Description |
| :--- | :--- | :--- |
| `entry` | [Leaderboard entry](./get-leaderboard.md#igp24leaderboardentry) \| null | The deadline team's published participant row, or `null` when no public standing is available. |
| `meta.published` | boolean | Whether the frozen official IGP24 leaderboard is public. |
| `meta.publishedAt` | string \| null | ISO 8601 UTC publication time; non-null exactly when `meta.published` is `true`. |

A non-null `entry` has exactly the same rank, score, scoreable-pair count, identity, and public display fields as the matching item from [Get leaderboard](./get-leaderboard.md). Its `entryKind` is always `participant`; this endpoint never returns the LMFDB baseline row.

`teamName`, `teamNumber`, and `teamDetails` are current public display projections. They may change without changing the frozen rank or score. `teamDetails` is always present inside a non-null entry but may be `null`, even for the caller's own team; see the shared [privacy rules](../../competitions.md#leaderboard-team-details-and-privacy).

## Standing behavior

The combination of `entry` and `meta.published` distinguishes publication state:

| State | `entry` | `meta.published` |
| :--- | :---: | :---: |
| Official results are not public | `null` | `false` |
| Results are public, but the caller has no recorded deadline team | `null` | `true` |
| Results are public, but the deadline team has no positive official score | `null` | `true` |
| Results are public and the deadline team is ranked | Leaderboard entry | `true` |

The two published `entry: null` cases intentionally share the same response. Use [Get my participation](./get-my-participation.md) when the client also needs the caller's enrollment and deadline-team context; do not infer participation from a missing standing.

Joining, leaving, or switching an active team after the deadline does not change which official row this endpoint resolves. Post-event eligibility or disqualification also does not rewrite the frozen official result.

The endpoint remains readable while IGP24 is publicly visible, including after the competition status changes to closed. A draft competition is not publicly visible and returns `404 NOT_FOUND`.

## Example request

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

## Published response

```json
{
  "ok": true,
  "data": {
    "entry": {
      "rank": 7,
      "entryKind": "participant",
      "teamId": "teamv2_a7a863ce80e6447881ad068bab82498e",
      "teamNumber": "IGP24-T00007",
      "teamName": "Galois Wranglers",
      "score": 4.7321,
      "scoreablePairs": 12,
      "teamDetails": {
        "members": [
          {
            "name": "Alice Example"
          }
        ]
      }
    },
    "meta": {
      "published": true,
      "publishedAt": "2026-08-18T12:00:00Z"
    }
  }
}
```

## Published response without a standing

```json
{
  "ok": true,
  "data": {
    "entry": null,
    "meta": {
      "published": true,
      "publishedAt": "2026-08-18T12:00:00Z"
    }
  }
}
```

## Unpublished response

```json
{
  "ok": true,
  "data": {
    "entry": null,
    "meta": {
      "published": false,
      "publishedAt": null
    }
  }
}
```

The unpublished response exposes no rank, score, team identity, or member projection.

## Errors

| HTTP | Code | When |
| :---: | :--- | :--- |
| `404` | `NOT_FOUND` | IGP24 does not exist or is not publicly visible as active or closed. |
| `503` | `IGP24_SERVICE_UNAVAILABLE` | The frozen official leaderboard service is temporarily unavailable. |

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