Every endpoint on this page requires an API key created in your white-label workspace with the
platform:read / platform:write scopes, plus a live owner/admin membership in that workspace. Platform admins acting from their own root workspace get the same endpoints automatically, scoped to direct platform customers instead of a reseller’s — never another reseller’s customers.Get platform users
GET /platform/users lists the customers in your scope, newest first. Paginate with limit / offset (see pagination) and search by name or email with q.
Register a platform user
POST /platform/users creates a new customer account and workspace on your behalf. Two modes:
invite(default) — no password required. The account is created without credentials; pair it with a login or token call below to actually get the customer (or your own frontend) into it.password— you choose an initial password (8+ characters) for the customer up front.
409 — the message never reveals whether that account is inside or outside your own scope.
Log in a platform user
POST /platform/users/login authenticates a customer with their own email and password and mints them an access token on success — use it to build your own login form / custom auth flow on your white-label platform instead of sending customers to the hosted login page. Login is rate-limited per IP + email, and every failure — unknown email, wrong password, an email that belongs to someone outside your scope — returns the exact same generic 401, so a caller can never use the response to guess which accounts exist.
Create a user token
POST /platform/users/{user_id}/token mints an API key for a customer without needing their password at all — the right call for a dashboard you’re building, an onboarding email sequence, or any automated workflow acting on the customer’s behalf.
scopes grants full access for that customer, not just the scopes your own operator credential happens to have.
Log out a platform user
POST /platform/users/{user_id}/logout revokes every active API key and OAuth token the customer holds across the workspace(s) in your scope — the way to force a sign-out, for example after an account is compromised or your relationship with that customer ends. It’s idempotent: logging out an already-logged-out customer just returns zero counts.
Transfer balance
POST /platform/users/{user_id}/balance moves signed credits between your own workspace wallet and a customer’s:
- Positive
credits— grants credits from your wallet to the customer (the standard way to provision a customer account). - Negative
credits— reclaims credits back from the customer into your wallet.
Manage API keys
Every workspace — including the customer workspaces you provision through this API — can manage its own API keys self-service under/api-keys, the same endpoints that power Settings → API Keys in the dashboard.
scopes on a new key must be a subset of the calling credential’s own scopes (a credential with unrestricted access may grant any scope, and an omitted scopes defaults to the caller’s own). GET /api-keys lists a workspace’s keys without ever exposing the secret; DELETE /api-keys/{id} revokes one and is idempotent.
MCP
Everything above is also available as MCP tools, grouped in theplatform toolset (plus list_api_keys / create_api_key / revoke_api_key in the settings toolset). Connect with the toolset selector:
There’s no
login_platform_user tool — logging in stays REST-only, for the reason above. The MCP tools accept either a user_id or an email to identify the target customer; REST always takes user_id from the URL path.