Invite a member
Invite an email to join the organization with roles. Requires the caller's org:members:write permission on the organization. Only a signed-in user can invite. An agent or a machine token gets 403. Each role must be an organization role that the organization can assign, or the request returns 400. The caller must hold every permission of each role, or the request returns 403. When a pending invitation for the email already exists, the request sets its roles to the requested roles, returns 200, and sends no email. Otherwise the request creates the invitation, returns 201, and sends the invitee an email built from accept_url. The invitee accepts or rejects it through the Accept an invitation/Reject an invitation operations.
Authorization
oauth2 Create a client with POST /v1/oauth/clients, then exchange its credentials for an access token. AUTHORIZATION_CODE clients act on behalf of a signed-in user and always use PKCE; CLIENT_CREDENTIALS clients act as themselves. A client may only be granted scopes its creator already holds — read the grantable list from GET /v1/oauth/clients/scopes.
In: header
Path Parameters
Unique identifier (slug) of the organization.
Request Body
application/json
Request to invite an email to join the organization with roles.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/organizations/greenwheels/members/invitations" \ -H "Content-Type: application/json" \ -d '{ "email": "jane@example.com", "roles": [ "member" ], "accept_url": "https://app.greenwheels.example/invitations/accept" }'{ "id": "550e8400-e29b-41d4-a716-446655440004", "organization_id": "greenwheels", "email": "jane@example.com", "roles": [ "organization-financing-admin" ], "status": "PENDING", "created_at": "2026-03-15T10:00:00Z", "resource_id": "string"}{ "id": "550e8400-e29b-41d4-a716-446655440004", "organization_id": "greenwheels", "email": "jane@example.com", "roles": [ "organization-financing-admin" ], "status": "PENDING", "created_at": "2026-03-15T10:00:00Z", "resource_id": "string"}{ "code": "BAD_REQUEST", "description": "Bad Request"}{ "code": "UNAUTHORISED", "description": "Unauthorised"}{ "code": "FORBIDDEN", "description": "Forbidden"}{ "code": "RATE_LIMIT_EXCEEDED", "description": "Too Many Requests"}{ "code": "INTERNAL_ERROR", "description": "Internal Server Error"}List pending invitations GET
List the organization's pending member invitations, optionally filtered by role. Requires the caller's `org:members:read` permission on the organization. Returns a page ordered by a keyset cursor; pass the response's `next`/`prev` link, or the `after`/`before` value it carries, to page through the rest.
Revoke an invitation DELETE
Cancel the organization's pending member invitation. Requires the caller's `org:members:write` permission on the organization. Idempotent: returns 204 even when the invitation does not exist or is no longer pending.