---
title: "Queue clips of a product"
method: POST
path: "/clips"
---

# Queue clips of a product

`POST /clips`

## Request

- Base URL: `https://app.cartviral.com/api/v1`
- URL: `https://app.cartviral.com/api/v1/clips`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://app.cartviral.com/oauth/authorize`, token URL `https://app.cartviral.com/oauth/token`, scopes: `mcp`)

Queue vertical 9:16 clips (TikTok, Reels, Shorts) of one catalog product. Types and credit cost: montage (1, fast photo montage, ready in a few minutes), ai_story (6, an AI story written and shot by CartViral's AI engine), avatar (12, a creator on camera talks about the product), ad (6, kept for older integrations: the same AI clip as ai_story, the engine makes native clips without price tags). AI clips take 10-15 minutes. Optional format: an exact engine format id instead of letting the brain pick one (e.g. ugc_dupe for a dupe-style creator clip); its family must match clip_type, ai_story and ad need a story format, avatar needs a creator/UGC format, montage has no formats. Credits are charged from the account; a failed render refunds automatically. Poll list_clips for download links.

## Request body

- object
  - `product_id` string, required: Product id from list_products
  - `clip_type` 'montage' | 'ai_story' | 'ad' | 'avatar', required
  - `format` 'demo_loop' | 'ugc_discovery' | 'try_on' | 'double_take' | 'problem_hack' | 'before_after' | 'uses_list' | 'dont_show' | 'pov_moment' | 'test_challenge' | 'grwm' | 'fit_check_honest' | 'texture_macro' | 'first_reaction' | 'lights_on_reveal' | 'maker_process' | 'makes_sense' | 'build_a_stack' | 'ugc_review' | 'ugc_unboxing' | 'ugc_first_reaction' | 'grwm_talk' | 'ugc_storytime' | 'ugc_top3' | 'ugc_before_you_buy' | 'ugc_dupe' | 'ugc_regret' | 'ugc_dilo' | 'progress_diary' | 'pov_asmr_hands' | 'product_asmr': Optional exact format id; must fit clip_type's family (story for ai_story/ad, ugc for avatar). Leave out to let the engine pick.
  - `count` integer

## Response `200`

Success

- object

## Other responses

- `400`: Invalid input or the action could not be done; body has an error message
- `401`: Missing or invalid credentials
- `429`: Rate limit: 120 calls per minute per key

---

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