---
title: "Save a generated output into the brand kit"
method: POST
path: "/brand/profiles/{brandProfileId}/kit/from-run"
tags: ["Intelligence"]
---

# Save a generated output into the brand kit

`POST /brand/profiles/{brandProfileId}/kit/from-run`

## Request

- Base URL: `https://app.uselamina.ai/v1`
- URL: `https://app.uselamina.ai/v1/brand/profiles/{brandProfileId}/kit/from-run`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Promote a generated output (from a completed run, or a direct outputUrl) into a reusable brand asset. The output is persisted to a durable CDN URL first, then registered. Images → avatar/character, video → motion_graphic. Requires an owner/admin API key.

## Path parameters

- `brandProfileId` string, required

## Request body

- object
  - `elementType` 'avatar' | 'character' | 'motion_graphic', required
  - `name` string, required
  - `runId` string: Resolve the output from this completed run.
  - `outputUrl` string: Or pass the output URL directly.
  - `mediaType` 'image' | 'video': Required with outputUrl.
  - `spec` object

## Response `200`

Output saved to brand kit

- object
  - `data` BrandKitElement, required: A reusable brand identity asset — a named, versioned pointer to a primitive (cloned_voice / persona / asset) plus a type-specific spec.
    - `id` string, required
    - `element_type` 'voice' | 'avatar' | 'character' | 'motion_graphic', required
    - `name` string, required
    - `ref_kind` 'cloned_voice' | 'persona' | 'asset', nullable
    - `ref_id` string, nullable
    - `spec` object
    - `version` integer
    - `is_active` boolean

## Other responses

- `401`: Missing or invalid API key
- `500`: Internal server error

---

[API](https://skmtc.dev/uselamina/apis/lamina-v1-api.md) · [All operations](https://skmtc.dev/uselamina/apis/lamina-v1-api/llms.txt) · [OpenAPI document](https://skmtc.dev/uselamina/apis/lamina-v1-api/revisions/73b598526531?raw)
