REST APIPOST

Generate Caption

Write a caption from a prompt, or rewrite one you already have, held to the character limit of the platform you name.

Two endpoints write post copy. Both charge one caption credit per call, unless you have connected your own provider key, in which case they run on your key and cost nothing.

POST /api/v1/ai/captions

POST /api/v1/ai/captions
{
  "prompt": "announce that our scheduler now posts to Bluesky",
  "platform": "LINKEDIN"
}
FieldRequiredDescription
promptYesWhat the caption should say or be about. Up to 2000 characters
platformNoHolds the caption to that platform's limit. Omit it for a 2200 character ceiling
{
  "caption": "Bluesky just joined the list. Same queue, same schedule, one more place your posts land."
}

platform accepts TWITTER, BLUESKY, THREADS, PINTEREST, INSTAGRAM, TIKTOK, LINKEDIN, YOUTUBE and FACEBOOK. Naming it matters: a caption written for LinkedIn runs to 3000 characters, the same prompt for X stops at 280.

POST /api/v1/ai/captions/refine

POST /api/v1/ai/captions/refine
{
  "prompt": "cut it in half and drop the exclamation marks",
  "originalText": "Bluesky just joined the list! Same queue, same schedule!",
  "platform": "BLUESKY"
}
FieldRequiredDescription
promptYesHow the caption should change
originalTextYesThe caption being rewritten. Up to 10000 characters
platformNoSame list as above
partialTextNoA half written caption to continue from, rather than rewrite

The response has the same shape as generation.

{
  "caption": "Bluesky just joined the list. Same queue, same schedule."
}

Send partialText when someone has started typing and wants the rest written for them. Leave it out when you want the whole thing rewritten.

Errors

402 means the workspace is out of caption credits. Connect your own OpenAI or Anthropic key in the dashboard and calls stop drawing on credits.

Both endpoints count against the same per key rate limit as the rest of the API, and every response carries RateLimit-Remaining so you can pace a batch without hitting a 429.