Clients
Create client accounts, set what each one can do, block or restore them, and release them, all with your reseller key.
A client is a full account under yours. It has its own balance, agents, numbers, and users, and it can sign in to its own dashboard. You set what it can do and what it pays.
Every call on this page uses your reseller key. The client is named by user_id or
organization_id, and only one of your own clients is accepted.
Create a client
One call creates the user and its account together, and links it to you.
POST /api/v1/reseller/users/add| Field | Required | Meaning |
|---|---|---|
name | yes | The client's name |
email | yes | Used as the login |
phone | yes | Phone number |
password | yes | Account password |
cost_per_min | no | What the client pays per minute. Applied to both the basic and premium model rate |
welcome_minutes_to_credit | no | Minutes credited on signup |
concurrent_call_limit | no | Maximum simultaneous calls for this client |
expiry_date | no | Account expiry, YYYY-MM-DD |
user_currency | no | ISO 4217 code, such as USD or INR |
The response returns the new user_id and organization_id, the starting balance, and
the rate you set.
List your clients
GET /api/v1/reseller/organizationsReturns every client under your account with its balance, rate, concurrency limit, and
users. Each user's active keys are listed by id and name only. No key secret is ever
returned by a listing.
Set what a client can do
Dashboard menus. Turn areas of the client's own dashboard on and off. Only the flags you pass change, and flags outside your own permissions are ignored rather than escalating.
POST /api/v1/reseller/users/access-control
{ "user_id": 1234, "dashboard_menu_access": { "is_bots_menu_access": true } }Expiry. Set a date the account stops working, or clear it. Pass null to remove an
existing expiry.
POST /api/v1/reseller/users/expiry
{ "user_id": 1234, "expiry_date": "2026-12-31" }Concurrency. How many calls the client can run at once. new_limit is the absolute
number you want, not a change to the current one.
POST /api/v1/reseller/concurrency
{ "child_organization_id": 5678, "new_limit": 5 }Stop a client
Block and restore. Blocking is instant and reversible. The client is signed out and its API keys stop at once, and nothing is deleted. Its numbers, campaigns, and history stay intact.
POST /api/v1/reseller/users/access
{ "blocked": true, "user_id": 1234 }Name either one user with user_id or a whole account with organization_id. Add
"detach_numbers": true with organization_id to also detach the account's numbers from
their agents, so nothing answers inbound on them. The previous agents come back in the
response so the detach can be undone.
Restore with "blocked": false. Restoring lifts only the blocks you placed, and clears
an expiry that ran out while the client was blocked. If a client was blocked by its own
admin, or is expired, restore leaves it alone.
POST /api/v1/reseller/users/access
{ "blocked": false, "organization_id": 5678 }Release. Releasing ends the relationship for good. Unlike blocking, it cannot be undone. It reverts the balance you funded, detaches every number and takes back the ones you bought, unlinks the account, and retires its logins so the same email can sign up fresh.
Preview what a release would do first. It changes nothing:
GET /api/v1/reseller/clients/release-preview?organization_id=5678The preview returns the balance and the share that comes back, each number and whether it returns to you, the users, and whether the client still has a live subscription. A release is refused while a subscription is active.
POST /api/v1/reseller/clients/release
{ "organization_id": 5678 }Next
- Client API keys: give a client its own key.
- Act as a client: run any call on a client's account.
- Credits: fund a client and track your margin.
