Create Invite
POST /api/v1/invites
Creates an invite token that lets a new user register in the tenant without prior credentials.
Auth: Bearer token — Admin or Owner role
Body
| Field | Type | Required | Description |
|---|---|---|---|
validityDays | integer | No (default 7) | Invite validity in days — 1–30 |
role | string | No (default Developer) | Role assigned on registration — Developer, Viewer, or Admin (Admin only assignable by an Owner) |
Owner cannot be invited:
Owner cannot be assigned via invite. An Admin inviting another user as Admin gets
403 Forbidden — only an Owner can grant the Admin role.
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.hooksentry.com/api/v1/invites")
{
Content = JsonContent.Create(new { validityDays = 7, role = "Developer" })
};
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using var client = new HttpClient();
var response = await client.SendAsync(request);
Return codes
201 Created— invite created, thetokenfield composes the registration link400 Bad Request—validityDaysoutside1–30, or invalid role401 Unauthorized— missing or invalid token403 Forbidden— caller lacks the required role, or an Admin attempted to invite another Admin404 Not Found— tenant not found
{
"id": "b1c2d3e4-f5a6-4b7c-8d9e-0f1a2b3c4d5e",
"tenantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"token": "inv_9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c",
"targetRole": "Developer",
"expiresAt": "2026-07-10T14:32:00.000Z",
"usedAt": null,
"status": "Pending",
"createdAt": "2026-07-03T14:32:00.000Z"
}
Get Invites
GET /api/v1/invites
Returns a page of invites belonging to the authenticated tenant. Only Admin or Owner can list invites. See Pagination & Filtering for the shared query parameters.
Auth: Bearer token — Admin or Owner role
Filters (optional)
| Parameter | Type | Description |
|---|---|---|
Status | integer | 0 = Pending, 1 = Used |
var request = new HttpRequestMessage(HttpMethod.Get,
"https://api.hooksentry.com/api/v1/invites?Qt=10&Pg=1&CpOrd=id&TpOrd=Desc");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using var client = new HttpClient();
var response = await client.SendAsync(request);
Return codes
200 OK— paginated list of invites400 Bad Request— invalid sort field401 Unauthorized— missing or invalid token403 Forbidden— caller does not have Admin/Owner role
{
"total": 3,
"items": [
{
"id": "b1c2d3e4-f5a6-4b7c-8d9e-0f1a2b3c4d5e",
"tenantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"token": "inv_9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c",
"targetRole": "Developer",
"expiresAt": "2026-07-10T14:32:00.000Z",
"usedAt": null,
"status": "Pending",
"createdAt": "2026-07-03T14:32:00.000Z"
}
]
}
Register with Invite
POST /api/v1/invites/{token}/register
Registers a new user in the tenant associated with the invite, with the role defined when the
invite was created (targetRole). The invite is marked as used after successful registration.
Auth: none
Path parameters
| Parameter | Type | Description |
|---|---|---|
token | string | Token generated by the admin when creating the invite |
Body
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Unique email address on the platform — max 255 characters |
password | string | Yes | Plain text password — stored as a hash |
using var client = new HttpClient();
var response = await client.PostAsJsonAsync(
$"https://api.hooksentry.com/api/v1/invites/{inviteToken}/register", new
{
email = "dev@acme.com",
password = "SenhaSegura123!"
});
Return codes
201 Created— user created with the invite'stargetRole400 Bad Request— invalid data (malformed email, empty password)404 Not Found— invite token not found409 Conflict— invite already used or expired; or email already registered on the platform429 Too Many Requests— more than 10 requests from the same IP within 1 hour
{
"id": "5a6b7c8d-9e0f-4a1b-8c2d-3e4f5a6b7c8d",
"tenantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"email": "dev@acme.com",
"status": "Active",
"role": "Developer",
"createdAt": "2026-07-03T14:32:00.000Z",
"updatedAt": "2026-07-03T14:32:00.000Z"
}