Skip to content
Sendtier Docs
API reference

Invite a teammate

Source: OpenAPI (openapi/openapi.yaml).

curl -X POST "https://api.sendtier.example/organizations/string/invitations" \  -H "Authorization: Bearer st_live_REPLACE_ME" \  -H "Content-Type: application/json" \  -d '{    "email": "user@example.com",    "role": "owner"  }'
{  "id": "string",  "email": "user@example.com",  "role": "owner",  "created_at": "2019-08-24T14:15:22Z",  "expires_at": "2019-08-24T14:15:22Z"}
POST
/organizations/{tenant_id}/invitations

Owners and admins may invite; admins cannot invite owners. The path must match the selected membership. One pending invitation per normalized email; expires in seven days. At most 20 invitations per tenant in a rolling hour. The token is delivered by system email and never returned by this API.

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

tenant_id*string

Header Parameters

Idempotency-Key?string

Repeated POST with the same key within 24 h returns the first response.

Lengthlength <= 255

Request Body

application/json
  1. body
email*string
Formatemail
role*MembershipRole
Value in"owner""admin""developer""viewer"

Response Body

Invitation created and notification published atomically.

application/json
  1. response
id*string
email*string
Formatemail
role*MembershipRole
Value in"owner""admin""developer""viewer"
created_at*string
Formatdate-time
expires_at*string
Formatdate-time