---
title: "Generate AI caption suggestions"
method: POST
path: "/api/v1/ai/generate-captions"
tags: ["AI"]
---

# Generate AI caption suggestions

`POST /api/v1/ai/generate-captions`

## Request

- Base URL: `https://www.poster.ly`
- URL: `https://www.poster.ly/api/v1/ai/generate-captions`
- Auth: HTTP bearer

Generate or adapt brand-aware social caption suggestions for one or more platforms. Uses the same AI Caption Assist allowance as the composer. Requires `posts:write` scope.

## Request body

- GenerateCaptionsRequest
  - `platforms` string[], required
  - `brief` string
  - `tone` string
  - `allow_emojis` boolean
  - `hashtag_strategy` 'none' | 'smart' | 'minimal' | 'aggressive'
  - `count` integer
  - `mode` 'generate' | 'adapt'
  - `source_caption` string
  - `source_platform` 'instagram' | 'facebook' | 'tiktok' | 'twitter' | 'threads' | 'linkedin' | 'youtube' | 'pinterest' | 'google_business'
  - `preserve_links` boolean
  - `preserve_mentions` boolean
  - `preserve_call_to_action` boolean
  - `social_account_id` string
  - `workspace_id` string
  - `manual_brand_voice` object
    - `summary` string, required
    - `traits` string[]
    - `style_guidelines` string[]

## Response `200`

Caption suggestions generated successfully

- GenerateCaptionsResponse
  - `success` boolean, required
  - `suggestions` object, required
  - `workspace_id` string, nullable
  - `social_account_id` number, nullable
  - `usage` object

## Other responses

- `400`: Validation error
- `401`: Invalid or missing API key
- `403`: Request is authenticated but not allowed
- `412`: Validation error
- `429`: Too many requests

---

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