Branding endpoints manage white-label customisation: logo, colors, custom domain, transactional email templates.
Profile
| Method | Path | Description |
|---|
| GET | `/api/v1/branding` | Get full branding profile |
| PUT | `/api/v1/branding` | Update |
Assets
| Method | Path | Description |
|---|
| POST | `/api/v1/branding/assets/upload` | Upload a logo / favicon / OG image |
| DELETE | `/api/v1/branding/assets/:type` | Remove |
Domain
| Method | Path | Description |
|---|
| POST | `/api/v1/branding/domain` | Set custom domain |
| POST | `/api/v1/branding/domain/verify` | Verify DNS |
| DELETE | `/api/v1/branding/domain` | Remove |
| POST | `/api/v1/branding/domain/ssl/provision` | Provision SSL |
Email Templates
| Method | Path | Description |
|---|
| GET | `/api/v1/branding/email-templates` | List |
| GET | `/api/v1/branding/email-templates/:key` | Get one |
| PUT | `/api/v1/branding/email-templates/:key` | Update |
| POST | `/api/v1/branding/email-templates/:key/test` | Send test email |
| POST | `/api/v1/branding/email-templates/:key/reset` | Reset to default |
Public
| Method | Path | Description |
|---|
| GET | `/api/v1/branding/manifest` | Public manifest (no auth) |
| GET | `/api/v1/branding/css` | Public CSS bundle (no auth) |
Every response uses the standard envelope:
{
"success": true,
"data": { /* resource or array */ },
"meta": { "total": 100, "cursor": "...", "hasMore": true },
"error": { "code": "ERROR_CODE", "message": "Human readable" }
}
error is omitted on success; meta is omitted when not paginating.
Rate Limits
Subject to the standard 200 req/min/tenant authenticated limit. See [Rate Limits](/docs/api-reference/rate-limits) for full details and the per-endpoint overrides.