Scheduling
Edit Scheduled Post
Update the content, media, platforms, or time of a scheduled post before it publishes.
Change what a scheduled post will publish. You can update the text, swap or add media, change which platforms and platform-specific options it targets, and optionally move the scheduled time — all in one call. Only works while the post is still scheduled (not yet published or already publishing).
The request body has the same shape as Create Post, minus publishNow. It replaces the editable fields, so send the full desired state (all platforms and media you want, not just the changes). PostPeer re-validates each platform and reconciles the credit difference: adding a platform charges the extra credits, removing one refunds them.
Endpoint
PUT https://api.postpeer.dev/v1/posts/scheduled/{postId}Path Parameters
| Parameter | Type | Description |
|---|---|---|
postId | string | The scheduled post ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
content | string | Yes | New post text body |
platforms | array | Yes | Replacement target accounts (same shape as create, incl. platformSpecificData) |
mediaItems | array | No | Replacement media attachments. Omit to clear media |
scheduledFor | string | No | New ISO 8601 datetime. Omit to keep the current time |
timezone | string | No | IANA timezone. Omit to keep the current one |
Example
curl -X PUT "https://api.postpeer.dev/v1/posts/scheduled/post_xyz789" \
-H "x-access-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Updated caption for the launch!",
"mediaItems": [
{ "type": "image", "url": "https://cdn.example.com/new-photo.jpg" }
],
"platforms": [
{ "platform": "twitter", "accountId": "tw_123" },
{ "platform": "linkedin", "accountId": "li_456" }
],
"scheduledFor": "2026-09-15T09:00:00Z",
"timezone": "UTC"
}'import PostPeer from '@postpeer/node';
const client = new PostPeer();
const { data } = await client.posts.scheduled.edit({
path: { postId: 'post_xyz789' },
body: {
content: 'Updated caption for the launch!',
mediaItems: [
{ type: 'image', url: 'https://cdn.example.com/new-photo.jpg' },
],
platforms: [
{ platform: 'twitter', accountId: 'tw_123' },
{ platform: 'linkedin', accountId: 'li_456' },
],
scheduledFor: '2026-09-15T09:00:00Z',
timezone: 'UTC',
},
});from postpeer import PostPeer
with PostPeer() as client:
post = client.posts.scheduled.edit(
post_id="post_xyz789",
content="Updated caption for the launch!",
media_items=[
{"type": "image", "url": "https://cdn.example.com/new-photo.jpg"}
],
platforms=[
{"platform": "twitter", "accountId": "tw_123"},
{"platform": "linkedin", "accountId": "li_456"},
],
scheduled_for="2026-09-15T09:00:00Z",
timezone="UTC",
)Response
{
"success": true,
"message": "Scheduled post updated",
"postId": "post_xyz789",
"scheduledFor": "2026-09-15T09:00:00.000Z"
}Status Codes
| Code | Meaning |
|---|---|
200 | Successfully updated |
400 | Invalid payload or a platform rejected the content |
402 | Not enough credits for the added platforms |
403 | A target platform is not available on your plan |
404 | Post not found |
409 | Post already published or not in scheduled state |
503 | Scheduling unavailable |