Invitations
Pending invitations to join a workspace. They expire after seven days.
The invitation object
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier, prefixed with iv_. |
email required | string | Invitee email. |
role | string | Role granted on accept. |
expires_at | timestamp | Expiry time. |
status | string | pending, accepted or expired. |
Example
{
"id": "iv_8f3k2Q9xLm",
"email": "sam@example.com",
"role": "editor",
"expires_at": "2026-10-22T10:00:00Z",
"status": "pending"
}GET /workspaces/{workspace_id}/invitations
List invitations. Returns a paginated list of invitations.
Query parameters
| Field | Type | Description |
|---|---|---|
limit | integer | Page size, 1–100. Default 25. |
cursor | string | Cursor from the previous page. |
sort | string | Field to sort by, prefix - for descending. |
filter | string | Filter expression, see Filtering and sorting. |
Request
curl -X GET "https://api.axnode.net/v2/workspaces/workspace_id/invitations" \
-H "Authorization: Bearer $AXSYNC_TOKEN"const res = await fetch('https://api.axnode.net/v2/workspaces/workspace_id/invitations', {
method: 'GET',
headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();import requests
res = requests.get(
'https://api.axnode.net/v2/workspaces/workspace_id/invitations',
headers={'Authorization': f'Bearer {token}'},
)
data = res.json()Response 200
{
"data": [
{
"id": "iv_8f3k2Q9xLm",
"email": "sam@example.com",
"role": "editor",
"expires_at": "2026-10-22T10:00:00Z",
"status": "pending"
}
],
"has_more": false,
"next_cursor": null
}POST /workspaces/{workspace_id}/invitations
Create an invitation. Creates an invitation.
Body parameters
| Field | Type | Description |
|---|---|---|
email required | string | Invitee email. |
role | string | Role granted on accept. |
expires_at | timestamp | Expiry time. |
status | string | pending, accepted or expired. |
Request
curl -X POST "https://api.axnode.net/v2/workspaces/workspace_id/invitations" \
-H "Authorization: Bearer $AXSYNC_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "sam@example.com"}'const res = await fetch('https://api.axnode.net/v2/workspaces/workspace_id/invitations', {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"email": "sam@example.com"})
});
const data = await res.json();import requests
res = requests.post(
'https://api.axnode.net/v2/workspaces/workspace_id/invitations',
headers={'Authorization': f'Bearer {token}'}, json={"email": "sam@example.com"},
)
data = res.json()Response 201
{
"id": "iv_8f3k2Q9xLm",
"email": "sam@example.com",
"role": "editor",
"expires_at": "2026-10-22T10:00:00Z",
"status": "pending"
}GET /workspaces/{workspace_id}/invitations/{id}
Retrieve an invitation. Retrieves an invitation by its identifier.
Request
curl -X GET "https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm" \
-H "Authorization: Bearer $AXSYNC_TOKEN"const res = await fetch('https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm', {
method: 'GET',
headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();import requests
res = requests.get(
'https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm',
headers={'Authorization': f'Bearer {token}'},
)
data = res.json()Response 200
{
"id": "iv_8f3k2Q9xLm",
"email": "sam@example.com",
"role": "editor",
"expires_at": "2026-10-22T10:00:00Z",
"status": "pending"
}DELETE /workspaces/{workspace_id}/invitations/{id}
Delete an invitation. Permanently deletes an invitation. This cannot be undone.
Request
curl -X DELETE "https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm" \
-H "Authorization: Bearer $AXSYNC_TOKEN"const res = await fetch('https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm', {
method: 'DELETE',
headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();import requests
res = requests.delete(
'https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm',
headers={'Authorization': f'Bearer {token}'},
)
data = res.json()Response 200
{
"deleted": true,
"id": "iv_8f3k2Q9xLm"
}POST /workspaces/{workspace_id}/invitations/{id}/resend
Resend an invitation. Sends the email again and extends the expiry.
Body parameters
| Field | Type | Description |
|---|---|---|
email required | string | Invitee email. |
role | string | Role granted on accept. |
expires_at | timestamp | Expiry time. |
status | string | pending, accepted or expired. |
Request
curl -X POST "https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm/resend" \
-H "Authorization: Bearer $AXSYNC_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "sam@example.com"}'const res = await fetch('https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm/resend', {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"email": "sam@example.com"})
});
const data = await res.json();import requests
res = requests.post(
'https://api.axnode.net/v2/workspaces/workspace_id/invitations/iv_8f3k2Q9xLm/resend',
headers={'Authorization': f'Bearer {token}'}, json={"email": "sam@example.com"},
)
data = res.json()Response 200
{
"id": "iv_8f3k2Q9xLm",
"email": "sam@example.com",
"role": "editor",
"expires_at": "2026-10-22T10:00:00Z",
"status": "pending"
}