---
title: "Get your own state in a tournament"
method: GET
path: "/tournaments/{identifier}/me"
tags: ["Tournament Entry"]
---

# Get your own state in a tournament

`GET /tournaments/{identifier}/me`

Returns the API key owner's own state in one tournament, resolved by slug: the teams they may act for, their teams' entries, invites addressed to those teams, free-agent offers addressed to them, the rosters they are personally on, and their free-agent pool row. Requires tournaments.actor.entry at read or read-write on the key; a read-only grant is enough, since this endpoint performs no writes.

This is the discovery endpoint for the competitor surface. Most competitor write endpoints are keyed by an opaque resource id - `participantId`, `inviteId`, `offerId`, `rosterEntryId` - that is returned here and nowhere else, so call this first.

Every collection is an ARRAY and is returned whole, including terminal rows: withdrawn, denied, removed and disqualified entries, responded invites, and expired, declined or revoked offers. A caller acting for several teams in one tournament has several entries and receives all of them. Do not assume at most one of anything.

No viewability filter is applied, because every field is already keyed to the caller. A tournament still in DRAFT that the caller has been invited to therefore answers 200, which is what makes the invite answerable before the tournament is published. A slug that does not resolve at all answers 404.

Unlike the organizer endpoints this call is billed to the KEY OWNER rather than the tournament host, and is gated on the `writes` API feature (api_pro) rather than on the host's plan - a competitor's integration never depends on the organizer's billing.

## Path parameters

- `identifier` string, required — Tournament slug.

## Response `200`

The caller's state in the tournament.

- MyTournamentEntryResponse — The caller's tournament entry state.
  - `entry` MyTournamentEntry, required — The API key owner's own state in one tournament.
    - `tournamentId` string, required — Tournament ID.
    - `slug` string, required — The tournament's canonical slug. Echoed because the request may have used a stale one that still resolves.
    - `requiredConnectionMissing` boolean, required — True when the game requires a linked external account the caller has not connected. Surfaced so a client can explain a pre-emptive failure instead of discovering it when the free-agency join is rejected.
    - `actableTeams` MyTournamentActableTeam[], required — Every team of the tournament's game that the caller may act for - captain, co-captain, or owner of the team's organization. Includes teams NOT yet entered, which is what makes it the enter/apply candidate list.
      - `teamId` string, required — Team ID.
      - `name` string, required — Team display name.
      - `avatarUrl` string — Team avatar URL.
    - `participants` MyTournamentParticipant[], required — Every entry belonging to one of the caller's teams, in ALL states including terminal ones. An array, never collapsed to a single row: a caller running several teams in one tournament has several entries and needs every participantId.
      - `participantId` string, required — Participant ID. Required by the withdraw and check-in endpoints, and by the organizer roster endpoints.
      - `teamId` string, required — Team ID.
      - `teamName` string, required — Team display name.
      - `teamAvatarUrl` string — Team avatar URL.
      - `status` 'PENDING' | 'APPROVED' | 'DENIED' | 'WITHDRAWN' | 'REMOVED' | 'DISQUALIFIED', required — State of a team's entry. PENDING is an unreviewed application; REMOVED and DISQUALIFIED are organizer actions, WITHDRAWN is the team's own.
      - `seed` integer — Assigned seed, once seeding has run.
      - `checkedInAt` number — Check-in time (epoch milliseconds). Absent until the team checks in.
      - `finalPlacement` integer — Placement persisted at finalization. Present only once the tournament ends.
      - `registeredAt` number, required — Entry time (epoch milliseconds).
      - `canManage` boolean, required — Whether the caller may act on this entry - withdraw, check in, or edit its roster. False for a team the caller is an ordinary member of, which still appears here so a client can show it without offering actions that would 403.
    - `invites` MyTournamentInvite[], required — Every invite addressed to an actable team, in all four states.
      - `inviteId` string, required — Invite ID. Required by the invite-response endpoint.
      - `teamId` string, required — Invited team's ID.
      - `teamName` string, required — Invited team's display name.
      - `status` 'PENDING' | 'ACCEPTED' | 'DECLINED' | 'REVOKED', required — State of a tournament team invite.
      - `invitedByUserId` string, required — Organizer who sent the invite.
      - `createdAt` number, required — Invite time (epoch milliseconds).
      - `respondedAt` number — Response time (epoch milliseconds). Absent while PENDING.
    - `offers` MyTournamentOffer[], required — Every free-agent offer addressed to the caller, in all five states. Filter on `status` for the ones still answerable.
      - `offerId` string, required — Offer ID. Required by the offer-respond and offer-revoke endpoints.
      - `teamId` string, required — Offering team's ID.
      - `teamName` string, required — Offering team's display name.
      - `teamAvatarUrl` string — Offering team's avatar URL.
      - `participantId` string, required — Offering team's participant ID.
      - `offeringParticipantStatus` 'PENDING' | 'APPROVED' | 'DENIED' | 'WITHDRAWN' | 'REMOVED' | 'DISQUALIFIED', required — State of a team's entry. PENDING is an unreviewed application; REMOVED and DISQUALIFIED are organizer actions, WITHDRAWN is the team's own.
      - `status` 'PENDING' | 'ACCEPTED' | 'DECLINED' | 'EXPIRED' | 'REVOKED', required — State of a free-agent offer. EXPIRED is applied lazily, when the offer is next read or responded to, not by a scheduled sweep.
      - `message` string — Optional note from the offering team.
      - `createdAt` number, required — Offer time (epoch milliseconds).
    - `rosterEntries` MyTournamentRosterEntry[], required — Every tournament roster the caller is personally on. More than one is normal - a player can be rostered for several of their own teams.
      - `rosterEntryId` string, required — Roster entry ID. Required by the roster-removal endpoints. This is the caller's OWN roster row - a captain removing a different player reads that id from the participants endpoint instead.
      - `participantId` string, required — Participant whose roster the caller is on.
      - `source` 'TEAM_MEMBER' | 'FREE_AGENT', required — How a player reached a participant's tournament roster.
      - `addedAt` number, required — Time the caller was rostered (epoch milliseconds).
    - `freeAgent` MyTournamentFreeAgent, required — The caller's own free-agent pool row.
      - `freeAgentId` string, required — Free-agent row ID.
      - `status` 'AVAILABLE' | 'PICKED_UP' | 'WITHDRAWN', required — State of the caller's free-agent pool row.
      - `note` string — Free-text note the caller supplied.
      - `pickedUpByParticipantId` string — Participant who picked the caller up. Present only when PICKED_UP.
      - `createdAt` number, required — Pool join time (epoch milliseconds).
  - `timestamp` string, required — Response generation time (ISO 8601).

## Other responses

- `401` — Missing or invalid API key.
- `403` — API key lacks the required permission.
- `404` — Resource not found.
- `429` — Rate limited.
- `500` — Internal server error.

---

[API](https://skmtc.net/teambattles/apis/teambattles-api.md) · [All operations](https://skmtc.net/teambattles/apis/teambattles-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/teambattles/teambattles-api/versions/2ffe8fb53b7d/schema)
