See who has been invited, and which invitations are still open
This workspace's invitations, and no other workspace's.
/v1/workspace/invitationsAdmin- Operation id
- list_invitations
- Access
- An editor or a viewer is refused.
/v1/workspace/invitationsThis workspace's invitations, and no other workspace's.
Newest first. state is one of pending, expired, accepted or
revoked, and is worked out when you ask rather than stored, so an
invitation that ran out of time reads expired without anything having
touched the row.
Pass include_inactive=true to see accepted and revoked ones too.
No token or token fragment is returned here, by design.
Expired invitations are returned by default and accepted or revoked ones are
not, which is the same cut 0073's partial index makes: an expired invitation
still holds its address's pending slot and is the one an admin has to act on,
so hiding it would hide the record that explains why re-inviting behaves as a
resend. Its state says expired so a surface can distinguish it.
Tenancy: the request is scoped to one workspace, and the credential presented is what selects it. A caller with no membership in that workspace is refused with 404, which is indistinguishable from a workspace that does not exist.
Authorisation: admin or owner. An editor or viewer receives 403 insufficient_role.
Access: Authorization: Bearer carrying either a realm access token or an API key. A key must hold the invitations:write scope, and the workspace role of the person who owns it must meet the floor above.
A realm-issued access token, presented as Authorization: Bearer <token>. It acts as the person who signed in, and every operation resolves their workspace role live from the membership record.
In: header
Query Parameters
Also return accepted and revoked invitations
falseResponse Body
application/json
application/json
curl -X GET "https://example.com/v1/workspace/invitations"{ "invitations": [ { "id": "3a9c7e12-58bd-4f06-9a44-2c7e1b0d8f31", "email": "sam.okafor@northwind.example", "role": "editor", "state": "pending", "expires_at": "2026-08-21T10:04:00+00:00", "created_at": "2026-08-14T10:04:00+00:00", "invited_by": { "id": "c0f4a7d3-1b62-4e58-8d90-6f3a2c5e7b18", "display_name": "Dana Osei", "email": "dana.osei@northwind.example" }, "delivery": { "state": "sent", "attempts": 1, "message_id": "0100019180a4c1f2-9f0a4a2e-1e4c-4d31-9a77-5b8c2d1e0f44-000000", "last_sent_at": "2026-08-14T10:04:01+00:00" } } ]}