Create post
Create and optionally publish a post. Immediate posts (publishNow: true) include platformPostUrl in the response. Content is optional when media is attached or all platforms have customContent. See each platform's schema for media constraints.
API key authentication - use your Zernio API key as a Bearer token
In: header
Post caption/text. Optional when media is attached or all platforms have customContent. Required for text-only posts.
date-timefalseWhen true, saves the post as a draft. When none of scheduledFor, publishNow, or queuedFromProfile are provided, the post defaults to draft automatically.
false"UTC"Tags/keywords. YouTube constraints: each tag max 100 chars, combined max 500 chars, duplicates auto-removed.
trueRoot-level TikTok settings applied to all TikTok platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
Configure automatic post recycling (reposting at regular intervals). After the post is published, the system creates new scheduled copies at the specified interval until expiration conditions are met. Supports weekly or monthly intervals. Maximum 10 active recycling posts per account. YouTube and TikTok platforms are excluded from recycling. Content variations are recommended for Twitter and Pinterest to avoid duplicate flags.
Profile ID to schedule via queue. When provided without scheduledFor, the post is auto-assigned to the next available slot. Do not call /v1/queue/next-slot and use that time in scheduledFor, as that bypasses queue locking.
Specific queue ID to use when scheduling via queue. Only used when queuedFromProfile is also provided. If omitted, uses the profile's default queue.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://zernio.com/api/v1/posts" \ -H "Content-Type: application/json" \ -d '{ "content": "Check out our evergreen guide!", "platforms": [ { "platform": "twitter", "accountId": "64e1f0a9e2b5af0012ab34cd" } ], "scheduledFor": "2025-06-01T10:00:00Z", "recycling": { "gap": 2, "gapFreq": "week", "expireCount": 6, "contentVariations": [ "Check out our evergreen guide!", "Don\'t miss our essential guide!", "Our most popular guide, updated!" ] } }'{
"post": {
"_id": "65f1c0a9e2b5af0012ab34cd",
"title": "Launch post",
"content": "We just launched!",
"status": "scheduled",
"scheduledFor": "2024-11-01T10:00:00Z",
"timezone": "UTC",
"platforms": [
{
"platform": "twitter",
"accountId": {
"_id": "64e1f0...",
"platform": "twitter",
"username": "@acme",
"displayName": "Acme Corp",
"isActive": true
},
"status": "pending"
}
]
},
"message": "Post scheduled successfully"
}{
"error": "string"
}{
"error": "Unauthorized"
}{
"error": "string"
}{
"error": "This exact content was already posted to this account within the last 24 hours.",
"details": {
"accountId": "string",
"platform": "string",
"existingPostId": "string"
}
}{
"error": "string",
"details": {}
}