Skip to content

content_publications_record

Record that a person already published one OUTPUT of an approved post by hand — no scheduling needed.

Tool

content_publications_record

Record that a person already published one OUTPUT of an approved post by hand — no scheduling needed.

Record that a person already published one OUTPUT of an approved post by hand — no scheduling needed. This never publishes anything: it stores the fact, and the post's status follows (one of two outputs recorded → partially_published; every output published or skipped → published). When the output has a publication on its network that is queued, reminded or may already be live, THAT publication is confirmed (as content_publications_confirm would); otherwise a publication is stored already published, which nothing ever sends or reminds. An output goes to a network once: one already out on any channel of the network is refused with 409 already_published naming it, one being sent by the automatic publisher right now with 409 publication_in_flight (wait for its outcome), a skipped one with 409 output_skipped (content_posts_unskip_output first). Only for a post past approval (409 post_not_approved). A queued automatic publication the publisher has claimed but not started sending is confirmed too, and then never sent. Repeating the same call (same post, output and channel) returns the same publication; a record is stored once, so a repeat naming a different publishedAt or externalUrl is refused with 409 record_mismatch listing the stored values.

Behavior

HTTP
POST /content/publications/record

Arguments

Name
Type
Required
Description
postId
string
•
The approved post one of whose outputs a person published by hand.
channelId
string
—
The channel it went out on (content_channels_list). Omit to file it under the output's network's reminder channel; a network with none is refused with 409 no_reminder_channel.
variantId
string
—
Which OUTPUT was published: a targets[].id from content_posts_get. Omit when the channel's network has exactly one output (or, without channelId, when the post has exactly one output). Several and none named: 409 variant_required listing them; an id of another network's output with a channelId: 409 network_not_targeted; an id the post does not have: 409 variant_not_found.
externalId
string
—
The network's own id for the post, if known.
externalUrl
string
—
URL of the post on the network. Worth supplying — it is what identifies the post later.
publishedAt
string
—
ISO-8601 time the post went out; now when omitted. A time in the future is refused with 400.

Response

Field
Type
Always
Description
id
string
•
Publication id.
text
string
•
The exact text that will be published to this channel — markdown already flattened to plain network text at schedule time. Not the markdown source; that stays on the post.
media
array
•
The media asset ids this publication sends — the output's own list, or the post's when the output inherits — copied when it was scheduled. What the adapter uploads, character for character.
state
string
•
pending (queued) -> publishing (the reminder was sent; a person is publishing by hand) -> published (confirmed) | failed | cancelled.
fields
object
•
The network variant fields it goes out with — a YouTube title, a Reddit subreddit — copied from the post's approved output when it was scheduled.
postId
string
•
The post being published.
costUsd
number
•
What publishing this costs in USD, computed when it was scheduled. On X a post carrying a link costs 13x a plain one. Null means the cost is not known — an auto channel refuses to dispatch it.
warning
string
•
Set on a published publication when something did not go as asked but the post is out — e.g. YouTube refused the cover as the thumbnail (an unverified channel, a file too large). The post is NOT retried; fix it on the network by hand. Null otherwise.
attempts
integer
•
How many dispatch attempts have been made.
postType
string
•
The post type this publication goes out as (video, short, reel, post, ...), copied from the post's approved variant when it was scheduled. Null on a publication scheduled before post targets existed.
channelId
string
•
The channel it is published to.
costBasis
string
•
Which rate produced costUsd: `plain` the flat per-post rate, `link` the higher rate a post carrying a link is charged, `free` a channel whose rates are both zero. Null when the cost is not known.
createdAt
string
•
ISO-8601 creation time.
lastError
string
•
The most recent failure, if any.
updatedAt
string
•
ISO-8601 time of the last change.
variantId
string
•
The post output this publication is bound to (targets[].id). One live publication per post × channel × output. A publication scheduled before outputs existed carries the channel's network name.
externalId
string
•
The network's id for the published post, once known.
externalUrl
string
•
URL of the published post, once known.
publishedAt
string
•
ISO-8601 time it was confirmed published.
scheduledAt
string
•
ISO-8601 time the publication is due.
coverMediaId
string
•
The output's cover image asset id, copied when it was scheduled, or null for none. YouTube sets it as the video's thumbnail after the upload; a reminder links it for the person publishing by hand.
publicationId
string
•
The publication id again, under the name the content/publication.settled event uses to report this publication finishing. Always identical to id.
reminderCount
integer
•
How many reminders have been sent for this publication.
idempotencyKey
string
•
The key that makes a retry the same publication.
reminderSentAt
string
•
ISO-8601 time the most recent reminder went out, or null if none has.

Try it

Record that a person already published one OUTPUT of an approved post by hand — no scheduling needed.

When to use

Record that a person already published one OUTPUT of an approved post by hand — no scheduling needed. This never publishes anything: it stores the fact, and the post's status follows (one of two outputs recorded → partially_published; every output published or skipped → published). When the output has a publication on its network that is queued, reminded or may already be live, THAT publication is confirmed (as content_publications_confirm would); otherwise a publication is stored already published, which nothing ever sends or reminds. An output goes to a network once: one already out on any channel of the network is refused with 409 already_published naming it, one being sent by the automatic publisher right now with 409 publication_in_flight (wait for its outcome), a skipped one with 409 output_skipped (content_posts_unskip_output first). Only for a post past approval (409 post_not_approved). A queued automatic publication the publisher has claimed but not started sending is confirmed too, and then never sent. Repeating the same call (same post, output and channel) returns the same publication; a record is stored once, so a repeat naming a different publishedAt or externalUrl is refused with 409 record_mismatch listing the stored values.

Example

Ask your agent something like this:

Record that a person already published one OUTPUT of an approved post by hand — no scheduling needed.

The agent will invoke content_publications_record with these arguments:

{
  "postId": "<postId>"
}

Esc

Start typing to search the docs.

↑↓navigate↵select