Create a post
One endpoint covers drafts, schedules, the queue, and publishing now: mode is what differs. Anything but draft is refused while a target still has a blocking validation error, and the offending checks come back in error.details.validations. Media ids must point at finished uploads in this workspace; any that do not come back as media.not_found, listed in error.details.mediaIds. Settings are checked against the platform of each channel before anything is saved, and whatever was accepted but ignored or adjusted comes back in data.warnings.
AuthorizationBearer <token>Send your key as Authorization: Bearer eksis_sk_....
application/json- body
title?|Internal label, never published.
length <= 120caption?stringUsed by every target that has no caption of its own.
length <= 63206baseCaption?stringDeprecatedOld name of caption, still accepted.
length <= 63206mediaIds?array<string>Media ids from GET /v1/media, POST /v1/media/uploads, or POST /v1/media/imports. Used by targets with an empty mediaIds.
items <= 35baseMediaIds?array<string>DeprecatedOld name of mediaIds, still accepted.
items <= 35targets*array<|>One entry per destination channel. A post always has at least one.
1 <= itemsscheduledAt?|Required when mode is schedule. Interpreted as an absolute instant, so send an offset.
date-timemode?stringdraft saves without publishing. schedule needs scheduledAt. queue takes the next free slot from the channel queue. now publishes immediately.
"draft""draft""schedule""now""queue"The post was created.
application/json- response
data?curl -X POST 'https://api.eksis.io/v1/posts' \ -H 'Authorization: Bearer eksis_sk_...' \ -H 'Content-Type: application/json' \ -d '{ "caption": "Three tips for planning a content week.", "mediaIds": [ "YOUR_VIDEO_MEDIA_ID" ], "mode": "schedule", "scheduledAt": "2026-11-03T09:00:00+07:00", "targets": [ { "channelId": "YOUR_YOUTUBE_CHANNEL_ID", "contentType": "short", "settings": { "title": "How we plan a week of posts", "privacy": "public", "categoryId": "22", "tags": [ "social media" ], "madeForKids": false } } ]}'{ "data": { "id": "string", "status": "string", "scheduledAt": "2019-08-24T14:15:22Z", "warnings": [ { "channelId": "string", "platform": "string", "code": "string", "field": "string", "message": "string", "hint": "string" } ] }}