Invites

Generate pre-signed registration links so new users can join a tenant without prior credentials.

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

FieldTypeRequiredDescription
validityDaysintegerNo (default 7)Invite validity in days — 130
rolestringNo (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, the token field composes the registration link
  • 400 Bad RequestvalidityDays outside 130, or invalid role
  • 401 Unauthorized — missing or invalid token
  • 403 Forbidden — caller lacks the required role, or an Admin attempted to invite another Admin
  • 404 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)

ParameterTypeDescription
Statusinteger0 = 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 invites
  • 400 Bad Request — invalid sort field
  • 401 Unauthorized — missing or invalid token
  • 403 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

ParameterTypeDescription
tokenstringToken generated by the admin when creating the invite

Body

FieldTypeRequiredDescription
emailstringYesUnique email address on the platform — max 255 characters
passwordstringYesPlain 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's targetRole
  • 400 Bad Request — invalid data (malformed email, empty password)
  • 404 Not Found — invite token not found
  • 409 Conflict — invite already used or expired; or email already registered on the platform
  • 429 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"
}