---
title: "Create Batch"
method: POST
path: "/api/v1/ai-video-catalog/batches"
tags: ["aiVideoCatalog"]
---

# Create Batch

`POST /api/v1/ai-video-catalog/batches`

## Request

- Base URL: `https://api.brandbooster.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.brandbooster.ai/api/v1/ai-video-catalog/batches`
- Auth: HTTP bearer

## Request body

- CreateAiVideoBatchRequestDTO
  - `catalog_id` string, uuid, required
  - `template_id` string, required
  - `column_plan` object, required
  - `uppercase` boolean
  - `brand_look` boolean
  - `run_mode` 'one' | 'all', required
  - `test_product_id` string, nullable
  - `draft_id` string, required
  - `expected_video_count` integer, required
  - `expected_credits_per_video` integer, required
  - `resolution` '480p' | '720p' | '1080p', nullable
  - `video_model` string, nullable
  - `person` AiVideoPersonRequestDTO: Who is in the video. style: the style's own model; picked: our models chosen per gender; random: one of ours per product; sheet: the person in each product's on-model photo, else the style's model.
    - `mode` 'style' | 'picked' | 'random' | 'sheet'
    - `female` union
      - string
      - string[]
    - `male` union
      - string
      - string[]
  - `product_words` object

## Response `201`

Successful Response

- AiVideoBatchDTO
  - `id` string, required
  - `catalog_id` string, required
  - `catalog_name` string, required
  - `brand_name` string, required
  - `brand_logo_url` string, nullable
  - `template_id` string, required
  - `template_name` string, required
  - `preview_url` string, nullable
  - `status` 'running' | 'stopped' | 'done', required
  - `credits_per_video` integer, required
  - `resolution` string, nullable
  - `video_model` string, nullable
  - `column_plan` object
  - `uppercase` boolean
  - `pending_product_ids` string[]
  - `test_video_id` string, nullable
  - `created_at` string, date-time, required
  - `videos` AiVideoItemDTO[]
    - `id` string, required
    - `product_id` string, required
    - `title` string, required
    - `image_link` string, required
    - `color` string, nullable
    - `price` string, nullable
    - `status` 'queued' | 'making' | 'ready' | 'flagged' | 'failed' | 'approved' | 'left_out' | 'stopped', required
    - `phase` 'submitting' | 'generating' | 'checking' | 'rendering', nullable
    - `at_provider_since` string, date-time, nullable
    - `auto_retry_left` boolean
    - `words` object
    - `flag` AiVideoFlagDTO
      - `code` string, required
      - `title` string, required
      - `detail` string, required
    - `failure_reason` string, nullable
    - `shot_count` integer, nullable
    - `credits_spent` integer
    - `remake_count` integer
    - `words_fixed` boolean
    - `clip_url` string, nullable
    - `video_url` string, nullable
    - `poster_url` string, nullable
  - `skipped` AiVideoSkippedGroupDTO[]
    - `reason` 'no_photo' | 'not_covered' | 'unknown_type' | 'unknown_gender' | 'over_limit', required
    - `group` string, nullable
    - `gender` string, nullable
    - `count` integer, required
    - `product_ids` string[]
  - `zip` AiVideoZipDTO
    - `status` 'none' | 'making' | 'ready' | 'failed'
    - `url` string, nullable
  - `style` AiVideoStyleDTO, required
    - `template_id` string, required
    - `template_name` string, required
    - `category` string, nullable
    - `preview_url` string, nullable
    - `duration_s` number, required
    - `video_s` number, required
    - `credits_per_video` integer, required
    - `credits_by_resolution` object
    - `credits_by_model` object
    - `kind` 'plain' | 'with_words', required
    - `label_fill` string, required
    - `shots` AiVideoShotDTO[]
      - `index` integer, required
      - `start_s` number, required
      - `end_s` number, required
      - `label` string
    - `slots` AiVideoOverlaySlotDTO[]
      - `id` string, required
      - `role` 'product_name' | 'feature' | 'end_card', required
      - `label` string, required
      - `shot_index` integer, nullable
      - `in_s` number, required
      - `out_s` number, required
      - `box` AiVideoSlotBoxDTO: Fractions of the 1080 x 1920 frame, so the overlay scales with the player.
        - `x` number, required
        - `y` number, required
        - `w` number, required
        - `h` number, required
      - `max_lines` integer, required
      - `max_chars_per_line` integer, required
      - `default_columns` string[]
      - `example` string
    - `fits` AiVideoStyleFitsDTO: Product types the style's shots are written for; other rows are skipped before any charge.
      - `groups` string[], required
      - `genders` string[], required
    - `held_reason` string, nullable
    - `person_image_url` string, nullable

## Other responses

- `422`: Validation Error

## Changes

> 37 revisions in range; 1 not diffed.

- **2026-11-02** `f84fc05f417b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/brandbooster/apis/brandbooster-api/changes/api/v1/ai-video-catalog/batches/post.md)

---

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