PUT
https://app.evoriqa.com/api/v1/reseller/brandUpdate the brand
Updates white-label styling and sender identity. Requires an active reseller plan — a plan-less org returns 403. Logo upload is not in v1; set `logoUrl` instead. 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
Warning:
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 |
|---|---|---|---|
| appName | string 1–120 chars | Optional | White-label product name. |
| logoUrl | string up to 2000 chars, uri, or null | Optional | Logo URL (http/https). |
| primaryColor | string matches ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ | Optional | Brand colour. |
| emailFromName | string 1–120 chars | Optional | Sender display name. No line breaks or the address delimiters " < > , (header-injection guard). |
| emailReplyTo | string up to 200 chars, email, or null | Optional | Reply-to address. |
| supportUrl | string up to 2000 chars, uri, or null | Optional | Support link shown to clients (http/https). |
| showPoweredBy | boolean | Optional | Show the “powered by” footer. |
| selfServeSignup | boolean | Optional | Let visitors sign themselves up as clients on the org's custom domain. Takes effect only while that domain is live; a live domain is invite-only until this is on. |
| selfServePlan | string one of free · starter · pro | Optional | Platform plan a self-serve client's workspace starts on. A paid default is credit-metered from the reseller's pool and stays unfunded until credits are allocated — no subscription is created at sign-up. |
Request
curl
curl -X PUT "https://app.evoriqa.com/api/v1/reseller/brand" \
-H "x-api-key: $EVORIQA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "appName": "AcmeBot", "primaryColor": "#0f62fe", "selfServeSignup": true, "selfServePlan": "free" }'Node.js
const res = await fetch("https://app.evoriqa.com/api/v1/reseller/brand", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.EVORIQA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"appName": "AcmeBot",
"primaryColor": "#0f62fe",
"selfServeSignup": true,
"selfServePlan": "free"
}),
});
const responseBody = await res.json();Python
import os
import requests
res = requests.put(
"https://app.evoriqa.com/api/v1/reseller/brand",
headers={"Authorization": f"Bearer {os.environ['EVORIQA_API_KEY']}"},
json={
"appName": "AcmeBot",
"primaryColor": "#0f62fe",
"selfServeSignup": True,
"selfServePlan": "free"
},
)
body = res.json()Response
200 OK
{
"success": true,
"data": {
"appName": "AcmeBot",
"logoUrl": "https://cdn.acme.com/logo.png",
"primaryColor": "#0f62fe",
"emailFromName": "Acme Support",
"emailReplyTo": "support@acme.com",
"supportUrl": "https://acme.com/support",
"showPoweredBy": false,
"isCustom": true,
"selfServeSignup": false,
"selfServePlan": "free"
}
}