Skip to content
Sendtier Docs
API reference

Join an invited organization

Source: OpenAPI (openapi/openapi.yaml).

curl -X POST "https://api.sendtier.example/invitations/string/accept" \  -H "Authorization: Bearer st_live_REPLACE_ME"
{  "tenant": {    "id": "string",    "name": "string"  },  "role": "owner"}
POST
/invitations/{token}/accept

Call GET /me first. Any signed-in dashboard user may accept without selecting a tenant, including viewers and users with no memberships. The normalized signed-in email must match. Expired, revoked, and used tokens return not_found. Repeating acceptance by the same user succeeds without recreating membership while that membership still exists. That response returns the member's current role, which can differ from the role stored on the invitation. When that user no longer has a membership, acceptance returns not_found and does not recreate it. Acceptance into an organization pending deletion fails. Idempotency-Key is ignored; acceptance itself is idempotent per user and token.

Authorization

dashboardToken
headerAuthorizationBearer <token>

Dashboard server token: EdDSA Ed25519, issuer is the dashboard origin, audience sendtier-api, iat and exp are required with a maximum lifetime of 15 minutes, sub is the identity subject, email is required. Sendtier-Tenant selects a membership; omission selects the sole membership. Without a selected tenant only GET /me and POST /organizations are available. Sendtier-Mode is live (default) or test; test mode cannot create live keys. Owners, admins and developers have full access. Viewers may only GET or HEAD.

Path Parameters

token*string

Response Body

Organization membership. A repeat returns the member's current role.

application/json
  1. response
tenant*
role*MembershipRole
Value in"owner""admin""developer""viewer"