---
title: "Add a graphic to a brand kit"
description: "Add a graphic from a public https image url (fetched once, no redirects): it goes into the image library, counted against its storage, and is pinned with its role (default logo). `POST /api/v1/brand-kits/{id}/graphics`"
url: https://www.unitpost.com/docs/email/post-brand-kits-id-graphics
section: "Email API reference"
updated: 2026-10-13
---
# Add a graphic to a brand kit

`POST /api/v1/brand-kits/{id}/graphics`

Add a graphic from a public https image `url` (fetched once, no redirects): it goes into the image library, counted against its storage, and is pinned with its `role` (default `logo`). To pin an image already in the library, [Update a brand kit](https://www.unitpost.com/docs/email/patch-brand-kits-id) with `graphics`. Requires the `branding:write` capability.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | — |

## Request body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `url` | string | yes | A public https PNG, JPEG, GIF or WebP (fetched once, no redirects; up to 5 MB). |
| `role` | enum | no | Default `logo`. One of: `logo`, `logo_light`, `logo_dark`, `mark`, `background`, `other`. |
| `label` | string | no | — |

## Response fields (201)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | — |
| `brand_kit` | object | yes | — |
| `image` | object | yes | — |

## Responses

| Status | Description |
| --- | --- |
| 201 | The profile and the new image. |
| 400 | The body isn't JSON. |
| 401 | Missing or invalid API key. |
| 403 | Insufficient scope, or the plan's image storage is full (`limit_reached`). |
| 404 | Brand kit not found. |
| 422 | An image that couldn't be fetched or read, the profile's graphics cap, or an unknown key. |
| 429 | Too many graphics added; retry after the wait. |
| 503 | `engine_unavailable`: image hosting isn't configured on this deployment. |

## Example request

```bash
curl -X POST 'https://www.unitpost.com/api/v1/brand-kits/bk_123/graphics' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0' \
  -H 'Content-Type: application/json' \
  -d '{ }'
```

## Example response (201)

```json
{
  "object": "brand_kit_graphic",
  "brand_kit": {
    "object": "brand_kit",
    "id": "id_123",
    "name": "Example",
    "is_default": false,
    "website_url": "https://example.com",
    "description": "string",
    "tone": "NEUTRAL",
    "voice_notes": "string",
    "industry": "string",
    "core_pages": [
      {
        "url": "https://example.com",
        "title": "string"
      }
    ],
    "extracted": {
      "colors": [
        {
          "hex": "string",
          "label": "string"
        }
      ],
      "logo_urls": [
        "string"
      ],
      "background_urls": [
        "string"
      ],
      "fonts": [
        "string"
      ]
    },
    "graphics": [
      {
        "library_image_id": "library_image_123",
        "image_id": "image_123",
        "path": "string",
        "role": "logo",
        "label": "string"
      }
    ],
    "source": "string",
    "updated_at": "2026-01-01T00:00:00.000Z"
  },
  "image": {
    "object": "library_image",
    "id": "id_123",
    "path": "string",
    "url": "https://example.com",
    "filename": "string",
    "content_type": "string",
    "size": 1,
    "width": 0,
    "height": 0,
    "alt": "string",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
```

## Links

- HTML reference (with Node.js, Python, Ruby, PHP, Laravel, Go, Java, Rust, .NET and CLI examples): https://www.unitpost.com/docs/email/post-brand-kits-id-graphics
- OpenAPI 3.1 (full schemas): https://www.unitpost.com/api/v1/openapi.json
