Work with publishing accounts and posts
Select an account that can publish, create a TikTok draft from reviewed HTTPS media, and inspect or update it before scheduling.
On this page
Publishing starts with a connected account and a draft. MCP currently creates TikTok drafts with VIDEO, IMAGE, or CAROUSEL content and HTTPS media URLs. Creating or updating a draft does not schedule or publish it.
Always read can_publish and publish_unavailable_reason from account discovery. For an existing post, use the compact list to find it and then load its full detail before changing captions, media, or account selection.
Upload local media
Do not put a local file path or an HTML viewing link, such as a Google Drive share page, in media_urls. Those are not direct media that the publisher can fetch.
For a local file through MCP:
- Call
prepare_console_media_uploadwith the filename, content type, and byte size. - Send a multipart upload to the returned one-time handoff exactly as described by its method, headers, and form field.
- Copy the EntireFeed
urlfrom the upload response into the draft'smedia_urls. - Create or update the draft, then inspect its structured
readinessresult.
Scheduling and publish-now reject a draft unless readiness.ready is true. Read and resolve each readiness issue; common failures include a missing caption, a media-count mismatch, the wrong media type, an unsupported platform, a non-direct share URL, or a hostname that cannot be safely resolved.
Find an account that can publish
List accounts before creating a post for an unfamiliar account. Proceed only when the selected account returns can_publish: true; otherwise show publish_unavailable_reason and stop.
{
"tool": "list_console_publishing_accounts",
"arguments": {}
}{
"accounts": [
{
"id": "33333333-3333-4333-8333-333333333333",
"platform": "TIKTOK",
"username": "brandstudio",
"is_active": true,
"is_verified": true,
"can_publish": true,
"publish_unavailable_reason": null
}
],
"count": 1
}Create a draft from reviewed media
Current draft creation platform.
Supported draft content types.
Supply at least one externally reachable media URL.
{
"tool": "create_console_publishing_post",
"arguments": {
"account_id": "33333333-3333-4333-8333-333333333333",
"platform": "TIKTOK",
"content_type": "VIDEO",
"media_urls": [
"https://cdn.example.com/product-reveal.mp4"
],
"idempotency_key": "campaign-42-publishing-draft-v1",
"caption": "A closer look at the new release.",
"hashtags": [
"launch",
"product"
]
}
}{
"post": {
"id": "22222222-2222-4222-8222-222222222222",
"platform": "TIKTOK",
"content_type": "VIDEO",
"status": "DRAFT",
"media_urls": [
"https://cdn.example.com/product-reveal.mp4"
],
"caption": "A closer look at the new release."
},
"next": "Use schedule_console_publishing_post when the draft is approved."
}Inspect and update the draft
Get the full post before changing it. Omitted patch fields stay unchanged, while explicit null clears nullable fields. Re-read after the write and before repeating an uncertain mutation.
{
"tool": "get_console_publishing_post",
"arguments": {
"post_id": "22222222-2222-4222-8222-222222222222"
}
}Understand post status
DRAFT, PENDING_REVIEW, APPROVEDPreparationReview the full post and account availability before scheduling.SCHEDULED, QUEUED, PUBLISHINGActiveRead the current post and scheduled action; do not schedule it again.PUBLISHEDCompleteRead the post and analytics; no further scheduling action is needed.FAILEDFailedInspect the post and error before deciding whether new scheduling is intended.ARCHIVEDTerminalDo not schedule an archived post.