There’s a TikTok Post API—officially called the Content Posting API—that lets you send videos straight to TikTok without touching the mobile app. It’s become essential for anyone building social schedulers, marketing automation tools, or content management systems.
Understanding The TikTok Post API

Before this API existed, teams were stuck exporting videos and manually uploading them one by one. Agencies juggling dozens of clips and brands planning month-long campaigns hit a wall. Now, a handful of endpoints handles the entire pipeline—upload, caption, schedule, and status checks—from your own interface.
Core Capabilities And Use Cases
TikTok rolled out the Content Posting API to match the creator economy’s appetite for scale. Instead of clicking through the app, your software can:
- Social Media Schedulers: Let users pick a date and time for their TikTok videos to go live.
- Content Management Systems (CMS): Build an in-house workflow where videos move from editing straight into TikTok.
- Digital Asset Managers (DAM): Approve video files in your DAM and publish them automatically to the brand’s account.
For a deeper dive into engagement figures and platform analytics, check out tekrevol.com.
The real value of the TikTok Post API isn’t just posting; it's about keeping your content calendar consistent and scaling your strategy with confidence.
TikTok Post API Capabilities At A Glance
To avoid guesswork, here’s a quick snapshot of what you can do—and what stays off-limits.
| Feature | Supported | Key Considerations |
|---|---|---|
| Video Upload | Yes | Max file size 500MB, MP4/H.264 only |
| Scheduled Posting | Yes | Future timestamps only; convert to UTC |
| Post Metadata (Caption) | Yes | Caption limit 2,200 characters |
| Image / Carousel Posts | No | Video-only API |
| Post Deletion | No | Published videos can’t be removed via API |
| Rate Limiting | Yes | 60 requests/minute, implement backoff logic |
This overview should help you pinpoint where to lean on the API—and where you’ll need workarounds in your workflow.
Important Limitations To Consider
Access to the Post API is gated. TikTok reviews every integration to ensure it follows platform policies and genuinely benefits creators.
Remember: this tool is strictly for video content. No static images, carousels, or text-only posts are allowed. For a broader view of how other platforms connect to TikTok, visit Codewords' dedicated TikTok integration page.
How to Handle API Authentication
Before your app can do anything with the TikTok Post API, you need to get a user’s permission. This is where the industry-standard protocol, OAuth 2.0, comes into play. It's a secure way for users to grant your app specific permissions without ever handing over their password.
Think of it like giving a valet the key to park your car, but not the key to your entire house. The user stays in control.
The whole process kicks off at the TikTok for Developers portal. You'll register your application, giving it a name, a description, and most importantly, a Redirect URI. This URI is a critical piece of the security puzzle—it’s the specific endpoint on your server where TikTok will send the user back after they’ve approved (or denied) your app’s request.
Setting Up The OAuth 2.0 Flow
With your app registered, you can now start the actual authentication dance. It begins by constructing a special authorization URL that you’ll send your users to. When they click it, they’ll land on a TikTok consent screen.
Getting this URL right is key. It needs a few parameters:
client_key: Your app's unique ID from the developer portal.response_type: This must always be set tocode. You're asking for a temporary authorization code.scope: This defines what you want to do. For posting videos, the scope you absolutely need isvideo.upload.redirect_uri: The exact same URL you configured in your developer dashboard. It has to be a perfect match.
When a user follows this link, they’ll see a screen on TikTok that clearly states what your app wants to do (e.g., "Upload videos to your account") and can choose to authorize it.
Exchanging The Code For A Token
If the user gives the green light, TikTok sends them back to your redirect_uri with a temporary authorization code tacked onto the URL. This code is fleeting, usually lasting just a few minutes, so your server needs to act fast.
Your backend then takes this code and makes a secure, server-to-server POST request to TikTok's token endpoint. Along with the code, you'll send your client_key and client_secret. If everything checks out, TikTok’s server sends back the prize: an access token and a refresh token.
The access token is your golden ticket. It's the key you'll include in the header of every subsequent request you make to the TikTok Post API on that user's behalf.
This flow is pretty standard across the major social platforms. If you've worked with others, it'll feel familiar. For a good comparison, check out our guide on how the Instagram Graph API handles authentication, which also leans heavily on OAuth 2.0.
Managing And Refreshing Tokens
Access tokens aren't forever—they expire for security reasons, and your app has to be ready for it. When an access token dies, you use the long-lived refresh token to get a brand new one without making the user log in all over again.
Properly managing these tokens is non-negotiable for any real-world application. You absolutely must store both the access and refresh tokens securely, ideally in an encrypted database.
Alright, you've got a valid access token. Now for the fun part: actually uploading a video using the TikTok Post API.
This isn't just a single API call. Instead, it's a three-step dance designed to reliably handle big video files. You first have to tell TikTok you're about to upload something, then you send the video file itself, and finally, you tie it all together with the caption, privacy settings, and other metadata.
Why the complexity? It's all about resilience. Breaking the upload into pieces prevents timeouts and makes the whole process tougher against spotty network connections. If one chunk fails, you just retry that piece—no need to start the entire upload from scratch.
Initializing The Upload
First things first, you need to make a POST request to the video.upload endpoint. This call doesn't actually contain any video data. Think of it as telling TikTok's servers, "Hey, get ready, a file is coming."
You're essentially reserving a spot for your video. In response, TikTok gives you back a unique upload_url. This is a common pattern for APIs that deal with large media—it neatly separates the authentication and metadata from the heavy lifting of transferring the actual binary file.
Sending The Video File In Chunks
With that upload_url in hand, you can start sending the video file. But you're not going to send it all at once. The API requires a chunked upload, which means breaking the video into smaller pieces and sending them one by one using PUT requests.
This is absolutely critical for handling videos that can easily be hundreds of megabytes. It ensures that even a user on a shaky connection can get their video uploaded without the process failing. Your code will need to read the video file, figure out its total size, and then loop through it, sending one chunk at a time with the right Content-Range and Content-Length headers.
Mastering the chunked upload is easily the most technical part of this whole process. If you can get this part right, you've cleared the biggest hurdle. It’s what makes your app robust enough to handle real-world video sizes without crashing or timing out.
Creating The Final Post
Once the last chunk is successfully sent, your video is sitting on TikTok's servers, but it's not live yet. The final piece of the puzzle is to make one last POST request to the video.create endpoint. This is where you bring it all home.
The payload for this request is a JSON object containing the upload_id you got earlier, plus all the details for the post itself. This is your chance to programmatically control every aspect of the final TikTok.
You'll define a few key things in this payload:
post_info: This is where you set thetitle(your caption),privacy_level, and rules for interaction.source_info: Just specifies how the video was uploaded, likeFILE_UPLOAD.- Interaction Controls: You get boolean toggles to
disable_comment,disable_duet, anddisable_stitch. - Audience Settings: You can also flag if the video is branded content or restrict it to friends only.
This clean separation between the upload and the creation steps gives you a ton of flexibility for building out content workflows. The infographic below gives a high-level look at how data flows from your app to a live post on TikTok.

