Connect TikTok first
- 01
Open Accounts in 1Post and choose Connect.
- 02
Pick TikTok.
- 03
Sign in with TikTok and approve access for the account you want to post to.
- 04
Choose the account in 1Post. It is ready to pick in the composer.
Then GET /v1/accounts returns the id of the TikTok account to use in the request.
Send a post to TikTok
TikTok refuses a post without media, so upload the file first and put its id in media_ids (POST /v1/media/uploads, or POST /v1/media to fetch a public address). Then schedule the post.
curl https://api.get1post.com/v1/posts \
-H "Authorization: Bearer $ONEPOST_API_KEY" \
-H "Idempotency-Key: tiktok-first-post" \
-d '{"accounts":["ACCOUNT_ID"],"parts":[{"text":"Behind the counter at opening time.","media_ids":["MEDIA_ID"]}],"schedule_at":"2026-11-02T15:00:00Z"}'The reply is 202 with the post (status scheduled) and one destination for TikTok, which moves from queued to published or failed.
What you can send to TikTok
- One video
- A photo carousel
- Direct post, or sent to your TikTok inbox to finish there
- Privacy and interaction settings
What TikTok publishes
- The upper limit for Direct Post is typically around 15 posts per day per creator account, and is shared across every app that uses Direct Post.
TikTok rules the request is checked against
| Rule | What 1Post checks |
|---|---|
| Text limit | 2,200 characters, counted by code points |
| Media accepted | Images, Video |
| Videos per post | 1 |
| Images and video together | Not in one post |
| Image formats | JPEG, WEBP; PNG are converted to JPEG |
| Photo size | Scaled down to 1,080 pixels on the short side |
| Threads | No |
| First comment | No |
| Posts per day, per connected account (1Post) | 10 |
The same table with sources is on the TikTok specs page.
TikTok options in the request
- Media is required: TikTok refuses a post without it. Upload the file first (POST /v1/media/uploads, or POST /v1/media to fetch a public address) and list its id in the media_ids of a part.
Check the post before it is queued
Add "dry_run": true to test a post: nothing is kept, a valid one answers 200 and a broken one answers 422 naming the rule.
{
"error": {
"code": "invalid_for_platform",
"message": "tiktok refuses this post: TikTok counts 2,232 of 2,200 characters in part 1. (text_too_long).",
"fix": "Fix the rule named in the message and send the post again.",
"retryable": false,
"request_id": "REQUEST_ID"
}
}An assistant connected to the MCP server sends the same fields to create_post; set one up.