Public reference
Managers
Every endpoint in this group. Open one for its parameters and a worked example.
Managers
32POST /api/v1/admin/managers/bulk-group Assign groups
- Authentication
- Staff token or session
- Requires permission
-
prm_groups_assignAssign groups - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/admin/managers/{id}/group Assign groups
- Authentication
- Staff token or session
- Requires permission
-
prm_groups_assignAssign groups - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
GET /api/v1/managers List managers
One page of managers. A caller without tenant-wide visibility sees their own descendants only — never their parent, never a sibling branch.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_indexView managers
debt, parent_username, users_count and the other joined fields are computed by the list projection only. Fetching one manager by id returns the same record without them, so a client that reads users_count off a detail response will always see zero.
Parameters
| Parameter | Description |
|---|---|
filter[parent_id]
query · integer
|
Direct children of one manager. Also accepted as a bare parent_id query parameter. Narrows within the caller's subtree, never past it. |
q
query · string
|
Searches name, username and email. |
{
"data": [
{
"id": 57,
"tenant_id": 12,
"email": "giza@acme.example",
"username": "giza-reseller",
"firstname": "Mona",
"status": "active",
"parent_manager_id": 41,
"parent_username": "cairo-reseller",
"balance": 1840.00,
"debt_limit": 5000.00,
"debt": 0.00,
"discount_rate": 10.00,
"points_balance": 240,
"users_count": 312,
"created_at": "2026-05-02 09:00:00"
}
],
"meta": { "page": 1, "page_size": 50, "total": 9, "has_next": false }
}
POST /api/v1/managers Create a manager
Creates a staff or reseller account. A manager needs at least one login identity, so email or username must be present.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_createCreate managers - Rate limit
t_mutate
Parameters
| Parameter | Description |
|---|---|
email
body · string
|
Login email. Unique within the tenant. Required unless username is given. |
username
body · string
|
Login username. Required unless email is given. |
passwordrequired
body · string
|
Hashed with Argon2id before storage, unlike a subscriber's. |
parent_manager_id
body · integer
|
Defaults to the caller. Never null — a tenant keeps exactly one root manager, its owner. A named parent must be one the caller may act on. |
GET /api/v1/managers/all List managers for a picker
Id and name only, un-paginated, for populating a select control. Same subtree scope as the full list.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_indexView managers
POST /api/v1/managers/bulk-activate Edit managers
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_updateEdit managers - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/managers/bulk-delete Delete managers
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_deleteDelete managers - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/managers/bulk-suspend Edit managers
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_updateEdit managers - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
DELETE /api/v1/managers/{id} Delete a manager
Hard-deletes the manager. Refused while they are still referenced by subscribers, card stock or ledger records — move those first.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_deleteDelete managers - Rate limit
t_mutate
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
GET /api/v1/managers/{id} Fetch one manager
The manager record, including their custom form fields.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_indexView managers
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
PATCH /api/v1/managers/{id} Update a manager
Partial update. An omitted field is left alone.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_updateEdit managers - Rate limit
t_mutate
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
POST /api/v1/managers/{id}/2fa/reset Edit managers
- Authentication
- Staff token or session Staff session only — an API token cannot call this
- Requires permission
-
prm_managers_updateEdit managers - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/managers/{id}/activate Edit managers
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_updateEdit managers - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
GET /api/v1/managers/{id}/debt Read a manager's debt
Outstanding debt for this manager, read off the loan ledger.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_journalView manager journal
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
GET /api/v1/managers/{id}/invoices View manager invoices
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_invoicesView manager invoices
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
GET /api/v1/managers/{id}/journal Read a manager's ledger
Every money movement on this manager's wallet, newest first, with a running balance. This is the authoritative record — the wallet balance is its consequence, not a parallel truth.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_journalView manager journal
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
GET /api/v1/managers/{id}/loans View manager journal
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_journalView manager journal
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/managers/{id}/login-as Log in as manager
- Authentication
- Staff token or session Staff session only — an API token cannot call this
- Requires permission
-
prm_managers_login_asLog in as manager - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
GET /api/v1/managers/{id}/overview View managers
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_indexView managers
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
GET /api/v1/managers/{id}/payments View manager receipts
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_receiptsView manager receipts
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/managers/{id}/points/add Add / deduct manager reward points
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_reward_pointsAdd / deduct manager reward points - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/managers/{id}/points/deduct Add / deduct manager reward points
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_reward_pointsAdd / deduct manager reward points - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
GET /api/v1/managers/{id}/profile View managers
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_indexView managers
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
GET /api/v1/managers/{id}/receipts View manager receipts
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_receiptsView manager receipts
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/managers/{id}/reset-password Edit managers
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_updateEdit managers - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
GET /api/v1/managers/{id}/roles Read a manager's roles
The roles assigned to this manager, which is what their permissions resolve from.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_indexView managers
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
PUT /api/v1/managers/{id}/roles Replace a manager's roles
Replaces the whole set. A caller may only grant roles whose permissions are a subset of their own, so this cannot be used to escalate.
- Authentication
- Staff token or session
- Requires permission
-
prm_roles_manageManage roles & permissions - Rate limit
t_mutate
This takes effect on every API token that manager holds, immediately and silently. A token's authority is its owner's live permissions intersected with its own scope, so removing a role here shrinks every integration running as that person with no notification and no change to the token record.
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
role_idsrequired
body · array
|
The complete new set of role ids. |
POST /api/v1/managers/{id}/suspend Suspend a manager
Sets the account to suspended. They can no longer sign in, and every API token they own stops authenticating with reason api_token_owner_inactive.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_updateEdit managers - Rate limit
t_mutate
Suspending a reseller does not touch the subscribers below them. Those keep connecting; only the person's own access ends.
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
POST /api/v1/managers/{id}/wallet/deposit Credit a manager wallet
Moves money into a reseller's wallet and posts the matching ledger entry. Idempotent on request_id through the ledger's own unique constraint.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_depositDeposit to manager wallet - Rate limit
t_mutate- Idempotency key
request_id
issue_invoice defaults differently here than on the subscriber wallet. Omitting it on a manager deposit issues the document; omitting it on a subscriber deposit does not. Send it explicitly if you care either way.
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. May not be the caller themselves. |
amountrequired
body · number
|
Major units, a bare JSON number. |
request_idrequired
body · string
|
Idempotency key. |
reason
body · string
|
Free-text note recorded on the ledger row. |
issue_invoice
body · boolean
|
Also record the human-facing accounting document. Defaults to TRUE when omitted on the manager side, unlike the subscriber side. |
POST /api/v1/managers/{id}/wallet/pay-debt Settle a manager's debt
Records a repayment against a creditor. The creditor defaults to the debtor's parent manager.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_pay_debtSettle manager debt - Rate limit
t_mutate- Idempotency key
request_id
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
The debtor. May not be the caller themselves. |
amountrequired
body · number
|
Major units. |
creditor_manager_id
body · integer
|
Which creditor is being repaid. Absent means the debtor's parent. |
request_idrequired
body · string
|
Idempotency key. |
POST /api/v1/managers/{id}/wallet/topup Deposit to manager wallet
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_depositDeposit to manager wallet - Rate limit
t_mutate
Read straight from the router that serves this instance. A hand-written description of this endpoint has not been added yet.
POST /api/v1/managers/{id}/wallet/withdraw Debit a manager wallet
The inverse of deposit, posting the matching ledger entry.
- Authentication
- Staff token or session
- Requires permission
-
prm_managers_withdrawalWithdraw from manager wallet - Rate limit
t_mutate- Idempotency key
request_id
Parameters
| Parameter | Description |
|---|---|
idrequired
path · integer
|
Manager id. |
amountrequired
body · number
|
Major units. |
request_idrequired
body · string
|
Idempotency key. |
allow_negative
body · boolean
|
Permit the withdrawal to drive the balance below zero. |
No endpoint matches that search.
Written to be read by machines too
The reference is public and needs no account, so a tool that has never seen X-Radius can reach a correct first call on its own.
- /llms.txt
- An index of every page, with one-line summaries.
- /llms-full.txt
- The whole reference as one Markdown file, with no navigation to crawl.
- /openapi.json
- OpenAPI 3.1, generated from the router that serves this instance.
- /skill.md
- A ready-made skill file for an assistant: authentication, the response envelope and the error codes in one page.
<page-url>.md- Append .md to any reference URL for the same page as Markdown.
Accept: text/markdown- Send this header on the ordinary URL and the answer comes back as Markdown instead.
Read https://x-radius.com/llms.txt, then fetch the endpoint you need as Markdown by appending .md to its URL.