Posteady
Posteady Docs
GuidesAPI referenceMCP
GuidesGuides

Create a carousel

Generate a carousel from a topic, text, or link, then publish its slides.

Posteady writes the copy for each slide, designs it, and saves every slide as a JPEG image in your media library. Generation is not a single request: you submit it, check its status until it finishes, then publish with the images you get back.

Flow

  1. (Optional) List options to find the IDs of templates and brands.
  2. Submit the request — you get a carouselId right away.
  3. Check the status every 20–30 seconds until it is completed or failed.
  4. Publish or schedule with the mediaId of each finished slide.

Generation usually finishes within one to three minutes. A 5–6 slide carousel from a topic took about a minute; more slides, link sources, and AI images take longer.

Submit the request

requestId is a UUID you generate. Provide exactly one content source: topic, text, or url.

curl --request POST "https://www.posteady.com/api/v1/carousels" \
  --header "Authorization: Bearer $POSTEADY_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "requestId": "77777777-7777-4777-8777-777777777777",
  "topic": "Five mistakes first-time cafe owners make in their opening month",
  "slideCount": 5,
  "language": "en"
}'
{
  "carouselId": "cccccccc-cccc-4ccc-8ccc-cccccccccccc",
  "status": "queued"
}

An accepted request returns HTTP 202. Problems you can fix — invalid input, plan, insufficient credits, an unknown template or brand — are returned as errors at submission.

SourceValueUse
topicOne or a few sentences (up to 1,000 characters)You give the subject and Posteady writes the content.
textAn article, notes, or a scriptPosteady organizes your text into slides.
urlA public linkPosteady reads the page's text and images as source material.
OptionDescription
templateIdKeeps the template's design and writes new copy into it. Omit to let Posteady design the carousel.
brandIdPlaces the brand name and logo on the slides. Omit for no brand.
slideCount3–20 slides. Omit to let Posteady decide.
aspectRatio1:1, 4:5 (default), 9:16, 3:4, 16:9. Not allowed with a template, which fixes the ratio.
languageOutput language. Defaults to the workspace language.
imageModestock (default) stock photos, ai AI images, none no photos, preserve keep the template's images. none works only without a template; preserve only with one.
imageStyleStyle of AI images. Only with imageMode set to ai.
webImageSearchSearches the web for photos of products, people, or places named in the content. Not allowed with a template.
instructionsExtra direction such as tone, audience, or points to emphasize (up to 1,000 characters).

Credits

Each generated carousel is charged to the organization's credits. Read the amount from generationCredits in the options response. With imageMode set to ai, each generated image is charged in addition.

If credits are insufficient at submission, the request returns 402 INSUFFICIENT_CREDITS and nothing is created. If generation fails after submission, its generation credits are refunded.

Check the status

curl --request GET "https://www.posteady.com/api/v1/carousels/cccccccc-cccc-4ccc-8ccc-cccccccccccc" \
  --header "Authorization: Bearer $POSTEADY_API_KEY"
statusMeaningNext step
queued, processingStill generatingCheck again in 20–30 seconds.
completedSaved and renderedPublish with the mediaId values in images.
failedFailedRead error.code.
{
  "carouselId": "cccccccc-cccc-4ccc-8ccc-cccccccccccc",
  "status": "completed",
  "editorUrl": "https://www.posteady.com/carousel/cccccccc-cccc-4ccc-8ccc-cccccccccccc",
  "title": "Five mistakes first-time cafe owners make",
  "caption": "Opening a cafe? Avoid these five mistakes in your first month.",
  "aspectRatio": "4:5",
  "slideCount": 5,
  "images": [
    {
      "mediaId": "dddddddd-dddd-4ddd-8ddd-dddddddddddd",
      "url": "https://media.posteady.com/media/example/slide-01.jpg",
      "width": 1080,
      "height": 1350
    }
  ]
}

images lists the slides in order. Open editorUrl to change copy or design in the Posteady editor. After an edit, images can be empty because the earlier images no longer match the content. Download the carousel or create a post from it in the editor to render it again, then check the status once more.

You can also read carousels made in the Posteady app. The carouselId is the last part of the editor URL.

Templates and brands

curl --request GET "https://www.posteady.com/api/v1/carousels/options" \
  --header "Authorization: Bearer $POSTEADY_API_KEY"

Use a templateId from templates and a brandId from brands in the request. Templates provided by Posteady are listed by default; add templateSource=workspace for templates saved in this workspace. When nextTemplateCursor is present, pass it as cursor to read the next page.

Publish the slides

Finished slides are images in the workspace media library. Put their mediaId values, in order, into items of an Instagram media request, and use caption as the post text if you like. An Instagram carousel takes 2–10 items, so choose which slides to publish when a carousel has more than 10.

curl --request POST "https://www.posteady.com/api/v1/posts" \
  --header "Authorization: Bearer $POSTEADY_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "accountIds": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "instagram": {
    "requestId": "33333333-3333-4333-8333-333333333333",
    "contentType": "FEED",
    "caption": "Opening a cafe? Avoid these five mistakes in your first month.",
    "items": [
      {
        "mediaId": "dddddddd-dddd-4ddd-8ddd-dddddddddddd"
      },
      {
        "mediaId": "eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee"
      }
    ]
  }
}'

The publishing requestId is separate from the one used for generation. Track the result with publishing status. Account requirements and per-format input are in the Instagram media guide.

Sending a request again

If you did not receive a response, send it again with the same requestId and the same body. You get the same carousel and are not charged again. A different body with the same requestId returns 409 REQUEST_CONFLICT.

Sending a failed request again with the same requestId returns the same failed result. Use a new requestId to try again.

When generation fails

error.codeMeaning and next step
SOURCE_UNAVAILABLEThe link could not be read or has no usable text. Check the URL, or send the content as text.
SOURCE_TOO_LONGThe source is too long for one carousel. Shorten it and submit a new request.
TEMPLATE_UNAVAILABLEThe template was removed or changed, or it needs fonts or images this workspace does not have. Choose another template.
INSUFFICIENT_CREDITSCredits ran out after submission.
PLAN_REQUIREDThe organization's plan does not include carousel generation.
RATE_LIMITEDToo many links were read in a short time. Submit a new request in a few minutes.
STORAGE_LIMIT_EXCEEDEDWorkspace storage is full. Free up space in the media library.
GENERATION_FAILED, GENERATION_INTERRUPTEDGeneration failed or was interrupted. Submit again with a new requestId.
RENDER_FAILEDThe carousel was saved but its images could not be rendered. Finish it at editorUrl.

Generation credits are refunded for every failure except RENDER_FAILED, where the carousel was saved.

Good to know

  • Videos in the source are used as still images. Slides that contain video are created in the Posteady app.
  • A template that uses uploaded fonts missing from the workspace cannot be generated through the API. In the app you can choose replacement fonts.
  • With MCP, the same flow uses the create_carousel, get_carousel, and list_carousel_options tools. See MCP tools.

Create carousel reference · Retries · Error codes

On this page