content_publications_validate
Dry run: check one output of a post per channel WITHOUT scheduling anything.
Dry run: check one output of a post per channel WITHOUT scheduling anything. Per channel entry, variantId names the output (targets[].id); omit it when the channel's network has one output and it is inferred — with several and none named the entry reports variant_required and the outputs to pick from. Returns everything that would go wrong — a network the post has no output for, a required variant field left empty, a post type that needs a video, text too long, the output's media not stored yet, a link a network will not linkify — and what publishing would cost. On X a post carrying a link costs $0.20 against $0.015 for a plain one, so call this before you schedule.
Behavior
- HTTP
POST /content/publications/validate
Arguments
Name | Type | Required | Description |
|---|---|---|---|
postId | string | • | The post to check. It does not have to be approved yet — this never publishes. |
channels | array | • | One entry per channel you are considering. Check them all in one call. |
scheduledAt | string | — | The slot you intend to use, ISO-8601. Only the daily ceiling depends on it; omit for "now". |
Response
Field | Type | Always | Description |
|---|---|---|---|
ok | boolean | • | True when nothing blocks scheduling. False when any channel carries an issue of severity "error" — the same fact as the issue list below, stated once so it can be branched on. |
postId | string | • | The post that was checked. |
channels | array | • | One result per requested channel, in the order they were given. |
errorCount | integer | • | How many error-severity issues there are across every channel. Warnings are not counted: they do not block scheduling. |
firstErrorMessage | string | • | The first error message in report order, ready to show a person or put in a notification. Null when there are no errors. |
Try it
Dry run: check one output of a post per channel WITHOUT scheduling anything.