---
title: "Register a brand asset"
method: POST
path: "/v1/brand-kit/assets"
tags: ["Brand Kit"]
---

# Register a brand asset

`POST /v1/brand-kit/assets`

## Request

- Base URL: `https://api.vidocu.ai`
- URL: `https://api.vidocu.ai/v1/brand-kit/assets`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://vidocu.ai/oauth/authorize`, token URL `https://api.vidocu.ai/oauth/token`)

Records an already-uploaded file. Get a URL from POST /v1/upload-url first.

**Scope:** `brand_kit:write`

**Role permission:** `canEditSettings` (OAuth only — API keys carry full workspace permissions)

## Request body

- object
  - `assetType` 'opening_scene' | 'closing_scene' | 'watermark' | 'background_music' | 'background' | 'avatar_training', required
  - `fileType` 'video' | 'image' | 'audio', required
  - `name` string, required
  - `url` string, uri, required
  - `thumbnailUrl` string, uri
  - `duration` number
  - `fileSize` integer

## Response `201`

Registered

## Other responses

- `400`: Validation error
- `401`: Invalid or missing credentials
- `403`: Missing scope (`insufficient_scope`), insufficient role (`insufficient_role`), or quota exhausted (`limit_exceeded`)
- `429`: Rate limit exceeded (60 req/min)
- `500`: Server error

---

[API](https://skmtc.dev/vidocu/apis/vidocu-api.md) · [All operations](https://skmtc.dev/vidocu/apis/vidocu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vidocu/apis/vidocu-api/revisions/cc813d2ca5d2?raw)
