Update the caption, media, accounts, schedule, or external metadata for a scheduled/pending post.
Only posts in draft, pending, scheduled, retry, or failed status can
be edited. Posted, partial, or canceled posts are immutable.
Path Parameters
The ID of the post to update.
Body Parameters
Optional replacement caption. At least one field in the body is required;
empty payloads are rejected with 422 invalid_payload.
Optional replacement media payload. Follows the same structure as Create
Post .
Optional list of account IDs (max 10). Replaces the previous targeting
list completely.
Optional TikTok settings update. Supported only when every targeted account is a TikTok BYO account.
Optional TikTok title override (max 150 chars).
Optional TikTok description override (max 2200 chars).
DIRECT_POST or MEDIA_UPLOAD (uploads to TikTok inbox/drafts).
Optional privacy level (PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY).
Optional duet toggle (video posts).
Optional stitch toggle (video posts).
Optional TikTok policy consent flag.
Optional commercial-content flag.
Optional branded-content flag for own brand.
Optional branded-content flag for third-party promotion.
Optional TikTok auto-music toggle (photo posts).
Pass null to clear stored TikTok settings from the post.
Optional Pinterest settings update. Supported only when at least one targeted account is a Pinterest account.
Optional Pinterest board ID (max 128 chars).
Optional Pinterest pin title override (max 100 chars).
Optional destination URL.
Optional Pinterest topic tags (up to 30). Multi-word tags are supported.
Pass null to clear stored Pinterest settings from the post.
tiktok and pinterest updates are mutually exclusive in one request.
Include only the platform-specific object that matches your targeted
accounts.
Optional ISO timestamp. Pass null to push the post back into the “publish
ASAP” queue (pending).
Optional correlation ID override.
Optional TikTok post URL for background music (e.g.,
https://www.tiktok.com/@genviral/video/1234567890). Pass null to remove
existing music without changing media.
Limits
Same limits as Create Post : caption ≤500; one video (MP4/MOV/M4V/AVI) under 100MB and 15–60s when duration metadata is present (we warn and attempt if duration is missing), or a slideshow of 1–35 JPG/JPEG/PNG images under 5MB each. Music is only supported when targeting TikTok-requests including Instagram/other platforms with music will be rejected. TikTok settings are only valid when all selected accounts are TikTok BYO accounts, and tiktok.post_mode = MEDIA_UPLOAD is only supported for slideshow/photo posts. Pinterest settings are only valid when at least one selected account is Pinterest; pinterest.tags supports up to 30 tags.
curl --request PATCH \
--url https://www.genviral.io/api/partner/v1/posts/11111111-1111-1111-1111-111111111111 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"caption": "Updated caption",
"media": {
"type": "slideshow",
"urls": [
"https://cdn.genviral.com/reveal-1.jpg",
"https://cdn.genviral.com/reveal-2.jpg"
]
},
"music_url": null,
"scheduled_at": "2025-03-01T17:00:00Z"
}'
{
"ok" : true ,
"code" : 200 ,
"message" : "Post updated" ,
"data" : {
"id" : "11111111-1111-1111-1111-111111111111" ,
"status" : "scheduled" ,
"scheduled_at" : "2025-03-01T17:00:00Z" ,
"warnings" : [
{
"field" : "media" ,
"message" : "Video size metadata is missing" ,
"code" : "VIDEO_METADATA_MISSING"
}
]
}
}
Update responses can include warnings about missing media metadata. They are
informational so you can re-upload media before Hosted Accounts reject it.
Error Responses
400 invalid_json - body is not valid JSON
422 invalid_payload - no editable fields provided or schema validation failed
400 unknown_accounts - one or more provided accounts are outside the authenticated key scope
400 missing_accounts - resolved account list is empty after validation
400 validation_failed - post is immutable or media/music/caption rules failed
400 invalid_music_url or 400 media_unreachable - TikTok/music URLs failed validation
401 - authentication failed (missing/invalid/revoked token)
402 subscription_required - active Creator/Professional/Business plan required
403 tier_not_allowed - Scheduler tier cannot use Partner API
404 not_found - post ID is outside the authenticated key scope
500 update_failed - Database update failed unexpectedly