> Discover all available Postdom documentation from the machine-readable index: https://postdom.com/llms.txt

Destination · configured adapter

# TikTok

The configured adapter posts publicly by default and preserves unavailable retention fields instead of fabricating values.

Configured output

## Adapter behavior

Postdom builds these settings after `publish_video` validation. The configured tool schema does not accept a settings object.

**`privacy_level`** — **PUBLIC_TO_EVERYONE**  Makes the configured publish visible to everyone.

**`allow_comment`** — **false**  Disables comments in the configured adapter.

**`allow_duet`** — **false**  Disables duet in the configured adapter.

**`allow_stitch`** — **false**  Disables stitch in the configured adapter.

**`content_preview_confirmed`** — **true**  Records the required preview confirmation.

**`express_consent_given`** — **true**  Records the required express consent.

**`video_made_with_ai`** — **false**  Leaves the AI label off. Set it to true per post when the video is AI-made.

These settings are added after tool validation. They are not publish_video inputs.

_CONFIGURED ADAPTER OUTPUT · NOT TOOL INPUT_

```
{
  "platform": "tiktok",
  "settings": {
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "allow_comment": false,
    "allow_duet": false,
    "allow_stitch": false,
    "content_preview_confirmed": true,
    "express_consent_given": true,
    "video_made_with_ai": false
  }
}
```

Enforcement layers

## Media limits

Shared media rules apply before destination guidance. Recorded duration, format, and aspect guidance is not current runtime validation.

`caption`

The configured tool accepts up to 4,000 characters.

`media probe`

HTTP 200 or 206 is required. A present incompatible content type is rejected.

`production media storage`

Source-host and 524 MB checks apply when the configured resolver is active.

| Surface | Field | Limit | Enforcement |
| --- | --- | --- | --- |
| publish_video | caption | At most 4,000 characters The MCP boundary accepts an empty caption. | Schema enforced |
| publish_video | media source | Exactly one of video_url, media_handle or media A media handle must reach stored through get_media before publication. media is an ordered list of image or video handles (a carousel; TikTok publishes several images as a photo post), accepted by the hosted server at https://api.postdom.com/mcp, not by the published @postdom/mcp@0.4.0. | Schema enforced |
| publish_video | video_url | Syntactically valid URL when supplied Runtime media checks apply after schema validation. | Schema enforced |
| publish_video | media_handle | Valid workspace-scoped pd_media_ handle when supplied Cross-workspace, missing, pending, and failed handles are rejected without revealing another workspace's object. | Runtime enforced |
| publish_video | media host | HTTPS host; no credentials or port Without the production media resolver, localhost and private or special literal IPs are rejected. | Runtime enforced |
| publish_video | production media source URL | Configured source host; no query or fragment Enforced when production media storage is active, before internal delivery-host resolution. | Conditional runtime |
| publish_video | media response | HTTP 200 or 206 Postdom performs a byte-range reachability read before review. | Runtime enforced |
| publish_video | Content-Type | video/* or application/octet-stream for a video Applies to video sources; image handles from create_slideshow or upload_media are checked against each destination's image rules instead. A present incompatible type is rejected. For a media_handle the declared type is checked against each destination, so a QuickTime handle is refused by a destination accepting only video/mp4. For a media_url a missing type, or application/octet-stream, is unknown and passes: nothing declared it, so no destination rule can be tested against it. | Runtime enforced |
| publish_video | media size | At most 524 MB Checked whenever the size is known, whether or not production media storage is active. A media_handle always has one, because it was declared and signed for at upload. A media_url whose origin returns no length is published unchecked against this cap. | Runtime enforced |
| publish_video | per-destination delivery | The size and format limits recorded for each targeted destination Checked against the destinations a post targets, not the platforms declared at upload. A recorded limit may come from the platform or from the route Postdom delivers through, so a refusal names the destination that cannot receive the video without claiming whose limit stopped it. The whole post is refused; publish the rest in a separate request. | Runtime enforced |
| global | video duration | At most 10 minutes Recorded metadata; current request and media validation do not enforce duration. | Unvalidated guidance |
| global | media format | MP4 or QuickTime Recorded metadata; a generic video/* response can currently pass reachability. | Unvalidated guidance |
| TikTok | video duration | 3 seconds–10 minutes Recorded guidance, not current runtime validation. | Unvalidated guidance |

Nine modeled fields

## Metric availability

The matrix describes the modeled baseline. It does not prove that this destination currently returns a non-null value.

| Metric | State | Baseline | Value behavior |
| --- | --- | --- | --- |
| views Views Required view count in a normalized snapshot. | available | 2026-08-21T00:00:00.000Z | Numeric when a snapshot exists. Zero remains zero. |
| likes Likes Required like count in a normalized snapshot. | available | 2026-08-21T00:00:00.000Z | Numeric when a snapshot exists. Zero remains zero. |
| comments Comments Required comment count in a normalized snapshot. | available | 2026-08-21T00:00:00.000Z | Numeric when a snapshot exists. Zero remains zero. |
| shares Shares Required share count in a normalized snapshot. | available | 2026-08-21T00:00:00.000Z | Numeric when a snapshot exists. Zero remains zero. |
| saves Saves Nullable saved or favorited count. | unverified | Not verified | Always null with an explicit reason. |
| watch_time_s Watch time Nullable total watch time in seconds. | never | 2026-08-21T00:00:00.000Z | Always null with an explicit reason. |
| avg_watch_pct Average watch Nullable average watched percentage. | never | 2026-08-21T00:00:00.000Z | Always null with an explicit reason. |
| completion_pct Completion Nullable completion percentage. | never | 2026-08-21T00:00:00.000Z | Always null with an explicit reason. |
| follower_delta Follower delta Nullable follower-change field. | estimable | 2026-08-21T00:00:00.000Z | Currently normalized to null; derivation is not promised. |

Verification scope

## Evidence boundary

### Modeled, then observed

Baseline classifications were recorded on 21 August 2026. Real test accounts and publish paths were checked on 22 August 2026; fresh per-platform analytics remained pending.

Never and unverified fields include explicit reasons. Other null values may have a null reason.

 VERIFIED · 26 AUGUST 2026  **Configured adapter · Platform metadata · Modeled metric baseline**

Private test identifiers are intentionally excluded from public documentation.
