---
title: "Accept a team invitation"
method: PATCH
path: "/teams/{key}/invites/{inviteId}"
tags: ["Team Invites"]
---

# Accept a team invitation

`PATCH /teams/{key}/invites/{inviteId}`

Accept a pending team invitation using the secure token. Team key can be ID or slug. This deletes the invitation and creates an active TeamMember record. Returns the newly created team member.

## Path parameters

- `key` string, required — Team identifier (ID or slug)
- `inviteId` string, required — Team invite ID to accept

## Request body

- object
  - `token` string, required — Secure token used to accept the team invite. This token must match the one sent in the invitation email.

## Response `200`

OK

- object
  - `member` object, required — Active team member with base permissions. Permissions can be overridden per promoter or venue. Created when a user accepts an invitation or is directly added to a team.
    - `id` string, required — Unique identifier for the team member
    - `createdAt` string, date-time, required — Timestamp in ISO 8601 format when the member was created
    - `updatedAt` string, date-time, required — Timestamp in ISO 8601 format when the member was last updated
    - `teamId` string, required — Team this member belongs to
    - `userId` string, required — User ID of the team member
    - `user` object, required — Denormalized user details for quick access without additional queries.
      - `id` string, required — Unique identifier of the user
      - `email` string, email, required — Email address of the user
      - `firstName` string, required — First name of the user
      - `lastName` string, required — Last name of the user
      - `imageUrl` string — Profile image URL of the user
    - `permissions` string[] — Base permissions across the team. Can be overridden per promoter or venue. Undefined means no base permissions (permissions come from PermissionScope only).
    - `roleIds` string[] — Role IDs assigned to this team member. Effective permissions are derived from role nodes plus explicit permission nodes.
    - `isOwner` boolean, required — Whether this member is the owner of the team. Only one owner per team is allowed. Owner has full control and cannot be deleted.
    - `access` object — Promoter access summary. Omitted only for legacy/no-access records.
      - `promoterIds` string[], nullable, required — Null means team-wide promoter access. An array means access is restricted to those promoters.
    - `tenantId` string, required — Tenant ID for multi-tenant isolation

## Other responses

- `400` — 400
- `401` — 401
- `403` — 403
- `404` — 404
- `409` — 409
- `412` — 412
- `422` — 422
- `429` — 429
- `500` — 500
- `501` — 501
- `503` — 503

---

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