White-labeling¶
Deployment-wide branding for a reseller running AiFlow under their own name for their own clients: brand name, logo, and two colors, set once and applied everywhere "AiFlow" and its default indigo and violet colors would otherwise show. Unlike everything else covered in these guides, this isn't per-agent: it's one setting for the whole deployment. A reseller runs one deployment per client, each with its own branding, not one deployment multiplexing many brands.
Endpoint family¶
Authentication and roles¶
GET is public and unauthenticated: the admin dashboard's login page and
every embedded widget's config fetch both need it before any session
exists. PUT requires Owner or Admin: the same bar as every other
deployment-wide (not per-agent) setting.
What each field controls¶
| Field | Applied to |
|---|---|
brand_name |
Admin dashboard sidebar and page title text; login page heading. |
brand_logo_url |
Replaces the default "A" badge in the sidebar and on the login page. |
brand_primary_color |
The admin dashboard's primary accent (buttons, focus rings, active nav) and the widget's default --af-accent. |
brand_accent_color |
A secondary admin dashboard accent shade and the widget's default --af-accent-2. |
Every field is optional and independent. Leaving one unset (or setting it
back to null) falls back to AiFlow's own default for just that field. A
deployment that never calls PUT sees no change at all.
Read the current branding¶
{
"brand_name": null,
"brand_logo_url": null,
"brand_primary_color": null,
"brand_accent_color": null
}
Set it¶
| Field | Type | Required | Description |
|---|---|---|---|
brand_name |
string | No | Up to 120 characters. |
brand_logo_url |
string | No | Up to 2048 characters, any image URL. |
brand_primary_color |
string | No | 6-digit hex, e.g. #e0592a. |
brand_accent_color |
string | No | 6-digit hex, e.g. #f2a154. |
The admin dashboard picks up a new value on its next page load (each page
reads GET /api/v1/branding once per session). An already-open widget
embed keeps the colors it started with. A page the widget is embedded on
picks up the new value the next time a visitor loads it.
Building a custom widget client¶
The drop-in embed applies
brand_primary_color and brand_accent_color automatically from
GET /api/v1/agents/{slug}/widget/config's response (see
embedding-the-widget).
A custom client built directly against the widget's session and
WebSocket API, instead of the drop-in embed, would need to apply the
same two colors itself: setting --af-accent and --af-accent-2 (or
your own equivalent custom properties) on whatever element hosts the
widget's styles.
Next¶
- Team: who can reach Settings → Branding (Owner or Admin).
- Embedding the widget: where the widget picks up its default accent color from.