https://app.evoriqa.com/api/v1/reseller/clientsProvision a client workspace
Creates a client workspace on the given plan. Seat- and pooled-source-checked — over the org's client-seat cap, or when the plan's knowledge-source default would overdraw the org's pooled source allocation, returns 402 USAGE_LIMIT_REACHED. Supplying `clientEmail` sends a 30-day owner-handover invite to that address; the invite send shares a 20/hour-per-org bucket with dashboard client creation, so a tripped cap returns 429. Reseller endpoints additionally require the key to live on the organization owner's own (primary) workspace — any other workspace returns 403.
Requires scope reseller:write
Access is gated — enable it before your first call
The API is off by default. A request succeeds only when all three switches are on: the platform master switch (off by default), your organisation’s API toggle, and your plan or client entitlement. Any one off returns 403 API access is not enabled for this workspace.
Request body
Content type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
| name | string 1–120 chars | Required | The client workspace's name. |
| plan | string one of free · starter · pro | Optional | The client's plan; defaults to free. Business isn't offered to resold clients (422). |
| clientEmail | string up to 200 chars, email | Optional | Optional. When set, the workspace is provisioned for that client and a 30-day owner-handover invite is sent to this address. The invite send is rate-limited to 20/hour per org, shared with dashboard client creation. |
Request
curl -X POST "https://app.evoriqa.com/api/v1/reseller/clients" \
-H "x-api-key: $EVORIQA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Client Co", "plan": "free", "clientEmail": "owner@client.co" }'const res = await fetch("https://app.evoriqa.com/api/v1/reseller/clients", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.EVORIQA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Client Co",
"plan": "free",
"clientEmail": "owner@client.co"
}),
});
const responseBody = await res.json();import os
import requests
res = requests.post(
"https://app.evoriqa.com/api/v1/reseller/clients",
headers={"Authorization": f"Bearer {os.environ['EVORIQA_API_KEY']}"},
json={
"name": "Client Co",
"plan": "free",
"clientEmail": "owner@client.co"
},
)
body = res.json()Response
{
"success": true,
"data": {
"id": "d4c3b2a1-0f9e-4d8c-8b7a-6f5e4d3c2b1a",
"name": "Client Co"
}
}