> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Branding

> Partial update of the application's white-label branding. Send `application/json` to change colors, fonts, radii and UI options, or `multipart/form-data` to upload logo images. Only the fields you include are changed. Custom domain and white-label email cannot be set through this endpoint — use the Business Console for those.

export const AgentPromptAccordion = ({prompt, title = "AI Agent Integration Prompt"}) => {
  const [copied, setCopied] = React.useState(false);
  const handleCopy = e => {
    e.stopPropagation();
    if (!prompt) return;
    navigator.clipboard.writeText(prompt.trim()).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    });
  };
  const agents = ["Claude Code", "Codex", "Cursor", "Devin", "Windsurf", "GitHub Copilot"];
  return <div className="didit-agent-card">
      {}
      <div className="didit-agent-titlebar">
        <div className="didit-agent-dots" aria-hidden="true">
          <span className="didit-agent-dot didit-agent-dot-red"></span>
          <span className="didit-agent-dot didit-agent-dot-yellow"></span>
          <span className="didit-agent-dot didit-agent-dot-green"></span>
        </div>
        <span className="didit-agent-filename">{title}</span>
        <button type="button" className={`didit-agent-copy ${copied ? "didit-agent-copy-copied" : ""}`} onClick={handleCopy} title="Copy prompt to clipboard" aria-label={copied ? "Copied!" : "Copy prompt to clipboard"}>
          {copied ? <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <path d="M3 8.5l3.5 3.5L13 4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
              </svg>
              <span>Copied</span>
            </> : <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <rect x="5" y="5" width="9" height="9" rx="1.5" stroke="currentColor" strokeWidth="1.5" />
                <path d="M11 5V3.5A1.5 1.5 0 0 0 9.5 2h-6A1.5 1.5 0 0 0 2 3.5v6A1.5 1.5 0 0 0 3.5 11H5" stroke="currentColor" strokeWidth="1.5" />
              </svg>
              <span>Copy</span>
            </>}
        </button>
      </div>

      {}
      <pre className="didit-agent-body"><code>{prompt.trim()}</code></pre>

      {}
      <div className="didit-agent-footer">
        <span className="didit-agent-footer-label">Paste into</span>
        <div className="didit-agent-chips">
          {agents.map(name => <span key={name} className="didit-agent-chip">{name}</span>)}
        </div>
      </div>
    </div>;
};

<AgentPromptAccordion
  title="Update Branding Prompt"
  prompt={`Goal: Update the white-label branding for the application tied to an API key.

Endpoint: PATCH https://verification.didit.me/v3/customization/
Auth header: x-api-key: <DIDIT_API_KEY>

Two content types:
- application/json  -> change colors, fonts, radii and UI options
- multipart/form-data -> upload logo images (image_square, image_rectangular, image_favicon)

PARTIAL update: only the fields you send are changed. The application is resolved from the API key (no path params).

JSON body fields:
- Colors (hex '#RRGGBB' or '#RRGGBBAA'): color_primary, color_secondary, color_background, color_panel, color_panel_10, color_on_panel_1, color_on_panel_2, color_on_background, color_button_1, color_button_2, color_button_text_1, color_button_text_2, color_pill_text
- border_radius_panel, border_radius_buttons (integers >= 0)
- font_family (Google Font name), font_weight (must be available for the family)
- app_public_name (string|null), privacy_policy_url (string|null)
- skip_welcome_screen, disable_login_with_didit, hide_progress_bar (boolean)
- callback_seconds (integer >= 0)
- delete_logo_square, delete_logo_rectangular, delete_favicon (boolean) -> remove an existing logo

Logo upload (multipart/form-data) fields:
- image_square (1:1, max 1 MB)
- image_rectangular (2:1, max 1 MB)
- image_favicon (max 500 KB)
Allowed image types: png, jpg, jpeg, webp.

NOT allowed here (Business Console only): custom domain and white-label email.

curl (JSON):
curl -X PATCH 'https://verification.didit.me/v3/customization/' \\
-H 'x-api-key: YOUR_API_KEY' \\
-H 'Content-Type: application/json' \\
-d '{"color_primary": "#123456", "font_family": "AR One Sans"}'

curl (logo upload):
curl -X PATCH 'https://verification.didit.me/v3/customization/' \\
-H 'x-api-key: YOUR_API_KEY' \\
-F 'image_rectangular=@logo.png' \\
-F 'image_favicon=@favicon.ico'

Response 200: the full updated BrandingCustomization object (same shape as GET).

Failure modes:
- 400 — validation. Examples: { "color_primary": ["Invalid color format. Use '#RRGGBB' or '#RRGGBBAA' format."] }, { "image_rectangular": ["Image aspect ratio must be 2:1. Got 1024x1024 image dimensions"] }
- 401 — missing/invalid x-api-key.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`}
/>

