Video recipe
Publish video to YouTube, Instagram, Facebook and Threads
Upload your video once, then prepare a post for each destination. This guide covers media checks, platform options, YouTube privacy and checking whether a post went live. Publishing contract reviewed 20 October 2026.
Read as MarkdownReviewed by SosoAPI team ·
1. Prepare one ready video asset
Upload a local video or import a public video URL into your workspace. Check that upload or import until it is ready, then use the registered asset_id and canonical asset_url in your post.
SosoAPI checks the video’s actual container, duration, dimensions and codecs where the platform requires them. A filename, caller-supplied MIME type or playable preview is not enough to establish eligibility. Check your rights to the video and audio, and any required disclosures, before scheduling.
- Keep the original video and cover assets in the same authorized Workspace.
- Check full-draft eligibility for the exact account and intended format.
- If preparation fails, inspect its existing status; do not start duplicate imports just because a response is slow.
2. Choose the destination’s video format
Choose the format and options supported by the destination account. You can reuse a ready asset, but each platform needs its own provider_payload.
| Destination | provider_payload choice | Review before scheduling |
|---|---|---|
| platform: instagram; VIDEO, REELS or STORY_VIDEO as appropriate. | Professional account and observed capabilities; Stories need Business eligibility. Reels-specific options must stay on Reels. | |
| Facebook Page | platform: facebook; VIDEO, REELS or STORY_VIDEO as appropriate. | Page identity, publish permission and CREATE_CONTENT task; supported media and format options. |
| Threads | platform: threads; VIDEO. | Eligible publishing account and ready video; text-only attachments do not apply to a VIDEO payload. |
| YouTube channel | platform: youtube; VIDEO. | Explicit title, category, privacy and cancellation mode; management permission for native scheduling. |
3. Schedule a reviewed YouTube video
Use the server helper from the API reference. Replace asset_id with the registered positive integer and asset_url with its canonical URL. Select the channel’s actual account ID and a future publishing time.
This example requests public publication at the chosen time. Confirm that visibility with the user before running it. Set contains_synthetic_media to match the video; false is only an example. UNSCHEDULE_KEEP_PRIVATE asks YouTube to keep an unpublished native schedule private if it is cancelled.
await sosoPost("/studio-api/scheduled-posts/create", {
"workspace_id": "<workspace-uuid>",
"social_account_id": "<youtube-channel-account-uuid>",
"caption": null,
"hashtags": [],
"media": [
{
"kind": "video",
"asset_id": "<ready-video-asset-id>",
"url": "<canonical-video-asset-url>"
}
],
"provider_payload": {
"platform": "youtube",
"publish_options": {
"post_type": "VIDEO",
"title": "A reviewed product walkthrough",
"description": "Our team introduces the product in one short walkthrough.",
"category_id": "24",
"privacy_status": "public",
"cancellation_mode": "UNSCHEDULE_KEEP_PRIVATE",
"contains_synthetic_media": false
}
},
"scheduled_at": "<future-ISO-8601-instant-with-offset>",
"display_timezone": "Asia/Hong_Kong",
"idempotency_key": "<stable-key-for-this-one-video-intent>"
});4. Keep privacy, Shorts and provider limits explicit
Use post_type VIDEO for YouTube. You may set surface_expectation: SHORT, but YouTube still decides whether the upload qualifies as a Short. A filename or portrait orientation alone cannot establish that.
Permission to upload and permission to manage native schedules are separate. Check whether the channel supports optional features such as thumbnails; availability can be unknown. Google’s upload reference explains its authorization and metadata requirements, while SosoAPI also checks its own supported fields and the connected account.
YouTube and other platforms may take time to process or moderate a video, and their quotas still apply. An accepted upload does not mean the video is publicly visible.
5. Verify the same post’s final outcome
Save the Scheduled Post ID and check its delivery and final outcome. Open the provider link when one is available. Scheduled or publishing means the final result is still pending.
An accepted schedule continues on the server if your client disconnects. Read the same post before changing anything. To cancel, use its current version and an available cancel action. Deleting an already-published video follows different rules.
Check each destination’s requirements when reusing a video across platforms. These examples show request formats; they do not run or publish a video from this page.