Edit and delete posts
On this page
Change a post with PATCH, remove it with DELETE. Both answer with the post as it is afterwards, so you
can check the result in the same call.
You need: the post's id, and ideally its revision from your last read (the ETag header).
Change or reschedule a post
Send only the fields that change:
curl -X PATCH https://public-api.robopost.app/v1/scheduled_posts/8c1f2a40-… \
-H "Authorization: Bearer $ROBOPOST_API_KEY" \
-H "Content-Type: application/json" \
-H 'If-Match: "4"' \
-d '{"text": "New caption", "schedule_at": "2026-11-21T09:00:00Z"}'You can change text, schedule_at, first_comment, made_with_ai, the media (image_object_ids,
video_object_id, gif_object_id), any network's settings object (it replaces that network's settings),
and the recurrence fields. Unknown fields are refused with 422, so a typo never passes silently. The
channel can't change: delete the post and create it on the other channel.
Don't overwrite someone else's change
With If-Match: "<revision>", the change is applied only if nobody changed the post since you read it.
Otherwise you get 412 REVISION_MISMATCH with current_revision: read the post again, decide, retry.
Without If-Match a change made at the same moment still never gets silently overwritten: you get 409.
Unschedule (cancel) a post
{ "status": "draft" }The post becomes a draft: it won't publish, and stays in the team's drafts. Schedule it again later with
{"status": "scheduled"} (and a new schedule_at if you like). A draft created for several channels at
once can't be scheduled this way: create the posts with POST /v1/scheduled_posts instead.
Retry a failed post
{ "status": "scheduled", "schedule_at": "2026-11-21T09:00:00Z" }This clears the previous error and schedules the same post again, including failed posts the dashboard
already hides. Fix the cause first: failure.action says what to do. A post that failed with
X_DELIVERY_UNCERTAIN or timed out while publishing is refused with 409 RETRY_COULD_DUPLICATE, because
the network may already show it; check the channel and create a new post only if it isn't there.
When a post can't be changed
| Code | Why |
|---|---|
POST_IS_PUBLISHING |
It's being published right now |
POST_ALREADY_PUBLISHED |
It's live; editing here wouldn't change it on the network |
MEDIA_NOT_READY |
Its media is still being prepared |
POST_DELETED |
It was removed |
POST_IN_COLLECTION |
Collection posts are published by their collection |
Delete a post
curl -X DELETE https://public-api.robopost.app/v1/scheduled_posts/8c1f2a40-… \
-H "Authorization: Bearer $ROBOPOST_API_KEY"The post is removed from Robopost: it won't publish and disappears from the dashboard. It stays readable
through the API with is_deleted: true, deletion_reason: "deleted_via_api", deleted_by and
deleted_at. Deleting it again is harmless and returns the same record. A post that is publishing right
now can't be deleted (409 POST_IS_PUBLISHING); wait until it's published or failed.
Delete a published post on the network too
Removing a post from Robopost doesn't remove it from the network. To do both, add delete_on_platform=true:
curl -X DELETE "https://public-api.robopost.app/v1/scheduled_posts/8c1f2a40-…?delete_on_platform=true" \
-H "Authorization: Bearer $ROBOPOST_API_KEY"The network deletion runs in the background. Read the post again to see platform_deletion:
platform_deletion.status |
Meaning |
|---|---|
requested |
Sent to the network, waiting for its answer |
deleted |
The network deleted it (completed_at says when) |
failed |
The network refused or the channel is disconnected (detail says which) |
not_supported |
The network doesn't let apps delete posts (Instagram, TikTok, Facebook Groups, WordPress.com) |
not_published |
There was nothing on the network to delete |