Documentation Index
Fetch the complete documentation index at: https://docs.linkutm.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Invites add new people to a workspace by email. An invite carries a token, a role to grant on acceptance, and a 7-day expiry. Management endpoints live under/api/v1/workspaces and authenticate with a JWT bearer token. One public lookup endpoint lives under /api/v1/invites.
x-workspace-id header accepts a workspace UUID or a workspace slug. It is not used on the accept endpoint or the public lookup, which resolve the workspace from the invite token.
Create an invite
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
x-workspace-id: <uuid_or_slug> | Yes | Target workspace |
Content-Type: application/json | Yes |
Body
Invitee email. Lowercased and trimmed before use.
Role to grant when the invite is accepted.
Example request
Example response
Errors
| Code | When |
|---|---|
400 | The invite email could not be sent (the invite is rolled back) |
403 | Team member limit reached for the workspace plan |
409 | An invite already exists for this email, or the user is already a member |
List pending invites
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
x-workspace-id: <uuid_or_slug> | Yes | Target workspace |
Example request
Example response
Resend an invite
:inviteId is the invite UUID.
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
x-workspace-id: <uuid_or_slug> | Yes | Target workspace |
Example request
Example response
Returns the updated invite with its new token and expiry.Resending an invite invalidates the previous token. Any link from an earlier invite email stops working.
Errors
| Code | When |
|---|---|
404 | Invite not found in this workspace |
Cancel an invite
:inviteId is the invite UUID.
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
x-workspace-id: <uuid_or_slug> | Yes | Target workspace |
Example request
Example response
Returns the deleted invite record.Errors
| Code | When |
|---|---|
404 | Invite not found in this workspace |
Accept an invite
:token is the invite token from the invite email. The user’s email must match the invited email. On success the user is added as a member with the invited role and the invite is deleted.
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | The accepting user’s JWT. No x-workspace-id needed; the workspace is resolved from the token. |
Example request
Example response
teamNotification with action joined, subject to each member’s notification preferences.
Errors
| Code | When |
|---|---|
403 | Invite has expired, or the caller’s email does not match the invited email |
404 | Invite not found |
409 | Caller is already a member of the workspace |
Get an invite by token (public)
Authorization header is required.
Headers
None required.Example request
Example response
Errors
| Code | When |
|---|---|
403 | Invite has expired |
404 | Invite not found |
Behavior notes
Invite tokens expire after 7 days
Invite tokens expire after 7 days
A created or resent invite token is valid for 7 days. Resending an invite generates a new token and invalidates the old one. Accepting or fetching an expired invite returns
403.Invite emails are queued
Invite emails are queued
Invite and re-invite emails are sent through an outbound email queue. If the email send fails on create, the invite is rolled back and the call returns
400.Plan limit enforced before invite
Plan limit enforced before invite
The workspace plan’s team member limit is checked before an invite is created. A workspace at its limit returns
403.