As you can see, it’s a structured approach that keeps everything secure and reliable.
By 2025, TikTok is expected to have around 1.6 billion monthly active users, who contribute to a mind-boggling 34 million video posts every single day. These numbers show just how massive the platform is, and why sophisticated tools are necessary for creators and brands. The API’s ability to post directly allows approved third-party apps to get videos into user feeds without any manual steps. You can dig deeper into these kinds of platform stats over on The Frank Agency's blog.
Handling Errors and Unlocking Advanced Features
Once you get the basic upload working, the real fun begins. Building a production-ready app isn't just about the "happy path" where everything works perfectly. It’s about anticipating the inevitable hiccups—network glitches, expired tokens, weird API responses—and building a resilient system that can handle them gracefully.
Thinking about what can go wrong is just as critical as the upload logic itself. For instance, an expired access token is something you'll run into constantly. A naive implementation might just crash or fail the post. A smart one will catch that specific error, use the refresh token to silently grab a new access token, and then automatically retry the original API call without missing a beat.
Scheduling Posts and Checking Their Status
One of the most valuable features of the TikTok Post API is the ability to schedule posts. For anyone managing content, whether for a personal brand or a portfolio of clients, this is a game-changer. It’s what allows you to batch-create your content for the week and then let your system handle the posting, ensuring a consistent flow without you having to be online at all hours.
To schedule a post, you just need to add a future timestamp to the post_info object when you first create the video. I highly recommend using a universal format like ISO 8601 and setting the time in UTC. Trust me, it will save you a world of pain from timezone bugs down the road.
Of course, scheduling a post and walking away isn't enough. You need to know it actually went live. The API has endpoints that let you query the status of your video, which is crucial for confirming that a scheduled video was processed and published exactly when you intended.
Navigating Rate Limits and Backoff Strategies
Like any massive platform, TikTok guards its API with rate limits to keep things stable for everyone. If you hammer their servers too hard, you'll get shut down. While the official numbers can vary, a good rule of thumb is to stay under 60 requests per minute.
The smart way to handle this is to pay attention to the API's response headers. Look for headers like X-RateLimit-Limit and X-RateLimit-Remaining—they tell you exactly where you stand. When you get close to the limit or receive a dreaded 429 Too Many Requests error, you need to back off.
My go-to strategy here is exponential backoff. It sounds complicated, but it's simple: if a request fails, wait one second before trying again. If it fails a second time, double the wait to two seconds, then four, and so on. This simple trick prevents you from flooding the API and gives it time to breathe.
The TikTok Content Posting API is a cornerstone of the creator economy. It's no surprise when you see TikTok's revenue blasted past $23 billion in 2024, marking a 42.8% year-over-year surge. Much of that growth is driven by ads running on content published through the very tools developers like us build with this API.
Troubleshooting Common API Errors
You will run into errors. It’s a fact of life when working with any API. The key is knowing how to read the signs.
You'll see everything from simple validation errors (like a caption that's too long) to upload failures from a corrupted video file or permission errors because you forgot to request the right OAuth scopes. The first step in debugging any issue is to log the full, raw error response from TikTok. It contains the clues you need to solve the puzzle.
To get a better handle on why APIs change and how that can sometimes introduce new types of errors, our deep-dive on API versioning best practices is a great read.
To help you out, here’s a quick reference table for some of the most common errors I've run into and what to do about them.
Common TikTok API Errors and How to Fix Them
| Error Code | Meaning | Recommended Action |
|---|---|---|
invalid_param | A required parameter is missing or incorrect. | Double-check your request body against the API documentation. Pay close attention to data types and required fields. |
access_denied | Your app lacks the necessary permissions (scopes). | Make sure you requested all required scopes during the OAuth flow. The user may need to re-authenticate. |
token_expired | The access token has expired. | Use the refresh token to obtain a new access token, then retry the original request. |
upload_failed | The video file could not be processed. | Verify the video file format, size, and encoding meet TikTok's specifications. The file may also be corrupted. |
rate_limit_exceeded | You've made too many requests in a given time. | Implement an exponential backoff strategy. Check X-RateLimit-Remaining headers to proactively avoid this. |
Having a plan for these errors from the start will make your application infinitely more reliable and save you countless hours of frantic debugging later.
Ditch the Boilerplate: How Unified APIs Can Streamline Your Workflow

