Post types
Every format, all created by the same endpoint, with a call for each.
Posttar has several content formats, and one endpoint creates all of them: POST /posts, with a format parameter. Leave format out and you get carousel, the plain carousel.
format | What it is | Media |
|---|---|---|
carousel | Carousel: image slides with a caption | Image carousel |
caption_reel | Read-the-caption reel: three text blocks over a clip | Short video |
animated_audio | Animated audio reel: the project voice narrates, over a waveform | Short video |
narrated_photos | Narrated photos reel: the project voice narrates, one AI photo per passage | Short video |
premium_carousel | Premium carousel: six pages drawn whole by the model | Image carousel |
infographic | Infographic: one vertical piece drawn whole by the model | Short video, silent |
twitter_carousel | Twitter carousel: each slide is drawn to look like a post on X | Image carousel |
twitter_repost | Twitter-style repost: an Instagram video under an X-style header and a short hook | Reel |
react_video | React: the person's own recorded reaction loops over an Instagram video, with their recorded ending | Reel |
motion | Motion: an animated reel of about 30 seconds, made over a narration from an idea or from your own audio | Reel |
The preview formats (animated_audio, narrated_photos, premium_carousel, infographic, twitter_carousel, twitter_repost, react_video, motion) are enabled per workspace. Calling one the workspace does not have answers 403 with forbidden, and nothing is charged. carousel and caption_reel are open to everyone.
One call per format
Every one of them costs 1 credit, answers 202, and finishes in the background. Poll GET /posts/{id} until status leaves queued and generating.
Carousel. The default, so format is optional here.
curl -X POST -H "Authorization: Bearer $POSTTAR_KEY" -H "Content-Type: application/json" \
-d '{"projectId":"c85848ba-...","theme":"three signs your niche is too broad"}' \
"https://api.posttar.com/v1/posts"Read-the-caption reel. The background clip is chosen by Posttar, and the response says which source it used.
curl -X POST -H "Authorization: Bearer $POSTTAR_KEY" -H "Content-Type: application/json" \
-d '{"projectId":"c85848ba-...","theme":"why your niche is too broad",
"format":"caption_reel"}' \
"https://api.posttar.com/v1/posts"Animated audio reel. Needs a voice on the project; without one the call is refused with invalid_state and the message says where to record it.
curl -X POST -H "Authorization: Bearer $POSTTAR_KEY" -H "Content-Type: application/json" \
-d '{"projectId":"c85848ba-...","theme":"how i price my work","format":"animated_audio"}' \
"https://api.posttar.com/v1/posts"Narrated photos reel. Same voice requirement, one AI photo per passage instead of the waveform.
curl -X POST -H "Authorization: Bearer $POSTTAR_KEY" -H "Content-Type: application/json" \
-d '{"projectId":"c85848ba-...","theme":"my first client","format":"narrated_photos"}' \
"https://api.posttar.com/v1/posts"Premium carousel. Six pages drawn whole, instead of text over a template.
curl -X POST -H "Authorization: Bearer $POSTTAR_KEY" -H "Content-Type: application/json" \
-d '{"projectId":"c85848ba-...","theme":"the 5 stages of a launch",
"format":"premium_carousel"}' \
"https://api.posttar.com/v1/posts"Infographic. One vertical piece, published as a silent reel so it keeps video distribution.
curl -X POST -H "Authorization: Bearer $POSTTAR_KEY" -H "Content-Type: application/json" \
-d '{"projectId":"c85848ba-...","theme":"freelance rates by years of experience",
"format":"infographic"}' \
"https://api.posttar.com/v1/posts"Twitter-style repost. Made from the link of an Instagram post or reel, up to 90 seconds; theme is an optional note on what to highlight. A video file cannot be sent through the API.
curl -X POST -H "Authorization: Bearer $POSTTAR_KEY" -H "Content-Type: application/json" \
-d '{"projectId":"c85848ba-...","format":"twitter_repost",
"link":"https://www.instagram.com/reel/C9xyz12345/"}' \
"https://api.posttar.com/v1/posts"React. Made from the link of an Instagram post or reel, up to 90 seconds; theme is an optional instruction for the caption. The source plays in full screen with one of the person's recorded reactions looping in the corner and, at the end, one of their recorded endings. Reactions and endings are recorded in the app, under Strategy, Avatar for Reels; with none ready the post is refused before anything is charged.
curl -X POST -H "Authorization: Bearer $POSTTAR_KEY" -H "Content-Type: application/json" \
-d '{"projectId":"c85848ba-...","format":"react_video",
"link":"https://www.instagram.com/reel/C9xyz12345/"}' \
"https://api.posttar.com/v1/posts"The answer has the same shape for every format. format echoes what was created, and clipSource appears only for caption_reel, which is the only format with a background clip.
{
"postId": "dd8d142c-...",
"format": "caption_reel",
"state": "generating",
"clipSource": "library",
"remainingCredits": 5
}The two limits worth knowing before you call
themeis capped at 10,000 characters, except onanimated_audio,narrated_photosandmotion, where it stops at 5,000: there the theme becomes a spoken script.twitter_repostandreact_videotake up to 1,000, because there the theme is only an optional note on what to highlight.motiontakes anidea(ortheme, with an optionalvoiceId) OR theaudioUrlof your own narration, never both. It takes about 15 minutes to be ready.linkworks on three formats: oncarouselit is a page for Posttar to read before writing, ontwitter_repostit is the Instagram post or reel whose video is reposted, and onreact_videoit is the one the person reacts to (a private post, one that is not a video or one longer than 90 seconds is refused before anything is charged). With any other format the call is refused instead of ignoring it, because ignoring it would spend a credit on a post about the wrong subject.
What is editable after it is created
All of them are readable, editable, schedulable, publishable and deletable through the API, by the same two calls: GET /posts/{id} and PATCH /posts/{id}. See Read and edit. What is still format-specific is the finer work: the carousel has the slide endpoints, the read-the-caption reel has its clip and track, the two AI-drawn formats have POST /slides/{id}/reimagine instead of text fields, the Twitter-style repost has PATCH /posts/{id}/repost for its hook and header, and the React has PATCH /posts/{id}/react to swap its reaction or ending.