Create post
Authorization
Request Body
platform_posts[]
size_bytes is only needed for POST/v1/media local-file uploads.platform_posts; platform-scoped nesting belongs only to the legacy account_ids shape. See common platform options examples for YouTube, Instagram, TikTok, Facebook, and Pinterest.Response Body
202
201
400
401
402
422
500
Scheduling Limits
Free active backlog: Free workspaces can keep up to 50 undeleted parent posts in scheduled status. Exceeding that cap returns PLAN_SCHEDULED_POST_LIMIT_EXCEEDED. The existing 100 posts/month quota still applies when posts are created and delivered. Paid plans do not cap active scheduled backlog.
Media retention: scheduled posts keep uploaded media until they reach a final status. After success, failed, partial, or cancellation, UniPost retains media according to the workspace plan before cleanup.
X Credits
Managed X publishes consume the workspace's included X Credits allowance. A conclusively URL-free X post uses 15 Credits; a URL or domain-like candidate is conservatively counted at 200 Credits. Bring-your-own X API connections do not consume UniPost X Credits. Inspect remaining capacity with GET/v1/billing/x-credits.
Final platform results include x_credits_counted, x_credit_operation, x_credit_catalog_version, and x_credit_billing_mode. BYO X results return zero counted Credits with billing mode customer_x_app.
At the hard limit, managed-X delivery fails with x_monthly_usage_limit_exceeded. The independent safety cap of 20 X posts per connected account per UTC day still applies.
Publishing Result
Poll Model: immediate publish returns 202 after UniPost accepts and queues delivery. Poll GET/v1/posts/:post_id to read the final publishing result.
Failure Model: failed result rows include error_source, error_temporality, provider_error, and retry_policy. Use retry_policy.will_retry for automatic retries and avoid parsing error_message.
Push Model: create a webhook subscription with POST/v1/webhooks to receive final publishing events from UniPost.