Validate a post
Runs every check that creating the post would run, and saves nothing. Send the same body as POST /v1/posts. A body that cannot be read (an unknown channel, a settings value of the wrong type) is still a 422; what each platform says about the post comes back as data: targets[].issues per channel, and blockers for anything else that would refuse the save, such as no free queue slot, a time in the past, the plan limit, or X credits. ok tells you whether mode would be accepted as sent. Drafts are always accepted.
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 result of the checks.
application/json- response
data?curl -X POST 'https://api.eksis.io/v1/posts/validate' \ -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": { "ok": true, "mode": "draft", "scheduledAt": "2019-08-24T14:15:22Z", "xCredits": 0, "targets": [ { "channelId": "string", "platform": "string", "ok": true, "issues": [ { "level": "error", "code": "string", "field": "string", "message": "string" } ] } ], "blockers": [ { "code": "string", "message": "string", "hint": "string" } ], "warnings": [ { "channelId": "string", "platform": "string", "code": "string", "field": "string", "message": "string", "hint": "string" } ] }}