Publish creative
submit_publicationPost one of the brand's creatives to a connected channel, publicly. Without scheduledAt it goes out immediately; with a future ISO 8601 timestamp carrying its offset, such as 2026-09-25T14:00:00+03:00 or 2026-09-25T11:00:00Z, it is scheduled. Confirm the channel, caption and time with the user before calling. Publishing costs no credits. Give each new post a new requestId, and repeat it unchanged only on a retry: a retry within 2 minutes returns the first post with its current status and deduplicated: true, and a requestId reused with different arguments is refused. Without a requestId, the same arguments within 2 minutes count as a retry. Needs an admin to allow publishing over MCP (see get_workspace). Pass connectionId from list_integrations (where publishWith submit_publication marks the accounts this takes), or just the platform when the brand has a single account there. The format is the channel's first that takes the creative (an image becomes a feed post, a clip a reel); pass format only to override it. Every format but a story needs a caption, and a story takes none. The picture is published as it is: if its shape does not fit the format the call fails and says so, and resize_creative can make a version that fits. Not for TikTok, where only the person posting may choose the post's settings and declarations: call prepare_tiktok_post, which opens a panel where the user does that and posts.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Override the format picked from the channel and the creative. | |
| brandId | No | A brand id from get_workspace or list_brands, or the brand's name. Omit it when the organization has a single brand. | |
| caption | No | The post's caption, required for every format but a story. write_caption can draft one in the brand's voice. | |
| platform | No | Instead of connectionId, when the brand has exactly one account on that platform. | |
| requestId | No | Your own unique id for this request. Use a new one for every new request, even with the same arguments. Repeat it unchanged only to retry this exact call within 2 minutes; the retry returns the first result. | |
| creativeId | Yes | A creative id from list_creatives, search_library, get_job or get_upload. | |
| scheduledAt | No | When to publish, as an ISO 8601 timestamp with its offset, in the future. Omit to publish now. | |
| connectionId | No | The connected account to post to, from list_integrations. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | ||
| status | Yes | ||
| caption | Yes | ||
| mediaUrl | No | ||
| platform | Yes | ||
| creativeId | Yes | ||
| accountName | Yes | ||
| scheduledAt | No | ||
| deduplicated | No | ||
| accountHandle | No | ||
| publicationId | Yes | ||
| publishingNow | Yes | ||
| creditsCharged | Yes |