User Management
User management APIs are under /api/v1/admin/users/.
These endpoints require an authenticated admin user, or an API key with the admin role, unless noted otherwise.
Bootstrap the first super user
This route is intended for first-time setup and is available before admin authentication is established.
http
POST /api/v1/admin/users/create_super_user
Content-Type: application/jsonRequest body:
json
{
"username": "admin",
"password": "change-me",
"name": "Administrator"
}It only succeeds when the system has no users yet.
List users
http
GET /api/v1/admin/users/Supported query parameters:
pagesizesearchrolesortBysortOrder
Example:
bash
curl \
-H "Authorization: kite1-adminsecret" \
"https://kite.example.com/api/v1/admin/users/?page=1&size=20&search=alice&sortOrder=desc"Response example:
json
{
"users": [
{
"id": 12,
"username": "alice",
"provider": "password",
"name": "Alice",
"enabled": true,
"lastLoginAt": "2026-04-20T08:30:00Z",
"roles": [
{
"id": 2,
"name": "viewer"
}
]
}
],
"total": 1,
"page": 1,
"size": 20
}Create a password user
http
POST /api/v1/admin/users/
Content-Type: application/jsonRequest body:
json
{
"username": "alice",
"password": "change-me",
"name": "Alice"
}Example:
bash
curl \
-X POST \
-H "Authorization: kite1-adminsecret" \
-H "Content-Type: application/json" \
-d '{"username":"alice","password":"change-me","name":"Alice"}' \
https://kite.example.com/api/v1/admin/users/Update a user
http
PUT /api/v1/admin/users/:id
Content-Type: application/jsonRequest body:
json
{
"name": "Alice Zhang",
"avatar_url": "https://example.com/avatar.png"
}Example:
bash
curl \
-X PUT \
-H "Authorization: kite1-adminsecret" \
-H "Content-Type: application/json" \
-d '{"name":"Alice Zhang"}' \
https://kite.example.com/api/v1/admin/users/12Delete a user
http
DELETE /api/v1/admin/users/:idExample:
bash
curl \
-X DELETE \
-H "Authorization: kite1-adminsecret" \
https://kite.example.com/api/v1/admin/users/12Response example:
json
{
"success": true
}Reset a user's password
http
POST /api/v1/admin/users/:id/reset_password
Content-Type: application/jsonRequest body:
json
{
"password": "new-password"
}Enable or disable a user
http
POST /api/v1/admin/users/:id/enable
Content-Type: application/jsonRequest body:
json
{
"enabled": false
}Response example:
json
{
"success": true
}