Skip to main content
PUT
https://postsyncer.com/api/v1
posts
/
{id}
{
    "workspace_id": 12,
    "labels": [
        5
    ],
    "content": [
        {
            "text": "Updated: Post Once. Publish everywhere",
            "media": [
                "https://postsyncer.com/images/og/banner.png?v2"
            ]
        }
    ],
    "schedule_type": "schedule",
    "schedule_for": {
        "date": "2025-07-05",
        "time": "23:00",
        "timezone": "Africa/Addis_Ababa"
    },
    "accounts": [
        {
            "id": 136,
            "settings": {
                "for_super_followers_only": false,
                "reply_settings": "everyone",
                "quote_tweet_id": null,
                "reply": {
                    "in_reply_to_tweet_id": null
                },
                "community_id": null,
                "share_with_followers": true,
                "text": null
            }
        }
    ]
}
{ 
  "id": 749,
  "content": [
      {
          "text": "Updated: Post Once. Publish everywhere",
          "media": [
              {
                  "id": 1672,
                  "name": "banner.png",
                  "url": "https://postsyncer.com/images/og/banner.png?v2",
                  "type": "image/png",
                  "size": 210537
              }
          ]
      }
  ],
  "status": "SCHEDULED",
  "posted_on": [],
  "scheduled_at": "2025-07-05 23:00 PM",
  "repeatable": null,
  "repeatable_times": null,
  "repeatable_gap": null,
  "repeatable_gap_unit": null,
  "remaining_posts": null,
  "created_at": "2025-07-05 17:04 PM",
  "updated_at": "2025-07-05 17:05 PM",
  "workspace": {
      "id": 12,
      "name": "abdulmejidshemsuawel",
      "slug": "abdulmejidshemsuawel",
      "type": "PERSONAL",
      "logo": null,
      "timezone": "Africa/Addis_Ababa",
      "language": "en"
  },
  "labels": [
      {
          "id": 5,
          "name": "ol pasdm",
          "color": "#bf3434"
      }
  ],
  "platforms": [
      {
          "platform": "twitter",
          "posted_on": [],
          "status": "PENDING",
          "settings": {
              "for_super_followers_only": false,
              "reply_settings": "everyone",
              "quote_tweet_id": null,
              "reply": {
                  "in_reply_to_tweet_id": null
              },
              "community_id": null,
              "share_with_followers": true,
              "text": "",
              "poll": {
                  "enabled": false,
                  "duration_minutes": null,
                  "reply_settings": "everyone",
                  "options": null
              }
          }
      }
  ],
  "auto_plug": null 
}

Update Post

Updates an existing post with new content, scheduling information, or other settings. Only posts that haven’t been published yet can be updated. The post can include text content, media attachments, and platform-specific settings.

Request

workspace_id
integer
required
The ID of the workspace where the post will be created
labels
string[]
Optional array of label IDs to apply to this post
content
object[]
required
Array of content objects. Each object can contain text and media. At least one content item with text or media is required.
schedule_type
string
required
Type of scheduling. Must be one of: publish_now, schedule, draft
schedule_for
object
Scheduling details. Required when schedule_type is schedule.
repeatable
boolean
Whether the post should be repeated
repeatable_times
integer
Number of times to repeat the post. Required if repeatable is true.
repeatable_gap
integer
Time gap between repeats. Required if repeatable is true.
repeatable_gap_unit
string
The unit for the repeatable gap. Must be one of: hours, days, weeks, months. Required if repeatable is true.
accounts
array
Array of account objects to publish to
{
    "workspace_id": 12,
    "labels": [
        5
    ],
    "content": [
        {
            "text": "Updated: Post Once. Publish everywhere",
            "media": [
                "https://postsyncer.com/images/og/banner.png?v2"
            ]
        }
    ],
    "schedule_type": "schedule",
    "schedule_for": {
        "date": "2025-07-05",
        "time": "23:00",
        "timezone": "Africa/Addis_Ababa"
    },
    "accounts": [
        {
            "id": 136,
            "settings": {
                "for_super_followers_only": false,
                "reply_settings": "everyone",
                "quote_tweet_id": null,
                "reply": {
                    "in_reply_to_tweet_id": null
                },
                "community_id": null,
                "share_with_followers": true,
                "text": null
            }
        }
    ]
}

Response

id
integer
Unique identifier for the updated post
content
array
Array of content objects with text and media
status
string
Status of the post (draft, scheduled, published, failed)
posted_on
array
Array of posted timestamps in workspace timezone
scheduled_at
string
Scheduled date and time in workspace timezone
repeatable
boolean
Whether the post is set to repeat
repeatable_times
integer
Number of times the post will repeat
repeatable_gap
integer
Gap between repeats
repeatable_gap_unit
string
Unit for the repeat gap (hours, days, weeks, months)
remaining_posts
integer
Number of remaining posts in the repeat sequence
workspace
object
Information about the post’s workspace
labels
array
Array of labels attached to the post
platforms
array
Array of platform-specific post information
auto_plug
boolean
Whether auto-plug is enabled for this post
created_at
string
Creation timestamp in workspace timezone
updated_at
string
Last update timestamp in workspace timezone
{ 
  "id": 749,
  "content": [
      {
          "text": "Updated: Post Once. Publish everywhere",
          "media": [
              {
                  "id": 1672,
                  "name": "banner.png",
                  "url": "https://postsyncer.com/images/og/banner.png?v2",
                  "type": "image/png",
                  "size": 210537
              }
          ]
      }
  ],
  "status": "SCHEDULED",
  "posted_on": [],
  "scheduled_at": "2025-07-05 23:00 PM",
  "repeatable": null,
  "repeatable_times": null,
  "repeatable_gap": null,
  "repeatable_gap_unit": null,
  "remaining_posts": null,
  "created_at": "2025-07-05 17:04 PM",
  "updated_at": "2025-07-05 17:05 PM",
  "workspace": {
      "id": 12,
      "name": "abdulmejidshemsuawel",
      "slug": "abdulmejidshemsuawel",
      "type": "PERSONAL",
      "logo": null,
      "timezone": "Africa/Addis_Ababa",
      "language": "en"
  },
  "labels": [
      {
          "id": 5,
          "name": "ol pasdm",
          "color": "#bf3434"
      }
  ],
  "platforms": [
      {
          "platform": "twitter",
          "posted_on": [],
          "status": "PENDING",
          "settings": {
              "for_super_followers_only": false,
              "reply_settings": "everyone",
              "quote_tweet_id": null,
              "reply": {
                  "in_reply_to_tweet_id": null
              },
              "community_id": null,
              "share_with_followers": true,
              "text": "",
              "poll": {
                  "enabled": false,
                  "duration_minutes": null,
                  "reply_settings": "everyone",
                  "options": null
              }
          }
      }
  ],
  "auto_plug": null 
}

