Profile Branding
Set the logo, display name, and primary color that render on the UniPost-hosted Connect page. This is how you make the OAuth onboarding flow look like your product instead of UniPost.
Where the fields appear
The hosted Connect page at app.unipost.dev/connect/{platform} reads these three values at render time — there’s no cache layer, so a PATCH is live on the very next page load. See the white-label guide for the full setup flow that combines branding with platform credentials and Connect sessions.
Plan packaging matters here: Basic and up can brand the hosted Connect page; only Growth and Team can hide the Powered by UniPost footer.
| Field | Where it appears on the Connect page |
|---|---|
| branding_logo_url | Top-left mark |
| branding_display_name | Page title + tab name |
| branding_primary_color | Primary button and accent color |
| branding_hide_powered_by | Hides the footer attribution (Growth / Team only) |
Update branding
PATCH is partial — send only the fields you want to change. Each field accepts an empty string to unset (falls back to UniPost defaults).
SDK support for profile branding management is coming soon. For now, configure this endpoint from the dashboard or call the REST route directly.
Field validation
| Field | Rule | Reason |
|---|---|---|
| branding_logo_url | HTTPS only; common image MIME types; ≤ 2 KB URL length | The Connect page runs on HTTPS; mixed content would be blocked by the browser |
| branding_display_name | ≤ 60 characters | Keeps the browser title + meta description readable across devices |
| branding_primary_color | 6-digit hex e.g. #10b981 | Matches the color-mix() and other CSS variables in the Connect page stylesheet |
A bad value returns 422 VALIDATION_ERROR with a human-readable message naming the offending field. No partial updates happen on validation failure — the entire PATCH is atomic.
Read current branding
Branding fields come back on the standard profile read endpoint alongside id, name, workspace_id, and timestamps.
Null values mean the field has never been set for this profile and the hosted Connect page will use UniPost’s default appearance for that slot.
Multiple profiles per workspace
Branding is scoped per profile, not per workspace. If your workspace has multiple profiles (e.g., separate brands under one parent company), each profile can carry its own logo / name / color. Connect sessions created against a given profile use that profile’s branding.
Errors
| Status | Code | When |
|---|---|---|
| 401 | UNAUTHORIZED / unauthorized | Missing or invalid API key |
| 404 | NOT_FOUND / not_found | Profile does not belong to the caller’s workspace |
| 422 | VALIDATION_ERROR / validation_error | A field failed validation (URL scheme, length, or hex format) |
Public API errors also include a lowercase error.normalized_code alias and a top-level request_id for tracing.