Create or Schedule Post
Endpoints
POST /postsfor immediate publishingPOST /posts/schedulefor delayed publishing
Both endpoints create a post record, insert post_targets, and enqueue a BullMQ job.
Request body
| Name | Type | Required | Notes |
|---|---|---|---|
content | string | No | Max 5000 chars. Defaults to empty string. |
social_account_ids | string[] | Conditional | Preferred target strategy. UUID connection IDs. |
platforms | string[] | Conditional | Legacy fallback. |
media_urls | string[] | No | Public URLs to media. |
workspace_id | string | No | Team account context. |
platform_options | object | No | Per-platform options map. |
scheduled_at | string | Yes for /posts/schedule | ISO 8601 and must be in the future. |
At least one target is required: social_account_ids or platforms.
Example (immediate)
{
"content": "New launch today 🚀",
"social_account_ids": ["2f325f4c-4a65-4f39-958f-280f5a3b0d89"],
"media_urls": ["https://cdn.example.com/image.jpg"],
"platform_options": {
"tiktok": {
"tiktokPrivacy": "PUBLIC",
"tiktokAllowComments": true
}
}
}
Example (scheduled)
{
"content": "Scheduled post for tomorrow",
"social_account_ids": ["2f325f4c-4a65-4f39-958f-280f5a3b0d89"],
"scheduled_at": "2026-03-24T14:00:00.000Z"
}
Platform-specific behavior
TikTok
- Requires
media_urlswith video or photo URL. - Photo uploads are proxied through
PROXY_BASE_URLwhen configured. - Supports options under
platform_options.tiktok, including:tiktokPrivacytiktokIsDrafttiktokAllowCommentstiktokAllowDuettiktokAllowStitchtiktokBrandOrganictiktokBrandContenttiktokAutoAddMusictiktokIsAigc
- Requires
media_urls. - Uses Graph API container flow then publish flow.
- Video posts are published as Reels and polled until processing finishes.
YouTube
- Requires
media_urlswith video URL. - Photo uploads are rejected.
- Uploads are published with privacy status
privateby default.
Twitter, LinkedIn, Facebook
- Current worker adapters are mocked in this microservice implementation.