---
title: "List Brand Kit Images"
method: GET
path: "/brand-kits/{brand_kit_id}/images"
tags: ["brand-kits"]
---

# List Brand Kit Images

`GET /brand-kits/{brand_kit_id}/images`

## Request

- Base URL: `https://api.moda.app/v1`
- URL: `https://api.moda.app/v1/brand-kits/{brand_kit_id}/images`
- Auth: HTTP bearer

List images attached to a brand kit (ENG-2585).

Returns one row per attached image across logos + design assets so
integrators can reconcile state with ``addBrandKitImage`` /
``removeBrandKitImage`` and avoid duplicate uploads when migrating
legacy kits.

Returns ``404 not_found`` if the brand kit does not exist, has been
deleted, or the caller lacks team access — the three cases are
collapsed so the endpoint does not leak existence of brand kits in
other teams.

## Path parameters

- `brand_kit_id` string, required: Prefixed ``bk_`` wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, **a bare UUID string is also accepted** in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working), as is **the prefix over a UUID body** (``bk_00000000-0000-4000-8000-000000000000``). All three are permanent, supported inputs; only the canonical form is ever emitted.

## Headers

- `Moda-Version` '2026-04-12' | '2026-05-01'

## Response `200`

Successful Response

- ListBrandKitImagesResponse: Brand-kit images list response (ENG-2585). Returns the full list — brand-kit image counts are small (typical kit has <20 images) so cursor pagination would be over-kill in v1. If a customer hits a real ceiling we can add a cursor without a breaking change. ``total`` / ``returned`` are carried anyway so the envelope matches the uniform list contract and explicitly says "complete".
  - `data` BrandKitImageResponse[], required: All images attached to the brand kit, logos first then design assets, in insertion order.
    - `id` string, required: Prefixed ``bki_`` identifier for this brand-kit image attachment.
    - `role` 'logo' | 'reference', required: Where this image lives in the kit. ``logo`` images come from ``structured_data.logos``; ``reference`` images come from ``structured_data.design_assets`` (covering both the ``reference`` and ``asset`` add-time roles, which share the same bucket on disk).
    - `file_id` string, required: Prefixed ``file_`` ID of the underlying uploaded file.
    - `url` string, required: Stable proxy URL for the image.
    - `name` string, nullable: Optional human-readable label set when the image was added.
    - `group_id` string, required: Identifier of the containing image group (opaque, scoped to this brand kit).
    - `group_name` string, required: Display name of the containing group (e.g. 'Logos', 'References').
  - `returned` integer: Number of images returned (always ``len(data)``).
  - `total` integer: True total image count for this brand kit. Always equals ``returned`` — this list is complete.

## Other responses

- `401`: Authentication required.
- `402`: Insufficient credits for a metered operation.
- `403`: Permission denied for this scope.
- `404`: Resource not found.
- `409`: Conflict (idempotency / resource state).
- `422`: Request validation failed.
- `429`: Rate limit exceeded.
- `500`: Internal error.

## Changes

- **2026-11-03** `9ac6a3abc0f8`: 10 info
  - added the non-success response with the status `402`
  - added the optional property `retryable` to the response with the `401` status
  - added the optional property `retryable` to the response with the `403` status
  - added the optional property `retryable` to the response with the `404` status
  - …6 more

[Operation history](https://skmtc.dev/moda/apis/moda-public-api/changes/brand-kits/:brand_kit_id/images/get.md)

---

[API](https://skmtc.dev/moda/apis/moda-public-api.md) - [All operations](https://skmtc.dev/moda/apis/moda-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/moda/apis/moda-public-api/revisions/9ac6a3abc0f8?raw)
