Update branding
Update the organization's branding settings — color, social links, and logo metadata.
PATCH /api/app/branding
Updates the organization's branding settings. All fields are optional — only the fields you include are written. At least one field must be present.
To upload a logo, use Upload logo URL to obtain a pre-signed S3 URL, upload the file directly to S3, then call this endpoint with the resulting logoUrl and logoKey.
Requires the customBranding feature entitlement.
Request
See API Basics for required headers.
Body
| Field | Type | Required | Description |
|---|---|---|---|
primaryColor | string | No | Hex color code, e.g. "#2563eb". Must be a valid 6-digit hex value with leading #. |
instagram | string | No | Instagram handle without the @. Max 30 characters. |
twitterX | string | No | X (Twitter) handle without the @. Max 15 characters. |
facebook | string | No | Facebook page URL. Max 255 characters. |
nextdoor | string | No | Nextdoor business page URL. Max 255 characters. |
logoUrl | string | No | Public CDN URL returned by the Upload logo URL endpoint. Max 512 characters. |
logoKey | string | No | Internal S3 key returned by the Upload logo URL endpoint. Required when setting logoUrl. Max 512 characters. |
logoUrl and logoKey should always be set together. Pass both values from the Upload logo URL response — the key is retained internally to enable future logo deletion from S3.
Sample request
curl -X PATCH https://api.recomly.com/api/app/branding \
-H "Authorization: Bearer rk_live_abc123:def456" \
-H "Content-Type: application/json" \
-d '{
"primaryColor": "#16a34a",
"instagram": "mybusiness",
"twitterX": "mybusiness"
}'Sample response
Status: 200 OK
{
"branding": {
"orgId": "a1b2c3d4-0000-4000-8000-e5f6a7b8c9d0",
"updatedAt": "2026-04-07T18:35:00.000Z",
"primaryColor": "#16a34a",
"instagram": "mybusiness",
"twitterX": "mybusiness"
}
}The response reflects the full branding record after the update. Optional fields that have never been set are omitted.
Error responses
See API Basics for standard status codes and error response format.
| Status | When |
|---|---|
400 Bad Request | A field failed validation (e.g. invalid hex color, value too long, no fields provided). |
403 Forbidden | Caller does not have the admin role, or the customBranding feature is not enabled for this organization. |

