Schedule a public TikTok
If you mainly want a calendar slot, start with TikTok's scheduler or a publishing tool that supports your intended audience and creative settings.
See the scheduling optionsFor your agent or publishing workflow
TikTok automation uses software to handle repeatable tasks such as scheduling videos, publishing and reading results. Choose the job first. Postdom handles a finished video's submission and follow-up; the released MCP helper shown here uses Only you visibility, so it is not a public-post scheduler.
Already have a video and just want to choose when it goes live? Start with the TikTok scheduling guide. For a reviewed agent workflow, follow one request below from preparation to its actual result.
If you mainly want a calendar slot, start with TikTok's scheduler or a publishing tool that supports your intended audience and creative settings.
See the scheduling optionsUse the Postdom workflow below for an existing finished video. The demonstrated MCP helper submits with Only you visibility; it does not arrange a later public release.
Try the reviewed-video workflowStart with the publishing outcome, then check which performance fields your tool actually returns. Postdom's missing or unavailable metrics must stay missing, not become zeros.
Check the available TikTok metricsThese are different tool categories. Postdom does not manage TikTok DMs or ads, create videos, or run comment, like or follow bots. For a native integration, check the API product and access requirements; create the video in a separate tool.
Compare native TikTok API tasksPostdom publishes supplied finished videos to TikTok, Instagram Reels, YouTube Shorts, LinkedIn, Facebook Reels, X, Snapchat Spotlight, Threads and Bluesky. This walkthrough targets TikTok only. It does not generate the video or automate engagement.
Use a finished, non-commercial AI-made animation as your first example. The agent handles the request and checks what happened; you decide whether this exact video should be sent and under which conditions.
A human connects the TikTok account in Postdom Accounts and chooses per-post review (L1) for this first workflow. The agent reads workspace status, connected accounts and the brand brief. Confirm the intended account before preparing anything; stop if the connection or policy is not ready.
Use Accounts for connection and private agent configuration, or follow the tested Claude Code setup. Keep the workspace key out of chat and source control. The human completes TikTok authorization; never give the agent a social password.
This is a deliberately chosen L1 workflow, not a claim about your account's current policy. Connecting the account, consenting to send this video and approving the Postdom request are separate decisions.
Provide an accepted video URL or a media handle already marked stored. The human previews the exact video and caption, confirms Only you visibility and disabled comments, Duet and Stitch, checks that the AI-made disclosure is truthful, and expressly consents to sending this video to TikTok. Stop if any setting is unsuitable or confirmation is missing.
Before handoff, check the caption and video dimensions and requirements. A valid caption or declared dimension check is not proof that TikTok will accept the file or the account can post it.
Arrange an accepted video URL or a workspace media handle that get_media reports as stored. The public MCP release still lacks measured metadata required for a fresh upload request; a repository-source fix is not a package release. Do not pass a local file path as an uploaded video or claim an invented URL exists.
After that confirmation, call publish_video with the connected TikTok providerAccountId, supplied media, caption, intent and a stable idempotency key. To request a later handoff, agree on the time and timezone, then send it as UTC in publish_at. Save the post ID and actual status. The request does not authorize itself or make the video public.
Use the returned providerAccountId, not a username or the internal account id. A later handoff does not change SELF_ONLY into public visibility. For calendar edits and missed timing, use the scheduling guide.
For the L1 account used here, requires_approval means the human must review the exact request in Postdom. After approval, read get_publish for the same post ID. Scheduled and publishing are intermediate states. Inspect the TikTok destination result; even published does not mean everyone can see a SELF_ONLY video.
You should finish with a post ID and its actual outcome, or a clear handoff to the human when work remains unresolved. Do not treat a submitted request as a completed public post.
get_publish({
"post_id": "33333333-3333-4333-8333-333333333333"
})requires_approval needs the human; scheduled and publishing need follow-up. An agreed time is not proof that TikTok finished processing at that time.
Inspect the TikTok destination result and the video in the intended account. This helper's SELF_ONLY request does not promise public distribution or automatically change visibility later.
Return the existing ID and actual error or state. A human decides whether to retry, reschedule or stop. Do not create a replacement just because the first response was slow or ambiguous.
Use bounded waiting, then hand unresolved work back with its ID. Keep the same idempotency key for an unchanged request and reconcile the original attempt before retrying. TikTok's native Direct Post reference is a separate API; the Postdom request above is not a raw TikTok call.
draftrequires_approvalchanges_requestedrejectedmissed_approvalmissed_schedulescheduledpublishingpublishedpartialfailedblockedunknownIf a state is missing or unfamiliar, preserve its value and the post ID for human review. Do not guess success.
A destination can be published with public_url: null; the missing link alone is not failure. Later, read get_performance without filling missing observations with zeros. See which TikTok metrics Postdom can return before asking an agent to interpret them.
Use these optional details after reviewing the steps above. The prompt repeats the human checks on purpose; copying it is not evidence that a preview, consent or approval happened.
Prepare my supplied finished video for TikTok; do not generate one.
Read get_workspace_status, list_accounts and get_brief.
Show the chosen account and its providerAccountId. Confirm the human
has selected per-post review (L1); otherwise stop and ask.
Ask for my accepted video URL or already-stored media handle and caption.
Show the exact video and these released helper settings:
privacy_level: SELF_ONLY (Only you)
allow_comment: false; allow_duet: false; allow_stitch: false
video_made_with_ai: true
content_preview_confirmed: true; express_consent_given: true
Require my actual preview of this video and caption, agreement to the
audience and interaction settings, truthful AI disclosure confirmation,
and express consent to send this exact video to TikTok.
The helper's true flags are not proof that I did any of those things.
Stop without submitting if confirmation is missing, if I need public
release, different settings, or an unsupported commercial disclosure.
If scheduling, ask for the future time and timezone; convert to UTC.
After my confirmation, submit once with a stable idempotency_key.
Return the post ID and actual status. Wait for my separate Postdom
approval; never approve yourself, widen policy or infer consent.
Read get_publish for the same ID with bounded waiting. Return unresolved
work and its ID to me instead of creating a duplicate. Never report a
SELF_ONLY result as public, or missing performance values as zeros.privacy_level: SELF_ONLY means Only you, not a public launch.allow_comment: false, allow_duet: false, allow_stitch: false.video_made_with_ai: true. Confirm that this is truthful for your video.content_preview_confirmed: true and express_consent_given: true are sent automatically.These are fictional IDs and a non-working example video URL. Replace them and the future date with your own agreed values. The example year is not a supported scheduling-window claim.
{
"id": "internal-example-id",
"providerAccountId": "example-tiktok-account",
"platform": "tiktok",
"status": "connected"
}{
"account_ids": [
"example-tiktok-account"
],
"video_url": "https://media.example.com/finished-ai-animation.mp4",
"caption": "A small imagined world. An AI-made animation, reviewed by its creator.",
"publish_at": "2099-06-15T09:00:00.000Z",
"intent": "Submit this supplied non-commercial animation with Only you visibility after the human has previewed it, accepted the settings and expressly consented; keep L1 approval separate.",
"idempotency_key": "tiktok-reviewed-animation-001"
}{
"privacy_level": "SELF_ONLY",
"allow_comment": false,
"allow_duet": false,
"allow_stitch": false,
"content_preview_confirmed": true,
"express_consent_given": true,
"video_made_with_ai": true
}{
"id": "33333333-3333-4333-8333-333333333333",
"status": "requires_approval",
"scheduled_for": "2099-06-15T09:00:00.000Z"
}The pinned released package was exercised against a local fixture with a fake key. This exact request produced the shown TikTok settings, and a same-ID read returned the pending receipt. No real account, provider authorization, upload, human approval or TikTok publication was tested.
TikTok automation is software handling repeatable work such as scheduling videos, reading results or managing messages. Those jobs need different tools. Postdom handles supplied-video publishing and result tracking, not video generation, messaging, ads or engagement bots.
No. The released helper shown here sends SELF_ONLY (Only you), disables comments, Duet and Stitch, and marks the video as AI-made. It offers no per-call override for those settings. A publish_at time schedules the provider handoff, not a later switch to public visibility. Use a suitable human-controlled publishing path if that is your goal.
No. The helper submits content_preview_confirmed: true and express_consent_given: true automatically. Those are assertions, not evidence of a real preview or consent. Require the human to preview this exact video and caption, accept the audience and interactions, confirm truthful AI disclosure and expressly consent before calling the tool. Stop if anything is missing or incompatible.
A tool cannot promise that your account or content will avoid restrictions. TikTok publishes requirements for its posting APIs, but using an API or selecting private visibility does not certify a workflow as compliant. Check the connected tool's capabilities, the content and the permissions. This example is not a TikTok audit approval or a safety guarantee.
Do not submit through this helper if your video needs commercial-content controls it does not expose. An AI-made flag is not a paid-partnership or promotional-content disclosure. Keep the required disclosure and use a suitable human-controlled path instead. The example uses a non-commercial animation, not an advertisement.
This first workflow deliberately uses human-selected per-post review (L1). Check the actual account policy rather than assuming it is already configured. Other human-granted plan or account permissions have their own bounds; an agent cannot widen them. Consent to send a particular video, permission to call a tool and Postdom approval are separate decisions.
Read the post and destination status first. A published destination can still have public_url: null, and a private result is not public distribution. Keep the same ID for follow-up. A missing performance snapshot or null metric is not zero and should not be turned into a claim about the video's audience.
Choose the connected account, arrange the media handoff and review the exact request. Keep the first result visible before you automate more submissions.
Building a backend instead of using MCP? The Node SDK 0.1.0 and Python package 0.1.0 are published. Their interfaces are separate from the MCP example tested here; do not assume newer repository methods are in those releases.