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

# Customizing your Branding with the API

> This help topic describes how to configure custom branding for your partner company using the Branding Profile API.

Custom branding lets you display your company logo, name, and website in the Portal for your managed accounts.\
For more information about custom branding, see [Adding Custom Branding](/partners/account/custom-branding).

The branding profile API lets you create, retrieve, and update custom branding.

## Prerequisites

Before you begin, ensure that you have a valid access token. For more information, see [Creating an API Key](/api/api-key).

## Authorization requirements

The branding profile endpoints have the following authorization requirements:

| **Endpoint**   | **Account Type**           |
| -------------- | -------------------------- |
| GET (Retrieve) | Partner or Managed Account |
| POST (Create)  | Partner only               |
| PUT (Update)   | Partner only               |

When a managed account retrieves a branding profile, the API returns the parent partner's branding profile.

## Retrieving a branding profile

To retrieve a branding profile, send a `GET` request to `/v3/companies/{companyUid}/branding-profile`.

### Response

A successful request returns a `200 OK` response with the branding profile details:

| **Field**             | **Type** | **Description**                              |
| --------------------- | -------- | -------------------------------------------- |
| `companyBrandingName` | string   | The display name for branding.               |
| `primaryLogoKey`      | string   | The storage key for the uploaded logo image. |
| `webUrl`              | string   | The company website URL.                     |

**Example response**

```json theme={"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}}
{
  "message": "Branding profile found",
  "data": {
    "companyBrandingName": "Partner Company",
    "primaryLogoKey": "primary/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "webUrl": "https://partner-company.com"
  }
}
```

### Error responses

| **Code**           | **Description**                                            |
| ------------------ | ---------------------------------------------------------- |
| `401 Unauthorized` | Authentication required.                                   |
| `403 Forbidden`    | The user's account type is not Partner or Managed Account. |

## Creating a branding profile

To create a branding profile, send a `POST` request to `/v3/companies/{companyUid}/branding-profile`.

### Request

| **Parameter**         | **Type** | **Required** | **Description**                                                                                                                                                                       |
| --------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `companyBrandingName` | string   | Yes          | The display name for branding. Must be 1-80 characters and cannot be blank or whitespace-only.                                                                                        |
| `primaryLogoImage`    | string   | Yes          | The logo image as a base64-encoded data URI.<br />Format: `data:image/\{type};base64,\{encoded-data}`.<br />Supported image types: PNG, JPEG, SVG, and WebP.<br />Maximum size: 2 MB. |
| `webUrl`              | string   | Yes          | The company website URL. Must be a valid URL including the protocol (`http://` or `https://`).                                                                                        |

**Example request body**

```json theme={"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}}
{
  "companyBrandingName": "Partner Company",
  "primaryLogoImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
  "webUrl": "https://partner-company.com"
}
```

### Response

A successful request returns a `201 Created` response with the branding profile details:

| **Field**             | **Type** | **Description**                              |
| --------------------- | -------- | -------------------------------------------- |
| `companyBrandingName` | string   | The display name for branding.               |
| `primaryLogoKey`      | string   | The storage key for the uploaded logo image. |
| `webUrl`              | string   | The company website URL.                     |

**Example response**

```json theme={"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}}
{
  "message": "Branding profile created successfully",
  "data": {
    "companyBrandingName": "Partner Company",
    "primaryLogoKey": "primary/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "webUrl": "https://partner-company.com"
  }
}
```

### Error responses

| **Code**           | **Description**                                                                                                                                                    |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `400 Bad Request`  | Invalid request parameters.<br />Common causes: blank or whitespace-only branding name, invalid logo format or encoding, logo exceeds 2 MB, or invalid URL format. |
| `401 Unauthorized` | Authentication required.                                                                                                                                           |
| `403 Forbidden`    | User must be a Company Admin in the partner account.                                                                                                               |

## Updating a branding profile

To update a branding profile, send a `PUT` request to `/v3/companies/{companyUid}/branding-profile`.

### Request

| **Parameter**         | **Type** | **Required** | **Description**                                                                                                                                                                                                                  |
| --------------------- | -------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `companyBrandingName` | string   | Yes          | The display name for branding. Must be 1-80 characters and cannot be blank or whitespace-only.                                                                                                                                   |
| `primaryLogoImage`    | string   | No           | The logo image as a base64-encoded data URI.<br />Format: `data:image/\{type};base64,\{encoded-data}`.<br />Supported image types: PNG, JPEG, SVG, and WebP.<br />Maximum size: 2 MB.<br />Only include this to update the logo. |
| `webUrl`              | string   | Yes          | The company website URL. Must be a valid URL including the protocol (`http://` or `https://`).                                                                                                                                   |

**Example request body**

```json theme={"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}}
{
  "companyBrandingName": "Updated Partner Company",
  "webUrl": "https://updated-partner-company.com"
}
```

### Response

A successful request returns a `200 OK` response with the updated branding profile details:

| **Field**             | **Type** | **Description**                              |
| --------------------- | -------- | -------------------------------------------- |
| `companyBrandingName` | string   | The display name for branding.               |
| `primaryLogoKey`      | string   | The storage key for the uploaded logo image. |
| `webUrl`              | string   | The company website URL.                     |

**Example response**

```json theme={"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}}
{
  "message": "Branding profile updated successfully",
  "data": {
    "companyBrandingName": "Updated Partner Company",
    "primaryLogoKey": "primary/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "webUrl": "https://updated-partner-company.com"
  }
}
```

### Error responses

| **Code**           | **Description**                                                                                                                                                    |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `400 Bad Request`  | Invalid request parameters.<br />Common causes: blank or whitespace-only branding name, invalid logo format or encoding, logo exceeds 2 MB, or invalid URL format. |
| `401 Unauthorized` | Authentication required.                                                                                                                                           |
| `403 Forbidden`    | User must be a Company Admin in the partner account.                                                                                                               |
