Relay
DocsLog inStart free

TikTok requirements

Relay posts to TikTok through TikTok's Content Posting API — videos and photo posts, straight to the profile or into the creator's TikTok inbox. TikTok is stricter than Instagram about asking the creator: this page covers what you must choose on every post, what Relay checks, and what each failure means.

Account requirements

  • Any TikTok account works — personal, creator or business. You log in with TikTok and approve Relay on TikTok's consent screen.
  • Relay asks for five permissions: user.info.basic, user.info.profile and user.info.stats (name, @username, avatar, follower and video counts), video.publish (post directly to the profile) and video.upload (send to the TikTok inbox). TikTok lets you untick any of them; an unticked posting permission turns that post mode off for the account. accounts_list reports them as can_direct_post and can_upload.
  • TikTok caps every creator at roughly 15 posts a day, shared across every app they post from, and at 5 uploads waiting in the inbox per day.

Connecting an account

Start from Accounts → Connect TikTok. TikTok issues an access token that lasts 24 hours and a refresh token that lasts a year. Relay stores both encrypted (AES-256-GCM), renews the access token on its own whenever it needs one, and rotates the refresh token every week.

HealthMeaningCan publish?
connectedAuthorized, with more than 7 days left on the year-long authorization.Yes
expiringThe authorization ends within 7 days — TikTok authorizations last at most a year.Yes, until it ends. Reconnect to renew it.
reconnect_requiredTikTok rejected the token or refresh token (expired, revoked, account changed).No — reconnect the account.
disconnectedRemoved from Relay, or Relay was removed in TikTok’s own settings (TikTok tells Relay immediately).No
Disconnecting an account in Relay also revokes Relay's access on TikTok's side, so it disappears from the creator's TikTok “Manage app permissions” list.

Post types

Relay post_typeOn TikTokMedia
reelVideo postExactly 1 MP4/MOV video
feedPhoto postExactly 1 JPEG image
carouselPhoto post (swipeable)Images only — 2–35 on a TikTok-only post, 2–10 when an Instagram account is also targeted
story—Not available: TikTok has no stories

One post can target Instagram and TikTok accounts together; each platform gets its own version. A post with an Instagram target is held to Instagram's rules as well, so a mixed-media carousel or a story can't include TikTok accounts.

TikTok settings on every post

Every post with a TikTok account carries a tiktok object. TikTok requires the creator to choose these themselves, so Relay never fills in a default — not for privacy, and not for interactions.

FieldValuesNotes
modedirect (default) · inboxdirect posts to the profile. inbox sends it to the creator’s TikTok inbox; they choose the sound and settings and post it from the TikTok app.
privacy_levelPUBLIC_TO_EVERYONE · MUTUAL_FOLLOW_FRIENDS · FOLLOWER_OF_CREATOR · SELF_ONLYRequired for direct. Must be one this account offers right now — ask tiktok_creator_info.
allow_commentboolean, default falseForced off if the creator turned comments off in TikTok.
allow_duet · allow_stitchboolean, default falseVideos only. Forced off if the creator turned them off in TikTok.
brand_organicbooleanPromotes your own brand. TikTok labels the post “Promotional content”.
brand_contentbooleanA paid partnership with another brand. TikTok labels it “Paid partnership”. Cannot be SELF_ONLY.
is_aigcbooleanAdds TikTok’s AI-generated content label.
caption1–2,200 charactersTikTok-only caption; the post caption is used when absent.
title1–90 charactersPhoto posts only.
photo_cover_indexintegerPhoto posts: which image is the cover.
auto_add_musicbooleanPhoto posts: let TikTok add a sound.
cover_timestamp_msintegerVideos: which frame is the cover.
POST /v1/posts
{
  "targets": ["7c2a…"],
  "caption": "Every colourway, one drop. #fall",
  "media": ["https://cdn.example.com/fall.mp4"],
  "tiktok": {
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "allow_comment": true,
    "brand_organic": true
  }
}

Check what an account allows first with GET /v1/accounts/:id/tiktok/creator-info (MCP: tiktok_creator_info): its privacy options, which interactions the creator has turned off, the longest video it may post, and whether it can post at all right now.

By posting to TikTok you agree to TikTok's Music Usage Confirmation, and for branded content its Branded Content Policy. The Relay composer shows this beside the publish button; agents should make sure the person they post for knows.

Media specifications

Video

PropertyTikTokEnforced by Relay
ContainerMP4 (recommended), MOV, WebMMP4 and MOV only
CodecH.264 (recommended), H.265, VP8, VP9No
Frame rate23–60 FPSNo
Resolution360–4096 px on each sideNo
DurationUp to the creator’s limit — 3, 5 or 10 minutesYes — read from the file at upload and checked against the creator before posting
File size≤ 4 GB100 MB (Relay’s cap)

Photos

PropertyTikTokEnforced by Relay
FormatJPEG or WebPJPEG (the dashboard converts anything)
Size≤ 20 MB each8 MB each
ResolutionAt most 1080pWarned in the composer
Count1–35 per postYes

TikTok downloads the media from Relay's media domain when the post goes out, so nothing is uploaded from your side at publish time.

Timing & statuses

Relay asks TikTok what the account allows, starts the post, then polls TikTok every scheduler tick until it settles. TikTok processes the media and runs its own review before a post is public — usually about a minute, occasionally longer.

  • processing — TikTok is downloading or processing the media.
  • published with a permalink — live and public.
  • published without a permalink — posted, but TikTok hasn't assigned a public link yet (still in review, or the post is SELF_ONLY). Relay fills the link in when TikTok reports it.
  • published with error.code: tiktok_inbox — delivered to the TikTok inbox; the creator finishes it in the app.

Failure reference

CodeCauseWhat to do
quota_exceededThe creator hit TikTok’s daily post cap (or 5 waiting inbox uploads).Nothing — Relay retries for up to a day. Not terminal.
quota_timeoutStill capped a day after the post was due.Retry the post later.
tiktok_settings_missingThe post has TikTok accounts but no tiktok settings.Edit the post and choose them.
tiktok_privacy_unavailableThe account no longer offers the chosen visibility.Edit the post and choose another.
tiktok_video_too_longLonger than this account may post.Trim the video and retry.
tiktok_scope_not_authorizedThe account unticked the permission this post mode needs.Reconnect and leave it ticked, or switch post mode.
auth_reconnect_requiredTikTok rejected the authorization.Reconnect the account.
tiktok_unaudited_client_can_only_post_to_private_accountsRelay’s TikTok app is awaiting TikTok’s audit: posts must be SELF_ONLY on private accounts.Post as “Only me”, or send to the inbox.
tiktok_<fail_reason>TikTok failed the post while processing (e.g. video_pull_failed, duration_check_failed, spam_risk_text).Read the message — it says what TikTok objected to.
processing_timeoutTikTok never finished processing.Retry; re-encode the video if it repeats.

Not supported

  • Stories, and videos mixed with photos. TikTok posts are one video or a set of photos.
  • First comments. TikTok's API can't comment; first_comment needs an Instagram target and is posted there only.
  • Per-slide captions. An Instagram carousel feature; a TikTok photo post has one caption (and an optional title).
  • Choosing a sound. TikTok's API can't attach a specific track — let TikTok add one to a photo post, or use inbox mode and pick it in the app.
  • Editing or deleting a published post. Use the TikTok app.

See the REST API reference, the MCP tool reference, and the Instagram requirements for the other half of a cross-posted post.

© 2026 Relaysupport@lantean.techPrivacyTerms