API resource
Posts
One post can go to several networks at once. Each entry in platforms carries its own status (pending, published, failed) and, once live, the network’s platformPostId and platformPostUrl.
Create a post
/v1/postsWorks on: Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn. Post types vary by network (see the Post to all platforms guide).
Publish now, schedule (see Schedule a post), or save a draft. Name networks in platforms and Creator OS picks the connected account for each and applies every network’s formatting rules (Reels, Shorts, TikTok consent flags) for you.
For per-account control, pass objects instead: {"platform": "youtube", "account_id": "acc_...", "options": {"title": "..."}}. In that form any other post fields you send are passed through too: tags, threadItems, facebookSettings, instagramSettings, and queuedFromProfile: true to drop the post into your next open queue slot.
Networks you name that aren’t connected come back in missing_platforms; the rest still go out.
Body
contentstringCaption or post text. Required unless media is given.
platformsstring[] | object[]requiredNetworks to post to, e.g. ["instagram","tiktok"], or target objects for full control.
mediastring[]Media ids from Upload media (med_...) or public URLs. One video, or up to 10 images for a carousel.
post_typestringtext, image, carousel, short_video, long_video or story. Inferred from the media when omitted.
titlestringUsed where the network has titles (YouTube).
schedule_atISO 8601Publish at this time. Omit to publish now.
timezoneIANA zoneTimezone for schedule_at, e.g. America/New_York. Defaults to UTC.
draftbooleanSave without publishing.
hashtagsstring[]Hashtags to append.
coverstringVideo posts: a cover image (med_ id or public JPG/PNG URL). See Add a video cover.
cover_timestamp_msintegerVideo posts: use this frame as the cover instead (Instagram and TikTok).
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/posts" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Three hooks that doubled my watch time 👇",
"platforms": [
"instagram",
"tiktok"
],
"media": [
"med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0"
],
"schedule_at": "2026-10-02T18:00:00",
"timezone": "America/New_York"
}'{
"id": "post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO",
"content": "Three hooks that doubled my watch time 👇",
"status": "scheduled",
"scheduledFor": "2026-10-02T22:00:00.000Z",
"timezone": "America/New_York",
"platforms": [
{
"platform": "instagram",
"accountId": {
"id": "acc_uwsum2TkX6QB7M2BWX_F2kYykNTaWuC3V2Spge_Xm4r",
"platform": "instagram",
"username": "kevbuildsapps"
},
"status": "pending"
},
{
"platform": "tiktok",
"accountId": {
"id": "acc_Q3n1PvR8dKc0Zb7LwY4sHx2mJt9Eg6Ua5Nf1Ck8Tq3Vz",
"platform": "tiktok",
"username": "kevbuildsapps"
},
"status": "pending"
}
],
"mediaItems": [
{
"type": "video",
"url": "https://creatoros-production-5658.up.railway.app/v1/media/med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0.mp4"
}
],
"createdAt": "2026-09-25T18:40:12.000Z"
}Schedule a post
/v1/postsWorks on: Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn
Same endpoint as Create a post, with schedule_at set. Creator OS publishes it at that moment on every network you named, so nothing on your side has to stay running. The post comes back with status scheduled; its per-network entries move to published (or failed) when the time comes.
Give schedule_at as a local time with timezone (as below), or as a UTC timestamp ending in Z. To move a scheduled post, use Update a post; to cancel it, Delete a post. Subscribe to the post.published and post.failed webhooks to hear back without polling.
Body
schedule_atISO 8601requiredWhen to publish, e.g. 2026-10-02T18:00:00. Must be in the future.
timezoneIANA zoneTimezone for schedule_at, e.g. America/New_York. Defaults to UTC.
platformsstring[] | object[]requiredNetworks to post to.
contentstringCaption or post text.
mediastring[]Media ids from Upload media.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/posts" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "New episode drops tonight 🎙️",
"platforms": [
"instagram",
"tiktok",
"youtube",
"linkedin"
],
"media": [
"med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0"
],
"title": "Episode 12: Hooks that work",
"schedule_at": "2026-10-02T18:00:00",
"timezone": "America/New_York"
}'{
"id": "post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO",
"content": "New episode drops tonight 🎙️",
"status": "scheduled",
"scheduledFor": "2026-10-02T22:00:00.000Z",
"timezone": "America/New_York",
"platforms": [
{
"platform": "instagram",
"accountId": {
"id": "acc_uwsum2TkX6QB7M2BWX_F2kYykNTaWuC3V2Spge_Xm4r",
"platform": "instagram",
"username": "kevbuildsapps"
},
"status": "pending"
},
{
"platform": "tiktok",
"accountId": {
"id": "acc_Q3n1PvR8dKc0Zb7LwY4sHx2mJt9Eg6Ua5Nf1Ck8Tq3Vz",
"platform": "tiktok",
"username": "kevbuildsapps"
},
"status": "pending"
}
],
"mediaItems": [
{
"type": "video",
"url": "https://creatoros-production-5658.up.railway.app/v1/media/med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0.mp4"
}
],
"createdAt": "2026-09-25T18:40:12.000Z"
}Add a video cover
/v1/postsWorks on: Instagram (Reels), TikTok, Facebook (videos and Reels), LinkedIn (videos), YouTube (long videos). Not X, Threads or YouTube Shorts.
Upload the cover image with Upload media, then pass its id as cover on any video post (short or long). Every network stores covers somewhere different; Creator OS sends the one image to each of them: the Reel cover on Instagram, the cover image on TikTok, and the video thumbnail on Facebook, LinkedIn and YouTube.
Use JPG or PNG, 2 MB at most (YouTube’s limit), 1080 x 1920 for vertical video. YouTube only takes custom thumbnails on long videos from phone-verified channels; Shorts, X and Threads pick their own frame. On an unsupported network the post still goes out, just without your cover.
To pick a frame of the video instead of an image, send cover_timestamp_ms (Instagram and TikTok). With per-account targets, you can also set thumbnail on a single media item: {"url": "med_...", "thumbnail": "med_..."}.
Body
coverstringA med_ id from Upload media, or a public JPG/PNG URL.
cover_timestamp_msintegerFrame of the video to use as the cover, in milliseconds. Ignored when cover is set.
platformsstring[] | object[]requiredNetworks to post to.
mediastring[]requiredThe video, as a med_ id or public URL.
contentstringCaption.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/posts" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "The full breakdown 🎬",
"platforms": [
"instagram",
"tiktok",
"facebook"
],
"media": [
"med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0"
],
"cover": "med_Qx4Tn8Lb2Wd6Hs0Rv3Kc7Jm1Pf5Gy9Ze4Au8Oi2Ns6"
}'{
"id": "post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO",
"content": "Three hooks that doubled my watch time 👇",
"status": "scheduled",
"scheduledFor": "2026-10-02T22:00:00.000Z",
"timezone": "America/New_York",
"platforms": [
{
"platform": "instagram",
"accountId": {
"id": "acc_uwsum2TkX6QB7M2BWX_F2kYykNTaWuC3V2Spge_Xm4r",
"platform": "instagram",
"username": "kevbuildsapps"
},
"status": "pending"
},
{
"platform": "tiktok",
"accountId": {
"id": "acc_Q3n1PvR8dKc0Zb7LwY4sHx2mJt9Eg6Ua5Nf1Ck8Tq3Vz",
"platform": "tiktok",
"username": "kevbuildsapps"
},
"status": "pending"
}
],
"mediaItems": [
{
"type": "video",
"url": "https://creatoros-production-5658.up.railway.app/v1/media/med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0.mp4"
}
],
"createdAt": "2026-09-25T18:40:12.000Z"
}List posts
/v1/postsWorks on: Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn
Your queue and history, newest scheduled first.
Query parameters
statusstringdraft, scheduled, published or failed.
platformstringOnly posts that include this network.
fromDateYYYY-MM-DDScheduled or published on or after this date.
toDateYYYY-MM-DDScheduled or published on or before this date.
searchstringMatch text in the caption.
pageintegerPage number, starting at 1.
limitintegerPage size.
curl "https://creatoros-production-5658.up.railway.app/v1/posts?status=scheduled&limit=20" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"posts": [
{
"id": "post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO",
"content": "Three hooks that doubled my watch time 👇",
"status": "scheduled",
"scheduledFor": "2026-10-02T22:00:00.000Z",
"timezone": "America/New_York",
"platforms": [
{
"platform": "instagram",
"accountId": {
"id": "acc_uwsum2TkX6QB7M2BWX_F2kYykNTaWuC3V2Spge_Xm4r",
"platform": "instagram",
"username": "kevbuildsapps"
},
"status": "pending"
},
{
"platform": "tiktok",
"accountId": {
"id": "acc_Q3n1PvR8dKc0Zb7LwY4sHx2mJt9Eg6Ua5Nf1Ck8Tq3Vz",
"platform": "tiktok",
"username": "kevbuildsapps"
},
"status": "pending"
}
],
"mediaItems": [
{
"type": "video",
"url": "https://creatoros-production-5658.up.railway.app/v1/media/med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0.mp4"
}
],
"createdAt": "2026-09-25T18:40:12.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"pages": 1
}
}Retrieve a post
/v1/posts/{postId}Works on: Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn
One post with the live status of every network it targets. Poll this after publishing to confirm each network went through.
Path parameters
postIdstringrequiredThe post_ id.
curl "https://creatoros-production-5658.up.railway.app/v1/posts/post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"id": "post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO",
"content": "Three hooks that doubled my watch time 👇",
"status": "published",
"scheduledFor": "2026-10-02T22:00:00.000Z",
"timezone": "America/New_York",
"platforms": [
{
"platform": "instagram",
"accountId": {
"id": "acc_uwsum2TkX6QB7M2BWX_F2kYykNTaWuC3V2Spge_Xm4r",
"platform": "instagram",
"username": "kevbuildsapps"
},
"status": "published",
"platformPostId": "18053924711234567",
"platformPostUrl": "https://www.instagram.com/reel/C9xYz/",
"publishedAt": "2026-10-02T22:00:04.000Z"
}
],
"mediaItems": [
{
"type": "video",
"url": "https://creatoros-production-5658.up.railway.app/v1/media/med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0.mp4"
}
],
"createdAt": "2026-09-25T18:40:12.000Z"
}Update a post
/v1/posts/{postId}Works on: Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn
Change a draft, scheduled or failed post: caption, time, media, cover or networks. It takes the same field names as Create a post, and only the fields you send change. For posts that are already live, use Edit a published post.
Giving a draft a schedule_at (or publish_now: true) schedules it; send draft: true as well to keep it a draft. media replaces the post’s media; platforms replaces its networks.
Path parameters
postIdstringrequiredThe post_ id.
Body
contentstringNew caption.
schedule_atISO 8601New publish time. Schedules a draft.
timezoneIANA zoneTimezone for schedule_at.
mediastring[]Replacement media: med_ ids or public URLs.
coverstringVideo posts: new cover image (med_ id or URL), placed on every network that supports one.
cover_timestamp_msintegerVideo posts: use this frame as the cover (Instagram and TikTok).
platformsobject[]Replacement targets: [{ platform, account_id, options }].
draftbooleantrue keeps (or makes) it a draft; false schedules or publishes it.
publish_nowbooleanPublish immediately instead of at the scheduled time.
curl -X PATCH "https://creatoros-production-5658.up.railway.app/v1/posts/post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schedule_at": "2026-10-03T18:00:00",
"timezone": "America/New_York",
"cover": "med_Qx4Tn8Lb2Wd6Hs0Rv3Kc7Jm1Pf5Gy9Ze4Au8Oi2Ns6"
}'{
"id": "post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO",
"content": "Three hooks that doubled my watch time 👇",
"status": "scheduled",
"scheduledFor": "2026-10-03T22:00:00.000Z",
"timezone": "America/New_York",
"platforms": [
{
"platform": "instagram",
"accountId": {
"id": "acc_uwsum2TkX6QB7M2BWX_F2kYykNTaWuC3V2Spge_Xm4r",
"platform": "instagram",
"username": "kevbuildsapps"
},
"status": "pending"
},
{
"platform": "tiktok",
"accountId": {
"id": "acc_Q3n1PvR8dKc0Zb7LwY4sHx2mJt9Eg6Ua5Nf1Ck8Tq3Vz",
"platform": "tiktok",
"username": "kevbuildsapps"
},
"status": "pending"
}
],
"mediaItems": [
{
"type": "video",
"url": "https://creatoros-production-5658.up.railway.app/v1/media/med_b0Wq7Yx2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7Ki9Nr0.mp4"
}
],
"createdAt": "2026-09-25T18:40:12.000Z"
}Delete a post
/v1/posts/{postId}Works on: Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn
Deletes a draft or scheduled post. To take down something already published, use Unpublish.
Path parameters
postIdstringrequiredThe post_ id.
curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/posts/post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"message": "Post deleted successfully"
}Retry failed networks
/v1/posts/{postId}/retryWorks on: Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn
Re-attempts every network that failed on this post. Networks that already published are left alone.
Path parameters
postIdstringrequiredThe post_ id.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/posts/post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO/retry" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'{
"message": "Retry initiated",
"post": {
"id": "post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO",
"status": "scheduled"
}
}Edit a published post
/v1/posts/{postId}/editWorks on: X (Premium accounts, within 1 hour), Facebook, LinkedIn, YouTube (description only)
Changes the text of a post that is already live, without deleting it. Media can’t be swapped. X gives the edited post a new id; the other networks keep it.
Path parameters
postIdstringrequiredThe post_ id.
Body
platformstringrequiredtwitter, facebook, linkedin or youtube.
contentstringrequiredThe new text.
accountIdstringWhich account’s copy to edit when the post went to several accounts on the same network.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/posts/post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO/edit" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "linkedin",
"content": "Three hooks that doubled my watch time (updated with a fourth!) 👇"
}'{
"success": true,
"message": "Post updated on linkedin"
}Unpublish a post
/v1/posts/{postId}/unpublishWorks on: Facebook, X, Threads, LinkedIn, YouTube (not Instagram or TikTok)
Deletes a published post from one network. The post stays in Creator OS with status cancelled. Call once per network. On YouTube the deletion is permanent.
Path parameters
postIdstringrequiredThe post_ id.
Body
platformstringrequiredfacebook, twitter, threads, linkedin or youtube.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/posts/post_3JSJJWvgHKZH-Vjy_ggeP792GJbvjQ1pZzbqlPEgKJOO/unpublish" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "facebook"
}'{
"success": true,
"message": "Post deleted from facebook"
}