---
title: "Accept Invitation"
method: POST
path: "/api/v1/invitations/accept"
tags: ["authed"]
---

# Accept Invitation

`POST /api/v1/invitations/accept`

## Request

- Base URL: `https://api.teaflask.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.teaflask.com/api/v1/invitations/accept`
- Auth: none declared

Redeem an invite token for an active membership with the invited
role. The caller may have signed up moments ago via OTP —
handle_new_user minted only their profile; this endpoint is the
explicit app-layer activation. The email binding comes before any
lifecycle detail: a forwarded link must not tell the wrong account
whether the invitation is live, and must never bind it.

## Request body

- AcceptInvitationRequest
  - `token` string, required

## Response `200`

Successful Response

- AcceptedInvitationResponse
  - `organization_id` string, uuid, required
  - `organization_name` string, required
  - `role` 'owner' | 'member', required

## Other responses

- `401`: Unauthorized
- `403`: Signed-in address does not match the invited one
- `404`: Unknown token
- `405`: Method not allowed
- `409`: Already a member, or accepted by someone else
- `410`: Expired or revoked
- `422`: Validation error
- `500`: Internal server error

---

[API](https://skmtc.dev/teaflask/apis/teaflask-api.md) - [All operations](https://skmtc.dev/teaflask/apis/teaflask-api/llms.txt) - [OpenAPI document](https://skmtc.dev/teaflask/apis/teaflask-api/revisions/d23e9286b847?raw)
