---
title: "List tournament team invites"
method: GET
path: "/tournaments/{identifier}/invites"
tags: ["Tournament: Staff & Invites"]
---

# List tournament team invites

`GET /tournaments/{identifier}/invites`

Returns every team invite issued for the tournament, resolved by slug, in all four states. Re-inviting a team reuses that team's existing row rather than appending a new one, so there is exactly one invite per team and its `status` is the current state. Reading requires tournaments.tournament_admin:read on the key AND that the caller manages the tournament (host, tournament ADMIN, or tournament MODERATOR); sending and revoking invites requires ADMIN. Tournament API access is gated at api_pro on the tournament HOST OWNER's personal developer plan. An organization holding a consumer subscription does not satisfy this - the developer plan ladder has no organization arm.

## Path parameters

- `identifier` string, required — Tournament slug.

## Response `200`

Tournament team invites.

- TournamentInvitesResponse — Tournament team invites.
  - `invites` TournamentInvite[], required — Every invite row on the tournament in creation order, in all four states. Filter on `status` for the outstanding ones.
    - `id` string, required — Invite ID.
    - `teamId` string, required — Invited team's ID.
    - `teamName` string, required — Invited team's display name.
    - `teamAvatarUrl` string, nullable — Invited team's avatar URL.
    - `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.
  - `count` integer, required — Number of invites returned.
  - `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)
