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"}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.
dashboardTokenAuthorizationBearer <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.
token*stringOrganization membership. A repeat returns the member's current role.
application/json- response
tenant*role*MembershipRole"owner""admin""developer""viewer"