List all Users
Returns a list of all users
Query Parameters
- Name
service_user- Type
- boolean
- Required
- optional
- Enum
- Description
Filters users and returns either regular users or service users
Request
curl -X GET https://api.netbird.io/api/users \
-H 'Accept: application/json' \
-H 'Authorization: Token <TOKEN>'
Response
[
{
"id": "google-oauth2|277474792786460067937",
"email": "demo@netbird.io",
"password": "super_secure_password",
"name": "Tom Schulz",
"role": "admin",
"status": "active",
"last_login": "2023-05-05T09:00:35.477782Z",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"is_current": true,
"is_service_user": false,
"is_blocked": false,
"pending_approval": false,
"issued": "api",
"idp_id": "okta-abc123",
"permissions": {
"is_restricted": {
"type": "boolean",
"description": "Indicates whether this User's Peers view is restricted"
},
"modules": {
"networks": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"peers": {
"read": false,
"create": false,
"update": false,
"delete": false
}
}
}
}
]
Create a User
Creates a new service user or sends an invite to a regular user
Request-Body Parameters
- Name
email- Type
- string
- Required
- optional
- Enum
- Description
User's Email to send invite to
- Name
name- Type
- string
- Required
- optional
- Enum
- Description
User's full name
- Name
role- Type
- string
- Required
- required
- Enum
- Description
User's NetBird account role
- Name
auto_groups- Type
- string[]
- Required
- required
- Enum
- Description
Group IDs to auto-assign to peers registered by this user
- Name
is_service_user- Type
- boolean
- Required
- required
- Enum
- Description
Is true if this user is a service user
Request
curl -X POST https://api.netbird.io/api/users \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Token <TOKEN>' \
--data-raw '{
"email": "demo@netbird.io",
"name": "Tom Schulz",
"role": "admin",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"is_service_user": false
}'
Response
{
"id": "google-oauth2|277474792786460067937",
"email": "demo@netbird.io",
"password": "super_secure_password",
"name": "Tom Schulz",
"role": "admin",
"status": "active",
"last_login": "2023-05-05T09:00:35.477782Z",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"is_current": true,
"is_service_user": false,
"is_blocked": false,
"pending_approval": false,
"issued": "api",
"idp_id": "okta-abc123",
"permissions": {
"is_restricted": {
"type": "boolean",
"description": "Indicates whether this User's Peers view is restricted"
},
"modules": {
"networks": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"peers": {
"read": false,
"create": false,
"update": false,
"delete": false
}
}
}
}
Update a User
Update information about a User
Path Parameters
- Name
userId- Type
- string
- Required
- required
- Enum
- Description
The unique identifier of a user
Request-Body Parameters
- Name
role- Type
- string
- Required
- required
- Enum
- Description
User's NetBird account role
- Name
auto_groups- Type
- string[]
- Required
- required
- Enum
- Description
Group IDs to auto-assign to peers registered by this user
- Name
is_blocked- Type
- boolean
- Required
- required
- Enum
- Description
If set to true then user is blocked and can't use the system
Request
curl -X PUT https://api.netbird.io/api/users/{userId} \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Token <TOKEN>' \
--data-raw '{
"role": "admin",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"is_blocked": false
}'
Response
{
"id": "google-oauth2|277474792786460067937",
"email": "demo@netbird.io",
"password": "super_secure_password",
"name": "Tom Schulz",
"role": "admin",
"status": "active",
"last_login": "2023-05-05T09:00:35.477782Z",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"is_current": true,
"is_service_user": false,
"is_blocked": false,
"pending_approval": false,
"issued": "api",
"idp_id": "okta-abc123",
"permissions": {
"is_restricted": {
"type": "boolean",
"description": "Indicates whether this User's Peers view is restricted"
},
"modules": {
"networks": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"peers": {
"read": false,
"create": false,
"update": false,
"delete": false
}
}
}
}
Delete a User
This method removes a user from accessing the system. For this leaves the IDP user intact unless the --user-delete-from-idp is passed to management startup.
Path Parameters
- Name
userId- Type
- string
- Required
- required
- Enum
- Description
The unique identifier of a user
Request
curl -X DELETE https://api.netbird.io/api/users/{userId} \
-H 'Authorization: Token <TOKEN>'
Resend user invitation
Resend user invitation
Path Parameters
- Name
userId- Type
- string
- Required
- required
- Enum
- Description
The unique identifier of a user
Request
curl -X POST https://api.netbird.io/api/users/{userId}/invite \
-H 'Authorization: Token <TOKEN>'
Approve user
Approve a user that is pending approval
Path Parameters
- Name
userId- Type
- string
- Required
- required
- Enum
- Description
The unique identifier of a user
Request
curl -X POST https://api.netbird.io/api/users/{userId}/approve \
-H 'Accept: application/json' \
-H 'Authorization: Token <TOKEN>'
Response
{
"id": "google-oauth2|277474792786460067937",
"email": "demo@netbird.io",
"password": "super_secure_password",
"name": "Tom Schulz",
"role": "admin",
"status": "active",
"last_login": "2023-05-05T09:00:35.477782Z",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"is_current": true,
"is_service_user": false,
"is_blocked": false,
"pending_approval": false,
"issued": "api",
"idp_id": "okta-abc123",
"permissions": {
"is_restricted": {
"type": "boolean",
"description": "Indicates whether this User's Peers view is restricted"
},
"modules": {
"networks": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"peers": {
"read": false,
"create": false,
"update": false,
"delete": false
}
}
}
}
Reject user
Reject a user that is pending approval by removing them from the account
Path Parameters
- Name
userId- Type
- string
- Required
- required
- Enum
- Description
The unique identifier of a user
Request
curl -X DELETE https://api.netbird.io/api/users/{userId}/reject \
-H 'Authorization: Token <TOKEN>'
Change user password
Change the password for a user. Only available when embedded IdP is enabled. Users can only change their own password.
Path Parameters
- Name
userId- Type
- string
- Required
- required
- Enum
- Description
The unique identifier of a user
Request-Body Parameters
- Name
old_password- Type
- string
- Required
- required
- Enum
- Description
The current password
- Name
new_password- Type
- string
- Required
- required
- Enum
- Description
The new password to set
Request
curl -X PUT https://api.netbird.io/api/users/{userId}/password \
-H 'Content-Type: application/json' \
-H 'Authorization: Token <TOKEN>' \
--data-raw '{
"old_password": "currentPassword123",
"new_password": "newSecurePassword456"
}'
Retrieve current user
Get information about the current user
Request
curl -X GET https://api.netbird.io/api/users/current \
-H 'Accept: application/json' \
-H 'Authorization: Token <TOKEN>'
Response
{
"id": "google-oauth2|277474792786460067937",
"email": "demo@netbird.io",
"password": "super_secure_password",
"name": "Tom Schulz",
"role": "admin",
"status": "active",
"last_login": "2023-05-05T09:00:35.477782Z",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"is_current": true,
"is_service_user": false,
"is_blocked": false,
"pending_approval": false,
"issued": "api",
"idp_id": "okta-abc123",
"permissions": {
"is_restricted": {
"type": "boolean",
"description": "Indicates whether this User's Peers view is restricted"
},
"modules": {
"networks": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"peers": {
"read": false,
"create": false,
"update": false,
"delete": false
}
}
}
}
List user invites
Lists all pending invites for the account. Only available when embedded IdP is enabled.
Request
curl -X GET https://api.netbird.io/api/users/invites \
-H 'Accept: application/json' \
-H 'Authorization: Token <TOKEN>'
Response
[
{
"id": "d5p7eedra0h0lt6f59hg",
"email": "user@example.com",
"name": "John Doe",
"role": "user",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"expires_at": "2024-01-25T10:00:00Z",
"created_at": "2024-01-22T10:00:00Z",
"expired": false,
"invite_token": "nbi_Xk5Lz9mP2vQwRtYu1aN3bC4dE5fGh0ABC123"
}
]
Create a user invite
Creates an invite link for a new user. Only available when embedded IdP is enabled. The user is not created until they accept the invite.
Request-Body Parameters
- Name
email- Type
- string
- Required
- required
- Enum
- Description
User's email address
- Name
name- Type
- string
- Required
- required
- Enum
- Description
User's full name
- Name
role- Type
- string
- Required
- required
- Enum
- Description
User's NetBird account role
- Name
auto_groups- Type
- string[]
- Required
- required
- Enum
- Description
Group IDs to auto-assign to peers registered by this user
- Name
expires_in- Type
- integer
- Required
- optional
- Enum
- Description
Invite expiration time in seconds (default 72 hours)
Request
curl -X POST https://api.netbird.io/api/users/invites \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Token <TOKEN>' \
--data-raw '{
"email": "user@example.com",
"name": "John Doe",
"role": "user",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"expires_in": 259200
}'
Response
{
"id": "d5p7eedra0h0lt6f59hg",
"email": "user@example.com",
"name": "John Doe",
"role": "user",
"auto_groups": [
"ch8i4ug6lnn4g9hqv7m0"
],
"expires_at": "2024-01-25T10:00:00Z",
"created_at": "2024-01-22T10:00:00Z",
"expired": false,
"invite_token": "nbi_Xk5Lz9mP2vQwRtYu1aN3bC4dE5fGh0ABC123"
}
Delete a user invite
Deletes a pending invite. Only available when embedded IdP is enabled.
Path Parameters
- Name
inviteId- Type
- string
- Required
- required
- Enum
- Description
The ID of the invite to delete
Request
curl -X DELETE https://api.netbird.io/api/users/invites/{inviteId} \
-H 'Authorization: Token <TOKEN>'
Regenerate a user invite
Regenerates an invite link for an existing invite. Invalidates the previous token and creates a new one.
Path Parameters
- Name
inviteId- Type
- string
- Required
- required
- Enum
- Description
The ID of the invite to regenerate
Request-Body Parameters
- Name
expires_in- Type
- integer
- Required
- optional
- Enum
- Description
Invite expiration time in seconds (default 72 hours)
Request
curl -X POST https://api.netbird.io/api/users/invites/{inviteId}/regenerate \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Token <TOKEN>' \
--data-raw '{
"expires_in": 259200
}'
Response
{
"invite_token": "nbi_Xk5Lz9mP2vQwRtYu1aN3bC4dE5fGh0ABC123",
"invite_expires_at": "2024-01-28T10:00:00Z"
}
Get invite information
Retrieves public information about an invite. This endpoint is unauthenticated and protected by the token itself.
Path Parameters
- Name
token- Type
- string
- Required
- required
- Enum
- Description
The invite token
Request
curl -X GET https://api.netbird.io/api/users/invites/{token} \
-H 'Accept: application/json' \
-H 'Authorization: Token <TOKEN>'
Response
{
"email": "user@example.com",
"name": "John Doe",
"expires_at": "2024-01-25T10:00:00Z",
"valid": true,
"invited_by": "Admin User"
}
Accept an invite
Accepts an invite and creates the user with the provided password. This endpoint is unauthenticated and protected by the token itself.
Path Parameters
- Name
token- Type
- string
- Required
- required
- Enum
- Description
The invite token
Request-Body Parameters
- Name
password- Type
- string
- Required
- required
- Enum
- Possible Values:
>=8 characters - Description
The password the user wants to set. Must be at least 8 characters long and contain at least one uppercase letter, one digit, and one special character (any character that is not a letter or digit, including spaces).
Request
curl -X POST https://api.netbird.io/api/users/invites/{token}/accept \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Token <TOKEN>' \
--data-raw '{
"password": "SecurePass123!"
}'
Response
{
"success": true
}

