---
title: "Generate Carousel Captions"
method: POST
path: "/ai/carousel/captions"
tags: ["ai"]
---

# Generate Carousel Captions

`POST /ai/carousel/captions`

## Request

- Base URL: `https://api.reeldrop.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.reeldrop.io/ai/carousel/captions`
- Auth: HTTP bearer

## Query parameters

- `workspace_id` string, nullable: Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.

## Request body

- CarouselCaptionsRequest
  - `topic` string, required
  - `theme_label` string, nullable
  - `slides` object[]
  - `user_context` string

## Response `200`

Successful Response

- ReelGenerateResponse
  - `reel_title` string, required
  - `captions` CaptionItem[], required
    - `tone` string, required
    - `text` string, required
    - `chars` integer, required
    - `match_pct` integer, required
    - `cta_position` string
  - `hashtags` HashtagItem[], required
    - `tag` string, required
    - `tier` string, required
  - `keywords` string[]
  - `hook` string, required
  - `cta` string, required
  - `cover_texts` CoverTextKit[]
    - `headline` string, required
    - `punch_word` string, required
    - `accent_word` string, required
    - `eyebrow` string
    - `kicker` string
    - `question` string
    - `annotations` string[]
    - `logo_subject` string
  - `niche` string
  - `comment_keyword` string
  - `content_evidence` ContentEvidence: What the model transcribed from the media before writing captions — the grounding block from EVIDENCE_BLOCKS in services/gemini.py. Diagnostic surface: a bad caption is now attributable to either bad evidence or a caption that ignored it.
    - `spoken` string[]
    - `overlay_text` string[]
    - `hook_text` string
    - `content_cta` DetectedCta: The CTA the model found in the content itself (spoken, overlaid, or on a slide).
      - `present` boolean
      - `verbatim` string
      - `trigger_word` string
      - `channel` string

## Other responses

- `422`: Validation Error

---

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