Tools

posts_publish

Its own verb because it is irreversible and carries its own `idempotency_key`.

Its own verb because it is irreversible and carries its own idempotency_key. Fans out to every target channel immediately; the response’s channel entries carry the per-destination results as the worker fills them in — poll posts_get for the outcome (url, external_post_id, or a sanitized error per channel). Refuses when the post is not ready — the refusal carries the post as JSON, so read its per-channel errors[] and fixes[] straight off the failed call.

Input

FieldTypeRequiredDescription
organizationstringnoOrganization slug to act in (see organizations_list). Optional: API keys are bound to one organization; OAuth connections default to your active organization.
idstringyesPost id
idempotency_keystringnoClient-chosen dedupe key. Retrying with the same key returns the original result instead of creating/publishing twice. Pick one per logical action.
expected_updated_atstringnoThe updated_at you last saw. When the post moved on since, the call is refused (409) instead of acting on someone else’s concurrent edit. Omit for last-write-wins.

Set idempotency_key on retries: a repeated call with the same key returns the original result instead of acting twice. Use it whenever you cannot tell whether a timed-out call landed.

Result

JSON on success. A refusal comes back as an error prefixed with its code (NOT_FOUND, FORBIDDEN, TOO_MANY_REQUESTS, …) and a message written to be acted on — read it before retrying.

The same operation elsewhere

This tool and the REST operation postsPublish and the CLI command inklate posts publish run the same guarded procedure the dashboard uses — same permissions, same validation, same tenant isolation.