TikTok content publishing API
TikTok Content Publishing API for Content Teams
TikTok publishing in Wahdx Connection runs through official account flows and one content endpoint. You send a single video or a photo carousel of up to 35 images, publish immediately or schedule up to 30 days ahead, and read post status back without opening the TikTok app. This page covers what the API can and cannot do, the media specs that pass validation, the account connection options, and the metrics you can pull afterward.
What the TikTok API can do
The API covers the publishing work a content team does every day. It connects a TikTok account through an official flow, prepares a video or photo carousel, adds a caption, and sends it now or on a schedule. Status tracking then reports queued, processing, published, or failed for each post. Because TikTok sits on the same endpoint as the other four platforms, the integration code you write here carries over to Instagram, Threads, Facebook, and YouTube.
- Video posts and photo carousels of up to 35 images.
- Publish immediately or schedule up to 30 days ahead.
- Queued, processing, published, and failed status per post.
- Account analytics for followers, likes, video count, and top videos.
- QR login for products that link TikTok accounts inside their own interface.
What the TikTok API cannot do
TikTok does not accept text-only posts, so a request without media is rejected. The API stays inside publishing: it does not read or post comments, send direct messages, or act on follows. Content that breaks platform rules is rejected by TikTok and appears as a failed post. There is no customer-registrable webhook for publish completion either, so integrations poll the status endpoints after submission. Knowing these limits before you design a feature keeps you from building something the API cannot support.
- No text-only posts. Media is required.
- No comment, direct message, or follow actions.
- No webhook. Poll the status endpoints instead.
- Content that violates platform rules returns a failed status.
Official account connection
Two paths are available. A standard TikTok login works for most integrations, and the QR login API covers products that link accounts inside their own experience. QR login requires a Professional or Maximum plan. Your backend requests a QR session, your interface shows the code, and your system polls every 2 to 3 seconds until the user confirms, the session expires, the code is used, or 5 minutes pass. Polling should stop on any non-OK response, because a non-OK reply means the session can no longer complete.
- Standard TikTok login flow for most integrations.
- QR login on Professional and Maximum plans.
- Session states: new, scanned, confirmed, expired, utilised.
- Stop polling on a non-OK response or after 5 minutes.
TikTok media requirements
Video publishing is most reliable with vertical MP4 or MOV using H.264 at 1080x1920, between 3 seconds and 10 minutes. Photo carousels accept up to 35 images and must stay photo-only; mixing stills and video in one payload is rejected. TikTok also accepts a cover frame timestamp through tiktokSettings when you want to control the thumbnail, and one post cannot mix photos with a video.
| Requirement | Value |
|---|---|
| Format | MP4 or MOV |
| Codec | H.264 recommended |
| Aspect ratio | 9:16 vertical recommended |
| Resolution | 1080x1920 recommended |
| Duration | 3 seconds to 10 minutes |
| Photo carousel | Up to 35 images, photo-only |
| Video cover frame | video_cover_timestamp_ms in tiktokSettings |
Publishing limits and scheduling
Posts go out immediately or queue up to 30 days ahead. The queue runs server-side, so it keeps processing without a browser open, and scheduled content validates against the selected account before it enters the queue. Only successful publishes count toward the monthly upload quota, which means a rejected video costs a retry rather than an upload credit. Failed posts stay visible in status and can be resubmitted once the media is fixed.
Publish sequence: endpoint to endpoint
A TikTok post is three calls. List connected accounts to find the TikTok accountId. Send the post to POST /api/content/post with either one video URL or multiple image URLs, and add tiktokSettings when the post needs them. Then poll GET /api/content/status/:accountId/:publishId with the media type included until the post reaches published or failed. The same three-call shape works for every platform, which keeps the integration short.
// Video and photo carousel use the SAME endpoint:
// POST /api/content/post
const videoPayload = {
"platform": "tiktok",
"accountId": "CONNECTED_ACCOUNT_ID",
"content": "Video caption",
"mediaItems": [
{
"url": "https://your-domain.com/video.mp4"
}
]
};
const photoCarouselPayload = {
"platform": "tiktok",
"accountId": "CONNECTED_ACCOUNT_ID",
"photoTitle": "Carousel title",
"content": "Carousel caption",
"mediaItems": [
{
"url": "https://your-domain.com/photo-1.jpg"
},
{
"url": "https://your-domain.com/photo-2.jpg"
}
]
};# Video and photo carousel use the SAME endpoint:
# POST /api/content/post
video_payload = {
'platform': 'tiktok',
'accountId': 'CONNECTED_ACCOUNT_ID',
'content': 'Video caption',
'mediaItems': [
{
'url': 'https://your-domain.com/video.mp4'
}
]
}
photo_carousel_payload = {
'platform': 'tiktok',
'accountId': 'CONNECTED_ACCOUNT_ID',
'photoTitle': 'Carousel title',
'content': 'Carousel caption',
'mediaItems': [
{
'url': 'https://your-domain.com/photo-1.jpg'
},
{
'url': 'https://your-domain.com/photo-2.jpg'
}
]
}# Video request: exactly one video URL in mediaItems
curl -X POST "https://api.wahdx.com/api/content/post" \
-H "X-API-Key: $WAHDX_API_KEY" \
-H "Content-Type: application/json" \
--data-raw '{
"platform": "tiktok",
"accountId": "CONNECTED_ACCOUNT_ID",
"content": "Video caption",
"mediaItems": [
{
"url": "https://your-domain.com/video.mp4"
}
]
}'
# Photo carousel request: multiple image URLs in mediaItems
curl -X POST "https://api.wahdx.com/api/content/post" \
-H "X-API-Key: $WAHDX_API_KEY" \
-H "Content-Type: application/json" \
--data-raw '{
"platform": "tiktok",
"accountId": "CONNECTED_ACCOUNT_ID",
"photoTitle": "Carousel title",
"content": "Carousel caption",
"mediaItems": [
{
"url": "https://your-domain.com/photo-1.jpg"
},
{
"url": "https://your-domain.com/photo-2.jpg"
}
]
}'Reading metrics back
Analytics for a connected TikTok account cover followers, likes, video count, and top videos. The values come from TikTok for that account, so a metric the platform does not expose returns null rather than an estimate. Paired with the publishing analytics endpoint, you can see both how many posts you sent and how the audience responded, without blending TikTok numbers into figures from other platforms.
FAQ
Common questions about the TikTok API
Can I publish TikTok content from an API?
Yes. The API is built for server-side integrations that need controlled TikTok video and photo carousel publishing with status monitoring.
Should the API key be used in browser code?
No. API keys should stay in a trusted backend, serverless function, or private integration layer, never in browser JavaScript.
Can I schedule TikTok posts ahead of time?
Yes, up to 30 days ahead. Scheduled posts are queued and processed server-side.
What happens when a TikTok post fails?
The status endpoint reports it as failed. Failed publishes do not count toward the monthly upload quota, so you can fix the media and resubmit.
Related reading
Go deeper on this workflow.
Related API docs
Instagram Graph API Content Publishing for Business Accounts
Publish photos, reels, and carousels to Instagram with the Content Publishing API. Business account requirements, media limits, and metrics.
YouTube API: Upload Videos and Read Channel Analytics
Upload videos to YouTube with per-video settings, then read subscribers, views, and video metrics through one API workflow.
Threads API: Text Posts, Thread Sequences & Metrics
Publish text posts and thread sequences to Threads via API. Character limits, scopes, reply settings, rate limits, and metrics read-back.
Facebook Graph API Page Publishing and Insights
Publish to Facebook Pages and read back unique impressions, post engagements, page views, and follows through one API workflow for content teams.