Platforms / TikTok

LivePlatform integration

Ship Your Integration
In Minutes, Not Weeks.

TikTok's Content Posting API + creator OAuth flow. letmepost ships the upload track — push_by_file inbox upload with chunked status polling. Connect and publish work today: the video lands in the creator's TikTok inbox and they tap publish in the app. Direct Post is approved and is next up.

Live · Content Posting API · read the docs →

POST /v1/posts
{
  "targets": [{ "platform": "tiktok", "accountId": "acc_tt_xyz" }],
  "text": "Posted via letmepost.",
  "media": [{ "type": "video", "mediaId": "med_video_xyz" }],
  "options": { "tiktok": { "privacyLevel": "PUBLIC_TO_EVERYONE" } }
}

Why letmepost vs Content Posting API direct?

TikTok Direct

  • You complete TikTok app review (4–10 weeks per scope)
  • You implement push_by_file with chunked status polling
  • You manage the SELF_ONLY → PUBLIC_TO_EVERYONE upgrade path
  • You handle two-audit gating (Upload vs Direct Post)
  • You write OAuth 2.0 PKCE + refresh-token lifecycle
  • You parse TikTok's status-poll responses + timeouts

letmepost API

  • Our reviewed TikTok app covers you; no audit of your own
  • push_by_file abstracted; one POST + a mediaId
  • Privacy accepted per-call and always echoed back in a warning when we rewrite it
  • Inbox upload works today; Direct Post is approved and next to ship
  • OAuth 2.0 PKCE + refresh handled — no token rot
  • Upload + finalize timing surfaced via post.published webhook

⚠ Posts land as a draft, not a public video

TikTok splits posting into two tracks — Upload (push_by_file → the creator's inbox) and Direct Post (video.publish → straight to public). letmepost ships the Upload track today, so a post arrives in the creator's TikTok inbox and they tap publish. Direct Post has cleared review and is the next thing we wire up.

Playground

Connect, configure, post.

▸ Connect▸ Configure▸ Execute

TikTok OAuth 2.0 PKCE + account pick. Connect and upload today; the creator confirms the publish in the TikTok app.

CONNECT TIKTOK →
✓Live.UPLOAD TRACK · LIVE

Content types

Every TikTok surface, one shape.

Caption· 150 chars
Video· MP4/MOV ≤ 287MB
Privacy levels· 4 modes
Scheduled

How it works

Three steps, under two minutes.

Get your API key

Sign up at dashboard.letmepost.dev.

Connect a TikTok account

OAuth 2.0 PKCE. Pick the account. Required scopes (user.info.basic, video.upload, video.publish) resolved at connect time.

Upload a video

One POST /v1/posts with the video mediaId. We handle push_by_file + chunked status polling, fire post.published when TikTok finalizes.

Features

What we built so you don't.

Honest about the draft step

Ask for a public post and we say so: a tiktok.audit.self_only warning comes back on the response and on the post.published webhook, never a silent downgrade. Ask for self_only and there is nothing to warn about.

push_by_file abstracted

Init the upload, chunk the bytes, poll status (5s → 30s → 120s backoff up to 30min). We handle the whole flow as one SDK call.

SELF_ONLY → public path

In sandbox, posts land with privacyLevel: "SELF_ONLY"; once the Direct Post audit clears, the same call publishes PUBLIC_TO_EVERYONE. No code change.

MP4 / MOV, ≤ 287MB

Standard TikTok push_by_file limits. Preflight rejects oversize or unsupported codecs before the upload starts.

Code example

upload a video · typescript

publish-tiktok.ts
import { Letmepost } from '@letmepost/sdk';
const lmp = new Letmepost({ apiKey: process.env.LMP_API_KEY });

const result = await lmp.posts.create({
  targets: [{ platform: 'tiktok', accountId: 'acc_tt_xyz' }],
  text: 'A demo of letmepost. Posted via the API.',
  media: [{ type: 'video', mediaId: 'med_video_xyz' }],
  options: {
    tiktok: {
      privacyLevel: 'SELF_ONLY', // PUBLIC_TO_EVERYONE once Direct Post audit clears
    },
  },
});

Common questions

about tiktok uploads

Does my post go straight to TikTok?

It uploads to the creator's TikTok inbox as a draft and they tap publish in the app. That is the Upload track, which is live today. Direct Post, which publishes without that tap, has cleared review and is the next thing we ship.

What audits does TikTok require?

Two separate audits. Upload (push_by_file → inbox, SELF_ONLY only) is the first; Direct Post (video.publish → public) is the second. letmepost has the publisher shipped for both.

How big can videos be?

≤ 287MB and ≤ 10 minutes per push_by_file upload. MP4 or MOV. Larger files go through TikTok's pull_by_url path (planned).

What privacy levels are supported?

PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY. Sandbox forces SELF_ONLY until Direct Post audit clears.

Sandbox vs production behavior?

In sandbox: posts land in the user's TikTok inbox with privacy=SELF_ONLY; the user confirms publish in the TikTok app. In production (Direct Post audited): the same call publishes directly to the user's feed.

One API · 8 platforms

TikTok is just one of them.

Learn more

Good to know

Notes from the integration.

Review

Two-track app review — Upload (push_by_file → inbox) and Direct Post (video.publish → public). Both cleared; the Upload track is what ships today.

Limits

150-char caption. Video ≤ 287MB or 10 min via push_by_file. MP4 or MOV.

Privacy

PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY. Sandbox forces SELF_ONLY until Direct Post clears.

Self-host

BYO TikTok developer app and use it today. Same publisher code, your audit record.

Webhook timing

post.published fires when TikTok finalizes processing. Status-poll backoff is 5s → 30s → 120s up to a 30-min deadline.

READY FOR TIKTOK?

Connect a TikTok account and send your first upload today. The creator confirms the publish in the app.