Manage the people on your team. Invite new members, deactivate accounts without losing data, and control access to CRM modules.
| Field | Type | Description |
|---|
id | uuid | Unique identifier of the user |
account_id | uuid | ID of the account the user belongs to |
email | string | User’s email address (unique) |
name | string | User’s display name |
role | string | User’s role within the account One of: admin, member |
bcc_token | string | Token used to build the user’s BCC email-logging address |
must_change_password | bool | Whether the user must change their password on next login |
deactivated_at | datetime? | When the user was deactivated (ISO 8601); null if active |
created_at | datetime | Creation timestamp (ISO 8601) |
updated_at | datetime | Last update timestamp (ISO 8601) |
Endpoint: users-change-password
| Field | Type | Required | Description |
|---|
current_password | string | Yes | The user’s current password |
new_password | string | Yes | New password (minimum 8 characters) |
curl -X POST https://api.driftwoodapp.com/api/users-change-password \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"current_password": "...", "new_password": "..."}'
Endpoint: users-forgot-password
| Field | Type | Required | Description |
|---|
email | string | Yes | Email address to send the password reset link to |
curl -X POST https://api.driftwoodapp.com/api/users-forgot-password \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
Endpoint: users-invite
| Field | Type | Required | Description |
|---|
email | string | Yes | Email address of the person to invite |
name | string | Yes | Display name for the invited user |
curl -X POST https://api.driftwoodapp.com/api/users-invite \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "...", "name": "..."}'
Endpoint: users-list
| Field | Type | Required | Description |
|---|
search | string | No | Filter users by name or email substring |
limit | int | No | Maximum number of users to return (1-100, default 50) |
offset | int | No | Number of users to skip for pagination |
curl -X POST https://api.driftwoodapp.com/api/users-list \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
Endpoint: users-reset-password
| Field | Type | Required | Description |
|---|
token | string | Yes | Password reset token from the reset email |
new_password | string | Yes | New password (minimum 8 characters) |
curl -X POST https://api.driftwoodapp.com/api/users-reset-password \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"token": "...", "new_password": "..."}'
Endpoint: users-set-active
| Field | Type | Required | Description |
|---|
user_id | string | Yes | ID of the user to activate or deactivate |
active | bool | No | True to activate the user, false to deactivate |
curl -X POST https://api.driftwoodapp.com/api/users-set-active \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
| Code | Description |
|---|
validation.password_too_short | Password too short |
users.invalid_password | Invalid password |
validation.email_required | Email required |
users.not_admin | Not admin |
users.limit_reached | Limit reached |
users.email_taken | Email taken |
validation.token_required | Token required |
reset.invalid_token | Invalid token |
validation.invalid_user_id | Invalid user id |
users.cannot_deactivate_self | Cannot deactivate self |
users.not_in_account | Not in account |