Code Examples

curl -X PUT "https://postsyncer.com/api/v1/posts/749" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": 12,
    "labels": [
      5
    ],
    "content": [
      {
        "text": "Updated: Post Once. Publish everywhere",
        "media": [
          "https://postsyncer.com/images/og/banner.png?v2"
        ]
      }
    ],
    "schedule_type": "schedule",
    "schedule_for": {
      "date": "2025-07-05",
      "time": "23:00",
      "timezone": "Africa/Addis_Ababa"
    },
    "accounts": [
      {
        "id": 136,
        "settings": {
          "for_super_followers_only": false,
          "reply_settings": "everyone",
          "quote_tweet_id": null,
          "reply": {
            "in_reply_to_tweet_id": null
          },
          "community_id": null,
          "share_with_followers": true,
          "text": null
        }
      }
    ]
  }'

Platform-Specific Settings

Each social media platform supports different settings that allow you to customize how your post appears and behaves. These settings are specified in the settings object for each account in the accounts array.

Twitter/X Settings

  • for_super_followers_only: Restrict post visibility to super followers
  • reply_settings: Control who can reply (‘everyone’, ‘following’, ‘mentioned_users’)
  • quote_tweet_id: Quote an existing tweet
  • reply: Reply to a specific tweet
  • community_id: Post to a specific community
  • share_with_followers: Share community post with followers too
  • text: Override the main text content for Twitter
  • poll: Create a poll with options and duration

Instagram Settings

  • post_type: Choose between ‘REELS’, ‘STORIES’ (optional)
  • caption: Custom caption with hashtags and mentions

Facebook Settings

  • title: Custom title for the post
  • link: Attach a URL to the post

LinkedIn Settings

  • visibility: Control post visibility (‘PUBLIC’, ‘CONNECTIONS’, ‘LOGGED_IN’)
  • link: Attach a URL to the post
  • title: Custom title for the post

YouTube Settings

  • video_type: Choose between ‘video’ or ‘short’
  • title: Video title
  • description: Video description
  • privacyStatus: Set privacy (‘public’, ‘private’, ‘unlisted’)
  • tags: Array of tags for better discoverability
  • embeddable: Allow video embedding
  • selfDeclaredMadeForKids: Mark as content for children
  • notifySubscribers: Send notifications to subscribers
  • category_id: YouTube category

TikTok Settings

  • privacy_level: Set video privacy (PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY)
  • title: Video title
  • description: Video description
  • disable_comment: Turn off comments
  • disable_duet: Disable duet feature
  • disable_stitch: Disable stitch feature
  • brand_content_toggle: Mark as brand content
  • brand_organic_toggle: Mark as organic brand content
  • is_aigc: Indicate AI-generated content
  • auto_add_music: Automatically add music
  • post_mode: Enum: DIRECT_POST (post directly) | MEDIA_UPLOAD (upload for user to finish in TikTok)

Pinterest Settings

  • board_id: Specify which board to pin to
  • link: Attach a URL to the pin
  • title: Pin title
  • description: Pin description
  • note: Additional pin notes
  • published: Publish immediately or save as draft

Threads Settings

  • title: Custom title for the post
  • link_attachment: Attach a URL to the post

Telegram Settings

  • title: Custom title for the message
  • disable_notification: Send silently
  • protect_content: Protect from forwarding

Bluesky Settings

  • title: Custom title for the post
  • website_card: Add a website card with URI, title, and description

Media Guidelines

Different social platforms have different requirements for media. PostSyncer will automatically process your media to meet platform requirements, but keep these limitations in mind:
PlatformMax ImagesMax VideosRequired MediaMax File Size
Twitter/X41No5MB (img), 512MB (video)
Facebook101No10MB (img), 4GB (video)
Instagram101Yes8MB (img), 100MB (video)
TikTok351Yes20MB (img), 4GB (video)
YouTube01YesN/A, 10GB (video)
Pinterest51Yes20MB (img), 200MB (video)
Threads1010No8MB (img), 1GB (video)
Telegram1010No5MB (img), 20MB (video)
LinkedIn91No5MB (img), 512MB (video)
Bluesky41No1MB (img), 100MB (video)

Error Codes

400
Bad Request
Validation errors, invalid parameters, or invalid media URLs
401
Unauthorized
Missing or invalid API token
403
Forbidden
Token does not have ‘posts’ permission
404
Not Found
Post not found or user does not have access to the post’s workspace
422
Unprocessable Entity
Validation errors in request data