Eranol LogoEranol
BlogCommunityDocumentationPricingSign In

General

OverviewGet Started

MCP Connectors

ClaudeChatGPT
Instagram PublishInstagram Scheduled — CancelInstagram Scheduled — ListTikTokTikTok Scheduled — CancelTikTok Scheduled — ListTikTok StatusX PublishX Scheduled — CancelX Scheduled — ListYouTube PublishYouTube Scheduled — CancelYouTube Scheduled — List
Add IntroAdd OutroAudio to VideoBackground AudioCaptions ApiComposeConcatConvert a video file to MP4Convert Audio to Mp3Convert Audio to wavConvert to JPGConvert to WebMConvert to WebPDenoiseEnhanceExtract audio track from a videoExtract images from a videoGenerate a GIF from a videoHighlightsImage TestMergeNotifyOverlayProgress BarReframeRemove SilenceThumbnailTrimVerifyWatermarkZoom
DeleteImage StatusStatusFFmpeg Results

Need help?

Contact Support

TikTok

POST

TikTok Content Posting API Privacy levels: SELF_ONLY | FOLLOWER_OF_CREATOR | MUTUAL_FOLLOW_FRIENDS | PUBLIC_TO_EVERYONE Set as_draft: true to send the video to the user's TikTok inbox as a draft (requires the video.upload scope, works unaudited/sandbox) instead of posting it directly (requires video.publish + app audit). Draft mode uses TikTok's separate inbox endpoint and ignores title, privacy_level, and interaction settings — the user sets everything in the TikTok app before posting.

Overview

TikTok Content Posting API

Privacy levels: SELF_ONLY | FOLLOWER_OF_CREATOR | MUTUAL_FOLLOW_FRIENDS | PUBLIC_TO_EVERYONE

Set as_draft: true to send the video to the user's TikTok inbox as a draft instead of posting it directly — the user finishes editing (including the caption) and posts it themselves in the TikTok app. This routes to TikTok's separate inbox endpoint and requires only the video.upload scope, which works in unaudited apps and sandbox mode. Direct posting requires the video.publish scope and a completed TikTok app audit.

Endpoint

POST https://eranol.com/api/v1/social/tiktok/publish

Request Body

Direct post

{
  "title": "Check this out! #fyp",
  "video_url": "https://your-r2-or-cdn-url/video.mp4",
  "disable_duet": false,
  "privacy_level": "PUBLIC_TO_EVERYONE",
  "disable_stitch": false,
  "disable_comment": false,
  "scheduled_publish_time": null
}

Send as draft

{
  "video_url": "https://your-r2-or-cdn-url/video.mp4",
  "as_draft": true
}

When as_draft is true, TikTok's inbox endpoint is used instead of the direct-publish endpoint. title, privacy_level, disable_comment, disable_duet, disable_stitch, and the branded-content fields are all ignored — TikTok requires the user to set the caption and all posting options in-app before posting the draft.

Parameters

FieldTypeRequiredNotes
titlestringRequired unless as_draftCaption, max 2200 chars. Ignored when as_draft
video_urlstringYesMust be an eranol.com URL
as_draftbooleanNoDefault false. true sends to the TikTok inbox as a draft via TikTok's separate inbox endpoint (needs video.upload scope, works unaudited/sandbox) instead of posting directly (needs video.publish scope + app audit)
privacy_levelstringRequired unless as_draftOne of PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY. Ignored when as_draft
disable_commentbooleanNoIgnored when as_draft
disable_duetbooleanNoIgnored when as_draft
disable_stitchbooleanNoIgnored when as_draft
scheduled_publish_timenumber | nullNoTikTok's own native scheduling (unix seconds). Ignored when as_draft

Response Example

{
  "publish_id": "sdfger345-34-dfhgrt-3453sdgfg-34234"
}

Error Codes

CodeMeaning
401Missing or invalid API key
402Insufficient credits
422Validation error — check your request body
429Rate limit exceeded — slow down requests
500Internal server error — try again or contact support