Let's be real. Working directly with the native TikTok Post API gives you an incredible amount of control, but it also chains you to a very specific, high-maintenance integration. If your entire app revolves around TikTok, that might be fine.
But what happens when your product roadmap expands? Suddenly, you need to post to Instagram, YouTube, and LinkedIn too. Now you’re not managing one integration; you're juggling four entirely separate, complex codebases.
Each platform comes with its own quirks—its own authentication flow, unique error codes, specific media upload requirements, and rate limits. This kind of fragmentation is a developer's nightmare, ballooning your dev time and creating a long-term maintenance burden. Every time a platform pushes an API update, your team has to scramble to patch the connection.
The Power of a Single Integration Point
This is exactly where unified social media APIs come in and change the game. Instead of building a direct bridge to every single platform, you connect to one central API that does all the heavy lifting and platform-specific translation for you.
You write your code once to post a video through a unified endpoint. The service then takes your request and reformats it for TikTok, Instagram, or any other platform you're targeting. This abstraction layer is a lifesaver for scaling your app without scaling your workload.
For instance, your request to post a video will look almost identical whether it's going to TikTok or YouTube. You just flip a platform parameter, and the API handles the rest.
The real win with a unified API is efficiency. It turns a messy, multi-headed integration beast into a single, clean connection. This slashes redundant code and saves you from future maintenance headaches.
Practical Advantages for Developers
When you adopt a unified approach, you free up your team to focus on what actually matters—building core features for your users—instead of getting bogged down in the swamp of API maintenance. The benefits are immediate and they compound over time.
- Build Faster: You can integrate with multiple social networks in the time it would normally take to build for just one. Seriously.
- Slash Complexity: Your codebase gets cleaner and much easier to manage without all the messy
if (platform === 'tiktok')conditional logic. - Future-Proof Your App: When TikTok changes its API (and it will), the unified API provider updates their integration. More often than not, you won't have to change a single line of your code.
This approach is fast becoming the standard for any team that needs to ship cross-platform social features without the usual pain. To take it even further, you can explore various TikTok automation strategies that build on top of this streamlined foundation.
And if you're shopping around for the right tool, our guide on the top 10 social media APIs for developers is a great place to start your research.
Common Questions and Sticking Points
When you're digging into a new API, you're bound to hit a few walls. Here are some of the most common questions and roadblocks developers run into with the TikTok Post API, along with our hard-won advice.
Can I Post Images or Carousels?
Short answer: Nope.
The official TikTok Content Posting API is built for one thing and one thing only: video. It won't accept static images, multi-image carousels, or just plain text. The entire API flow is designed from the ground up to handle video files, and that’s it.
If your app needs to post a static graphic or a series of images, you'll have to get creative. Your best bet is to convert them into a video format, like a simple slideshow, before you even think about hitting the API.
How Should I Handle Different Video Sizes and Formats?
TikTok’s API is picky about video files—it has strict rules on formats (like MP4) and file sizes. The single most important thing you can do is pre-process videos on your own server to make sure they meet the specs before starting an upload. This simple check will save you countless headaches from failed attempts and wasted bandwidth.
A quick pro-tip: Your upload logic needs to be rock-solid. It must read the video, slice it into smaller pieces for the chunked upload, and send each part in order. Make sure you wrap each chunk transfer in its own error handling. That way, a temporary network blip won't kill the entire upload.
Is It Possible to Use the API for a Personal Project?
Honestly, it's a long shot.
Access to the TikTok Post API isn't open to just anyone. It’s a gated API that requires a formal application, and TikTok is pretty selective. They typically grant access to established companies and software providers building tools for brands, marketing agencies, and professional creators.
If you’re a solo developer working on a side project, getting approved can be tough. You’ll need to submit a super detailed use case explaining exactly what your app does, and even then, the final decision is entirely up to TikTok.
How Do I Check If My Video Was Published Successfully?
This is a big one. After you've navigated the whole multi-step upload and creation dance, how do you know if it actually worked?
Thankfully, the API gives you endpoints to check the status of your post. The initial creation call gives you back a post_id. You can use that ID to poll the API and see if the video has been processed, cleared moderation, and is finally live. This status check is non-negotiable if you're building any kind of reliable scheduling tool—it’s the only way to get that final confirmation that everything went smoothly.
Tired of jumping through hoops with native integrations? With Late, you can connect to TikTok and nine other social platforms through one clean, unified API. We built a developer-first platform so your team can ship faster and stop worrying about maintenance. Start building for free with Late today.