MCP is live.Set upAsk the community
OmniDimension
Your clients

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
FieldRequiredMeaning
nameyesThe client's name
emailyesUsed as the login
phoneyesPhone number
passwordyesAccount password
cost_per_minnoWhat the client pays per minute. Applied to both the basic and premium model rate
welcome_minutes_to_creditnoMinutes credited on signup
concurrent_call_limitnoMaximum simultaneous calls for this client
expiry_datenoAccount expiry, YYYY-MM-DD
user_currencynoISO 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/organizations

Returns 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=5678

The 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

On this page