## Overview

Partial-updates the white-label branding for the application resolved from your API key. Send `application/json` to change colors, fonts, radii and UI options, or `multipart/form-data` to upload logos. Only the fields you include are changed — everything else is left untouched.

## When to use it

* **Theme the flow** — set your brand colors, font and corner radii.
* **Upload logos** — set the square logo, rectangular logo and favicon.
* **Tune the experience** — set the public app name, privacy policy URL, and toggles like skipping the welcome screen or hiding the progress bar.

## Uploading logos

Send logos as `multipart/form-data`:

* `image_square` — 1:1 aspect ratio, max **1 MB**
* `image_rectangular` — 2:1 aspect ratio, max **1 MB**
* `image_favicon` — max **500 KB**

Allowed image types are `png`, `jpg`, `jpeg` and `webp`. The response returns the resulting `logo_square`, `logo_rectangular` and `favicon` URLs. To remove a logo, send the matching `delete_logo_square`, `delete_logo_rectangular` or `delete_favicon` flag as `true`.

## Notes

* The application is resolved from the API key — there are no path parameters.
* Hex colors accept `#RRGGBB` or `#RRGGBBAA`. `font_weight` must be a weight available for the selected `font_family`.
* **Custom domain and white-label email are not configurable here.** Manage those in the [Business Console](/console/white-label).

## Permissions

The API key must be able to update customization for the application.

## Related

* [Get branding](/management-api/customization/get)
* [White-label in the Console](/console/white-label)


## OpenAPI

