Skip to main content

Create User (Invite)

Create a new user and send them an invitation email. This endpoint enforces your organization's maximum user limit based on your subscription tier.

Request​

POST https://app.entryguard.io/api/v1/users

Authentication​

Requires a valid Bearer JWT token with ORG_ADMIN role.

Authorization: Bearer <access_token>

Request Body​

{
"email": "string",
"name": "string",
"isOrgAdmin": "boolean"
}
FieldTypeRequiredDescription
emailstringYesUser's email address (must be valid email format and unique within the organization)
namestringNoUser's full name
isOrgAdminbooleanNoWhether to grant organization admin privileges (defaults to false)

Response​

Returns the created user object.

Response Schema​

{
"id": "uuid",
"email": "string",
"name": "string",
"isOrgAdmin": "boolean",
"platformRole": "string",
"isActive": "boolean",
"mfaEnabled": "boolean",
"lastLoginAt": "timestamp",
"roleNames": ["string"],
"createdAt": "timestamp",
"updatedAt": "timestamp"
}

Success Response​

Status Code: 201 Created

{
"id": "770e8400-e29b-41d4-a716-446655440006",
"email": "[email protected]",
"name": "New User",
"isOrgAdmin": false,
"platformRole": "CUSTOMER",
"isActive": true,
"mfaEnabled": false,
"lastLoginAt": null,
"roleNames": [],
"createdAt": "2026-02-18T10:30:00Z",
"updatedAt": "2026-02-18T10:30:00Z"
}

Error Responses​

Status CodeDescription
400 Bad RequestInvalid request body, invalid email format, duplicate email, or organization user limit reached
401 UnauthorizedMissing or invalid authentication token
403 ForbiddenUser does not have ORG_ADMIN role
429 Too Many RequestsRate limit exceeded
500 Internal Server ErrorServer error occurred

Error Response Examples:

{
"timestamp": "2026-02-18T10:30:00Z",
"status": 400,
"error": "Bad Request",
"message": "email is required",
"path": "/api/v1/users"
}
{
"timestamp": "2026-02-18T10:30:00Z",
"status": 400,
"error": "Bad Request",
"message": "Invalid email format",
"path": "/api/v1/users"
}
{
"timestamp": "2026-02-18T10:30:00Z",
"status": 400,
"error": "Bad Request",
"message": "A user with email '[email protected]' already exists",
"path": "/api/v1/users"
}
{
"timestamp": "2026-02-18T10:30:00Z",
"status": 400,
"error": "Bad Request",
"message": "Organization has reached maximum user limit (5). Upgrade your plan to add more users.",
"path": "/api/v1/users"
}

Example​

Request​

curl -X POST https://app.entryguard.io/api/v1/users \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"name": "New User",
"isOrgAdmin": false
}'

Response​

{
"id": "770e8400-e29b-41d4-a716-446655440006",
"email": "[email protected]",
"name": "New User",
"isOrgAdmin": false,
"platformRole": "CUSTOMER",
"isActive": true,
"mfaEnabled": false,
"lastLoginAt": null,
"roleNames": [],
"createdAt": "2026-02-18T10:30:00Z",
"updatedAt": "2026-02-18T10:30:00Z"
}

Notes​

  • An invitation email will be sent to the user's email address
  • The user must complete registration by setting a password via the invitation link
  • New users are created with isActive: true by default
  • The maximum number of users depends on your organization's subscription tier:
    • Free: 5 users
    • Paid: Unlimited users