Invites
Create and manage team invitations. Invite new members via email.
Manage team invitations to onboard new members. An invite stays open for its email address until it is accepted or revoked.
GET /api/v1/invites
Returns the pending and accepted invitations for your team.
The list is paginated. See Pagination for how to walk it a page at a time.
Required scope: invites:read
Query Parameters
perPageintegerResults per page, 1-200 (default: 50)
cursorstringPage to fetch, taken from a
Linkheader
Response Fields
data.invitesarrayOne page of invites
data.invites[].idstringUnique invite identifier
data.invites[].emailstringEmail address of the invited user
data.invites[].senderIdstringUser ID of the team member who sent the invite
data.invites[].teamIdstringTeam ID the invite is for
data.invites[].acceptedAtinteger | nullUnix timestamp in milliseconds of the acceptance
data.invites[].createdAtintegerUnix timestamp in milliseconds of the creation
data.invites[].updatedAtintegerUnix timestamp in milliseconds of the last update
meta.requestIdstringIdentifier for this request
meta.timestampstringISO 8601 timestamp of the response
meta.pagination.nextstring | nullCursor for the following page,
nullon the lastmeta.pagination.prevstring | nullCursor for the preceding page,
nullon the firstmeta.pagination.perPageintegerResults this page was built with
meta.pagination.totalintegerInvites matching, across every page
Errors (3)
| Status | Type | Meaning |
|---|---|---|
| 400 | bad-request | The request is malformed |
| 401 | unauthorized | The API key is missing or invalid |
| 403 | forbidden | The API key lacks the required scope |
Response fields (200)
dataobjectRequiredShow nested fields
invitesInvite[]RequiredShow nested fields
idstringRequiredemailstringRequiredsenderIdstringRequiredteamIdstringRequiredacceptedAtinteger | nullRequiredWhen accepted; null while pending
createdAtintegerRequiredEpoch milliseconds
updatedAtintegerRequiredEpoch milliseconds
metaobjectRequiredShow nested fields
requestIdstringRequiredFormat: uuid.
timestampstringRequiredFormat: date-time.
paginationobjectRequiredShow nested fields
nextstring | nullRequiredCursor of the following page
prevstring | nullRequiredCursor of the preceding page
perPageintegerRequiredtotalinteger
cURL
curl -i "https://uptime.sergiodxa.com/api/v1/invites?perPage=100" \
-H "Authorization: Bearer uptime_your_api_key"Response
{
"data": {
"invites": [
{
"id": "inv_abc123",
"email": "alice@example.com",
"senderId": "usr_xyz789",
"teamId": "team_def456",
"acceptedAt": 1770733800000,
"createdAt": 1770542100000,
"updatedAt": 1770733800000
},
{
"id": "inv_def456",
"email": "bob@example.com",
"senderId": "usr_xyz789",
"teamId": "team_def456",
"acceptedAt": null,
"createdAt": 1770894000000,
"updatedAt": 1770894000000
}
]
},
"meta": {
"requestId": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
"timestamp": "2026-02-14T12:00:00.000Z",
"pagination": {
"next": null,
"prev": null,
"perPage": 100,
"total": 2
}
}
}POST /api/v1/invites
Creates a pending invitation for the specified email address. The API records the invite; the invited person joins the team by accepting it. Answers 201 Created.
Required scope: invites:write
Request Body
emailstringRequiredValid email address of the person to invite
Errors (7)
| Status | Type | Meaning |
|---|---|---|
| 400 | validation-error | The request failed validation |
| 400 | idempotency-key-invalid | The Idempotency-Key header is not valid |
| 401 | unauthorized | The API key is missing or invalid |
| 403 | forbidden | The API key lacks the required scope |
| 409 | conflict | The resource's state prevents this request |
| 409 | idempotency-key-in-use | A request with this idempotency key is still being processed |
| 422 | idempotency-key-reused | This idempotency key was already used for a different request |
Response fields (201)
dataobjectRequiredShow nested fields
inviteobjectRequiredShow nested fields
idstringRequiredemailstringRequiredsenderIdstringRequiredteamIdstringRequiredacceptedAtinteger | nullRequiredWhen accepted; null while pending
createdAtintegerRequiredEpoch milliseconds
updatedAtintegerRequiredEpoch milliseconds
metaobjectRequiredShow nested fields
requestIdstringRequiredFormat: uuid.
timestampstringRequiredFormat: date-time.
cURL
Response
{
"data": {
"invite": {
"id": "inv_ghi789",
"email": "newuser@example.com",
"senderId": "usr_xyz789",
"teamId": "team_def456",
"acceptedAt": null,
"createdAt": 1771087500000,
"updatedAt": 1771087500000
}
},
"meta": {
"requestId": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
"timestamp": "2026-02-14T16:45:00.000Z"
}
}DELETE /api/v1/invites/:id
Revokes a pending invitation, so the invited user can no longer join the team with it. An invite that was already accepted stays in place and answers 409 conflict.
Required scope: invites:write
Path Parameters
idstringThe invite ID to delete
Errors (5)
| Status | Type | Meaning |
|---|---|---|
| 400 | validation-error | The request failed validation |
| 401 | unauthorized | The API key is missing or invalid |
| 403 | forbidden | The API key lacks the required scope |
| 404 | not-found | The resource does not exist |
| 409 | conflict | The resource's state prevents this request |
Response fields (200)
dataobjectRequiredShow nested fields
deletedtrueRequired
metaobjectRequiredShow nested fields
requestIdstringRequiredFormat: uuid.
timestampstringRequiredFormat: date-time.
cURL
Response
{
"data": {
"deleted": true
},
"meta": {
"requestId": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
"timestamp": "2026-02-14T17:00:00.000Z"
}
}