````yaml PATCH /v3/customization/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/customization/:
    patch:
      tags:
        - Customization
      summary: Update branding customization
      description: >-
        Partial update of the application's white-label branding. Send
        `application/json` to change colors, fonts, radii and UI options, or
        `multipart/form-data` to upload logo images. Only the fields you include
        are changed. Custom domain and white-label email cannot be set through
        this endpoint — use the Business Console for those.
      operationId: update_customization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandingCustomizationUpdate'
            examples:
              Update colors and font:
                summary: Change branding colors and font
                value:
                  color_primary: '#123456'
                  color_button_1: '#2567FF'
                  font_family: AR One Sans
                  border_radius_buttons: 16
              Update UI options:
                summary: Change public name and flow options
                value:
                  app_public_name: Acme Verify
                  privacy_policy_url: https://acme.com/privacy
                  skip_welcome_screen: true
                  hide_progress_bar: true
                  callback_seconds: 5
              Remove a logo:
                summary: Delete the current rectangular logo
                value:
                  delete_logo_rectangular: true
          multipart/form-data:
            schema:
              type: object
              description: >-
                Use multipart/form-data only to upload logo images. Branding
                fields above may also be sent as form fields in the same
                request.
              properties:
                image_square:
                  type: string
                  format: binary
                  description: >-
                    Square logo (1:1 aspect ratio). Max **1 MB**. Allowed:
                    `png`, `jpg`, `jpeg`, `webp`.
                image_rectangular:
                  type: string
                  format: binary
                  description: >-
                    Rectangular logo (2:1 aspect ratio). Max **1 MB**. Allowed:
                    `png`, `jpg`, `jpeg`, `webp`.
                image_favicon:
                  type: string
                  format: binary
                  description: Favicon image. Max **500 KB**.
            example:
              image_rectangular: (binary PNG logo, 2:1)
              image_favicon: (binary favicon)
      responses:
        '200':
          description: >-
            Branding updated. The FULL branding object is returned (all fields,
            not just the ones you changed).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandingCustomization'
              examples:
                Updated:
                  value:
                    color_primary: '#123456'
                    color_secondary: '#9DA1A1'
                    color_background: '#FFFFFF'
                    color_panel: '#2567FF'
                    color_panel_10: '#1A1A1A'
                    color_on_panel_1: '#9DA1A1'
                    color_on_panel_2: '#F4F4F6'
                    color_on_background: '#000000'
                    color_button_1: '#2567FF'
                    color_button_2: '#F8F8F8'
                    color_button_text_1: '#FFFFFF'
                    color_button_text_2: '#000000'
                    color_pill_text: '#111827'
                    border_radius_panel: 10
                    border_radius_buttons: 16
                    font_family: AR One Sans
                    font_weight: '400'
                    font_url: https://fonts.googleapis.com/css2?family=AR+One+Sans
                    logo_square: null
                    logo_rectangular: https://cdn.didit.me/white_label/logo_rectangular/...
                    favicon: null
                    app_public_name: Acme Verify
                    privacy_policy_url: https://acme.com/privacy
                    skip_welcome_screen: true
                    disable_login_with_didit: false
                    hide_progress_bar: false
                    callback_seconds: 3
        '400':
          description: >-
            Invalid body — e.g. malformed hex color, unknown font family or
            weight, a logo failing the size/aspect-ratio check, or a
            Business-Console-only field (`domain`, `from_email`,
            `verify_domain`, `force_remove_domain`, `verify_email_domain`,
            `force_remove_email_domain`, and their read-only companions). Also
            returned when setting `disable_login_with_didit` to `false` while a
            custom domain is configured.
          content:
            application/json:
              examples:
                Bad color:
                  value:
                    color_primary:
                      - >-
                        Invalid color format. Use '#RRGGBB' or '#RRGGBBAA'
                        format.
                Bad logo:
                  value:
                    image_rectangular:
                      - >-
                        Image aspect ratio must be 2:1. Got 1024x1024 image
                        dimensions
                Console-only field:
                  value:
                    domain:
                      - Manage this field in the Business Console.
                Bad font weight:
                  value:
                    font_weight:
                      - >-
                        Font weight 950 is not available for Inter. Available
                        weights are: 100, 200, 300, 400, 500, 600, 700, 800, 900
        '403':
          description: >-
            API key missing, malformed, expired, or scoped to a different
            application. Didit returns 403 (never 401) for all authentication
            failures on this endpoint.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: Rate limit exceeded. Retry with exponential backoff.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X PATCH 'https://verification.didit.me/v3/customization/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"color_primary": "#123456", "font_family": "AR One Sans"}'
        - lang: curl
          label: curl (logo upload)
          source: |-
            curl -X PATCH 'https://verification.didit.me/v3/customization/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -F 'image_rectangular=@logo.png' \
              -F 'image_favicon=@favicon.ico'
        - lang: python
          label: Python
          source: |-
            import requests

            resp = requests.patch(
                'https://verification.didit.me/v3/customization/',
                headers={'x-api-key': 'YOUR_API_KEY', 'Content-Type': 'application/json'},
                json={'color_primary': '#123456', 'font_family': 'AR One Sans'},
            )
            resp.raise_for_status()
            print(resp.json()['color_primary'])

            # Upload a logo (multipart):
            with open('logo.png', 'rb') as logo:
                requests.patch(
                    'https://verification.didit.me/v3/customization/',
                    headers={'x-api-key': 'YOUR_API_KEY'},
                    files={'image_rectangular': logo},
                )
        - lang: javascript
          label: JavaScript
          source: >-
            const resp = await
            fetch('https://verification.didit.me/v3/customization/', {
              method: 'PATCH',
              headers: { 'x-api-key': process.env.DIDIT_API_KEY, 'Content-Type': 'application/json' },
              body: JSON.stringify({ color_primary: '#123456', font_family: 'AR One Sans' }),
            });

            const branding = await resp.json();

            console.log(branding.color_primary);
