reseller

POST /v1/reseller/ai/credits/clients/{org_id}

Give one of your clients AI credit, or take unspent credit back.

All reseller endpoints

Authentication

Send an API key as a bearer token. The key must carry the reseller.manage permission; a key without it is refused with 403, not 404.

Where your organisation id goes

This endpoint takes your organisation id in the URL itself, as org_id. Substitute it into the path — there is no header or query parameter that will do instead.

Your organisation id is on the API keys screen in your dashboard, beside the key itself. It is the same id in every call you make.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X POST https://api.zinndigital.com/v1/reseller/ai/credits/clients/{org_id} \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "delta_micros": <integer>, "reason": <string> }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Moves credit between your pool and one client's balance in one transaction: a positive `delta_micros` gives, a negative one takes back. A client who has already **spent** the credit cannot be taken below zero — the request is refused and names what is left. A client that is not yours is refused with the same code and message as one that does not exist, so this cannot be used to discover whether an organization id is real. This is the manual route, for a trial, a goodwill gesture, or a bundle sold offline. The self-serve route is your client buying a pack from you, which draws on the same pool. Requires `reseller.manage`.

Parameters

NameTypeRequiredWhat it is
org_id (path)UuidYesThe client organization whose balance moves. Must be one of yours.
org_id (query)UuidNoWhich of YOUR organizations is acting. Not the client.

Request body

NameTypeRequiredWhat it is
delta_microsintegerYesSigned USD micros. Positive gives credit to the client, negative takes unspent credit back. Zero is refused — a ledger row that means nothing.
reasonstringYesWhy. Required, for the same reason a staff adjustment requires one: a movement of somebody's money with no stated cause is unanswerable three months later.

Response

NameTypeRequiredWhat it is
pool_balance_microsintegerYes
client_balance_microsintegerYes
typical_callsintegerYesRoughly how many AI questions the client's new balance buys. An **illustration** — a long article costs many times a short question.

Errors this endpoint can return

401 · 403 · 404 · 422 · 429