components:
  schemas:
    BrandingCustomizationUpdate:
      type: object
      description: >-
        Partial branding update body. Provide only the fields you want to
        change. Hex colors accept `#RRGGBB` or `#RRGGBBAA`. Custom domain and
        white-label email are not accepted here.
      properties:
        color_primary:
          type: string
          description: Headers / primary text color.
        color_secondary:
          type: string
          description: Paragraph / secondary text color.
        color_background:
          type: string
          description: Page background color.
        color_panel:
          type: string
          description: Panel / accent color.
        color_panel_10:
          type: string
          description: Panel color at 10% opacity.
        color_on_panel_1:
          type: string
          description: Support text color on panels.
        color_on_panel_2:
          type: string
          description: Pill / badge color on panels.
        color_on_background:
          type: string
          description: Text color on background.
        color_button_1:
          type: string
          description: Primary button color.
        color_button_2:
          type: string
          description: Secondary button color.
        color_button_text_1:
          type: string
          description: Primary button text color.
        color_button_text_2:
          type: string
          description: Secondary button text color.
        color_pill_text:
          type: string
          description: Text color for pills, inputs and selectors.
        border_radius_panel:
          type: integer
          minimum: 0
          description: Panel corner radius in pixels.
        border_radius_buttons:
          type: integer
          minimum: 0
          description: Button corner radius in pixels.
        font_family:
          type: string
          description: Google Font family name (e.g. `Inter`, `AR One Sans`).
        font_weight:
          type: string
          description: >-
            Font weight available for the selected family (e.g. `regular`,
            `500`, `700`).
        app_public_name:
          type: string
          nullable: true
          description: Public name shown in the verification flow.
        privacy_policy_url:
          type: string
          nullable: true
          description: Privacy policy URL shown to the end user.
        skip_welcome_screen:
          type: boolean
          description: Skip the initial welcome screen.
        disable_login_with_didit:
          type: boolean
          description: >-
            Continue as guest instead of showing the login-with-Didit screen.
            Cannot be set back to `false` while a custom domain is configured
            (400).
        hide_progress_bar:
          type: boolean
          description: Hide the progress bar during the flow.
        callback_seconds:
          type: integer
          minimum: 0
          description: Delay (seconds) before redirecting to the callback URL.
        delete_logo_square:
          type: boolean
          description: When `true`, removes the current square logo.
        delete_logo_rectangular:
          type: boolean
          description: When `true`, removes the current rectangular logo.
        delete_favicon:
          type: boolean
          description: When `true`, removes the current favicon.
    BrandingCustomization:
      type: object
      description: >-
        White-label branding for an application: colors, fonts, radii, logo URLs
        and UI/UX options. Logo URLs are read-only (set them by uploading
        images). Custom domain and white-label email are not included.
      properties:
        color_primary:
          type: string
        color_secondary:
          type: string
        color_background:
          type: string
        color_panel:
          type: string
        color_panel_10:
          type: string
        color_on_panel_1:
          type: string
        color_on_panel_2:
          type: string
        color_on_background:
          type: string
        color_button_1:
          type: string
        color_button_2:
          type: string
        color_button_text_1:
          type: string
        color_button_text_2:
          type: string
        color_pill_text:
          type: string
        border_radius_panel:
          type: integer
        border_radius_buttons:
          type: integer
        font_family:
          type: string
        font_weight:
          type: string
        font_url:
          type: string
          nullable: true
          description: >-
            Read-only. Resolved Google Fonts stylesheet URL for the selected
            family.
        logo_square:
          type: string
          nullable: true
          description: Read-only URL of the square logo. Upload via `image_square`.
        logo_rectangular:
          type: string
          nullable: true
          description: >-
            Read-only URL of the rectangular logo. Upload via
            `image_rectangular`.
        favicon:
          type: string
          nullable: true
          description: Read-only URL of the favicon. Upload via `image_favicon`.
        app_public_name:
          type: string
          nullable: true
        privacy_policy_url:
          type: string
          nullable: true
        skip_welcome_screen:
          type: boolean
        disable_login_with_didit:
          type: boolean
        hide_progress_bar:
          type: boolean
        callback_seconds:
          type: integer
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````