# OmniSocials TikTok API

> Publish videos and photo carousels with every TikTok posting control. Answer comments and read views, likes and shares. One API key, on OmniSocials’ approved TikTok app.

This is the machine-readable version of [omnisocials.com/tiktok-api](https://omnisocials.com/tiktok-api), maintained for AI agents. Facts checked against the OmniSocials app and API on October 17, 2026. Platform reference: [docs.omnisocials.com/platforms/tiktok](https://docs.omnisocials.com/platforms/tiktok). API reference: [docs.omnisocials.com/api](https://docs.omnisocials.com/api).

## Basics

- Base URL: `https://api.omnisocials.com/v1`
- Auth: `Authorization: Bearer omsk_live_...`. One key belongs to one workspace. Keys are created in the app under Settings, API.
- Channel id in `accounts`: `tiktok`. The account connects inside the OmniSocials app, not through the API.
- Rate limit: 100 requests per minute per key. A 429 carries `Retry-After`.
- Responses use a `{ "data": ... }` envelope. Create returns `201`.
- Webhooks: `post.scheduled`, `post.published`, `post.failed`, `post.approved`, `post.rejected`, signed with HMAC-SHA256 in `X-OmniSocials-Signature`.

## Skip the TikTok audit

TikTok’s own API needs a developer app, approved scopes and an audit before it can post to public accounts, then a creator check before every post and status polling after. OmniSocials already did that work.

- On your own: TikTok app, App review, Audit, Domains, Tokens, Creator info, Polling, Video ids, then the first post.
- Permissions your own app must get approved: `user.info.basic`, `user.info.profile`, `user.info.stats`, `video.list`, `video.upload`, `video.publish`.
- On OmniSocials: sign in, create an API key, POST. All 6 scopes already approved.

## Schedule a post

```bash
curl -X POST https://api.omnisocials.com/v1/posts/create \
  -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "reel",
  "content": "Post from your own code: SDKs in 8 languages. #api",
  "accounts": ["tiktok"],
  "media_urls": ["https://cdn.example.com/sdks.mp4"],
  "schedule_at": "2026-10-22T18:00:00Z",
  "tiktok": {
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "video_cover_timestamp_ms": 2000,
    "first_comment": "Which SDK do you use?"
  }
}'
```

The answer (`201`, shortened):

```json
{
  "data": {
    "id": "1024",
    "status": "scheduled",
    "app_url": "https://app.omnisocials.com/create-post/1024"
  }
}
```

## Videos and photo posts, one request

Videos, single photos and carousels of up to 35 photos share one request shape. Set the type, add media URLs, the TikTok settings and a time. OmniSocials checks the media against TikTok’s rules before it uploads.

- **Videos.** One video per post, up to 1 GB. Pick the cover frame, and add a first comment once comments are enabled. (`type: "reel"`, `video_cover_timestamp_ms`, `first_comment`)
- **Photo posts.** Up to 35 photos, 10 of them as media URLs, with a title of up to 90 characters. TikTok adds music only when you ask. (`tiktok.title`, `auto_add_music`)
- **Straight from a URL.** Send any public media URL. OmniSocials moves it to a domain TikTok accepts, turns PNGs into JPEGs and re-encodes video TikTok can’t take. (`media_urls`)

### Video

```json
{
  "type": "reel",
  "content": "Post from your own code: SDKs in 8 languages. #api",
  "accounts": ["tiktok"],
  "media_urls": ["https://cdn.example.com/sdks.mp4"],
  "schedule_at": "2026-10-22T18:00:00Z",
  "tiktok": {
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "video_cover_timestamp_ms": 2000,
    "first_comment": "Which SDK do you use?"
  }
}
```

### Photo

```json
{
  "content": "Build on the inbox from your own code. #api",
  "accounts": ["tiktok"],
  "media_urls": ["https://cdn.example.com/inbox-api.png"],
  "schedule_at": "2026-10-23T12:00:00Z",
  "tiktok": {
    "title": "New: Manage the Social Inbox through the API",
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "first_comment": "Which endpoint should we add next?"
  }
}
```

### Carousel

```json
{
  "content": "Save a post as a draft, find it under Drafts.",
  "accounts": ["tiktok"],
  "media_urls": [
    "https://cdn.example.com/sidebar-1.jpg",
    "https://cdn.example.com/sidebar-2.jpg"
  ],
  "schedule_at": "2026-10-24T10:00:00Z",
  "tiktok": {
    "title": "Sidebar update",
    "privacy_level": "FOLLOWER_OF_CREATOR",
    "auto_add_music": true
  }
}
```

## Every TikTok posting control

Who can view, comments, duets, stitches, promotional content and the AI label each have a field. The composer shows the same settings with TikTok’s posting declaration, and you can change them until the post goes out.

`PATCH /v1/posts/1024`:

```json
{
  "tiktok": {
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "disable_comment": false,
    "disable_duet": false,
    "disable_stitch": true,
    "is_aigc": false,
    "brand_organic_toggle": true,
    "brand_content_toggle": false
  }
}
```

The answer:

```json
{
  "data": { "id": "1024", "status": "scheduled" }
}
```

- **Who can view.** Public, Friends, Followers or Private. Before each post OmniSocials asks TikTok what the account allows; a level it can’t use goes out as Private. (`tiktok.privacy_level`)
- **Comments, duets, stitches.** Turn each one off per post. Videos take all three; photo posts take comments and can let TikTok add music. (`disable_comment`, `disable_duet`, `disable_stitch`, `auto_add_music`)
- **Disclosure built in.** Mark a post that promotes your own brand or a paid partnership, and label AI-generated videos. TikTok puts the label on the post. (`brand_organic_toggle`, `brand_content_toggle`, `is_aigc`)

## Connect TikTok once, post from code

Sign in with TikTok once inside OmniSocials. Create an API key, and your code posts, replies and reports for that account.

- **TikTok sign-in.** Sign in with TikTok once; no Business account needed. OmniSocials always shows TikTok’s consent screen, so you see which account connects.
- **Enable comments.** One more TikTok sign-in turns on the comments inbox, first comments and watch-time analytics.
- **What the account can post.** The accounts call lists the connected account with the formats it takes. (`GET /v1/accounts`, `content_types`)

`GET /v1/accounts?platform=tiktok` answers:

```json
{
  "data": [
    {
      "id": "4127_tiktok",
      "platform": "tiktok",
      "username": "omnisocials",
      "display_name": "omnisocials",
      "content_types": ["post", "reel"],
      "status": "active"
    }
  ],
  "workspace_name": "OmniSocials"
}
```

## Answer TikTok comments

List the comments on your TikTok posts, then reply, hide or delete them from your own code. Comments come in once Enable comments is on for the workspace.

- **Replies.** Text replies of up to 150 characters, under the comment you pick. TikTok can take a few minutes to show them while they pass its spam review. (`/conversations/:id/reply`, `message_id`)
- **Hide and delete.** Hide a comment on your post or delete it. Liking a comment works in the OmniSocials app. (`/inbox/messages/:id/hide`, `DELETE /inbox/messages/:id`)
- **Comments only.** TikTok DMs are not part of the inbox. Comments arrive through TikTok’s webhook, with a check every 15 minutes as a safety net. (`platform=tiktok`)

`GET /v1/inbox/conversations?platform=tiktok&type=comment` lists the conversations. Reply with `POST /v1/inbox/conversations/8812/reply`:

```json
{
  "message_id": "90388",
  "text": "Yes. It starts on benchmarks, then uses your own followers once 15 posts are analyzed."
}
```

## Read what TikTok reports

Views, likes, comments and shares on every post, and the account’s followers per day. With comments enabled, reach, saves and watch time too. The API returns the same numbers the app charts.

- **Per post.** Views, likes, comments and shares. With comments enabled also reach, saves and watch time. (`/analytics/posts/:id`)
- **Per account and workspace.** A daily snapshot of the account: followers, following and total likes. Plus a workspace overview. (`/analytics/accounts`, `/analytics/overview`)
- **Best times to post.** Days and hours worked out from your own TikTok history, once 15 of your posts are analyzed. (`/analytics/best-times`)

`GET /v1/analytics/posts/1019` answers:

```json
{
  "data": {
    "post_id": "1019",
    "platforms": {
      "tiktok": {
        "metrics": {
          "views": 1240, "likes": 58,
          "comments": 9, "shares": 6,
          "favorites": 14, "reach": 1012,
          "average_time_watched": 6.4,
          "total_time_watched": 7936
        }
      }
    }
  }
}
```

## TikTok’s rules, in one place

OmniSocials checks every post against them before it reaches TikTok, so a bad file fails in your request, not at publish time.

| Limit | Value |
| --- | --- |
| Caption | 2,200 characters on videos, 4,000 on photos |
| Photo title | 90 characters, photo posts only |
| Photos | 1 to 35 (10 in media_urls), JPEG, PNG or WebP, 20 MB each |
| Video | MP4, MOV or WebM, 100 MB in media_urls, 1 GB via upload-from-url |
| Video length | The account’s own limit, read from TikTok |
| First comment | 150 characters, needs comments enabled |
| Comment reply | 150 characters, text only |
| Replies | 1,000 a day per workspace |
| Rate limit | 100 requests a minute per API key |
| Accounts | One TikTok account per workspace |

## Your first TikTok video in three steps

About five minutes from sign-up to a scheduled video. Then hand the key to your coding agent.

1. **Create an API key** (`Settings › API`). Start your trial, open Settings, API and create a key. It is shown once.
2. **Connect TikTok** (`GET /v1/accounts`). Sign in with TikTok in OmniSocials once, and enable comments if you want them. Then list the account from your code.
3. **Send your first video** (`POST /v1/posts/create`). Post now with create-and-publish, or add schedule_at to plan it.

## FAQ

### Do I need my own TikTok developer app or audit?

No. The account connects through OmniSocials’ approved TikTok app, with TikTok’s own sign-in. You call the OmniSocials API with an API key and never handle TikTok tokens.

### Which TikTok accounts can I post to?

The TikTok account you sign in with; it does not need to be a Business account. Each workspace connects one TikTok account, and another account goes in another workspace with its own key.

### Can I schedule TikTok posts through the API?

Yes. Send schedule_at with the request and OmniSocials keeps the queue and publishes on time, with a webhook when it is live.

### Which formats can I publish?

Videos, as type reel or as a post with one video, and photo posts of 1 to 35 images with an optional title of up to 90 characters. media_urls takes 10 files; for more photos, upload them through /v1/media first and send their ids in media. A post takes photos or one video, not both. Text-only posts and Stories are not available on TikTok.

### Do I have to set privacy_level?

No. It defaults to PUBLIC_TO_EVERYONE. Before each post OmniSocials asks TikTok which levels the account can use; a level it can’t use goes out as SELF_ONLY, so a post never goes out more public than you asked.

### How do I label promotional or AI-generated content?

In the tiktok object, set brand_organic_toggle when the post promotes your own business and brand_content_toggle for a paid partnership: TikTok labels the post “Promotional content” or “Paid partnership”. Set is_aigc on a video sent as type reel to label it as AI-generated.

### Can I add a first comment?

Yes, once comments are enabled for the workspace. Set tiktok.first_comment, up to 150 characters; the post must be public with comments on. If TikTok returns the final video id a few minutes late, the comment goes out as soon as the id arrives.

### Can I read and answer TikTok comments?

Yes, after Enable comments on the TikTok channel in OmniSocials, a second TikTok sign-in. Then the inbox endpoints list the comments on your posts, reply with text of up to 150 characters, and hide or delete comments. Replies can take a few minutes to show on TikTok while they pass its spam review. TikTok DMs are not supported.

### What happens when a TikTok post fails to publish?

OmniSocials retries temporary failures up to 3 times, 15 minutes apart, and never sends a post again to a platform where it already went live. Then post.published or post.failed fires.

### Can I delete a TikTok post through the API?

No. TikTok’s API has no delete, so DELETE /v1/posts/:id removes the post from OmniSocials only. Take a live video down in the TikTok app.

### Is the TikTok API free?

TikTok doesn’t charge for its Content Posting API, but your own app needs approved scopes and TikTok’s audit before it can post publicly. Through OmniSocials you post on its audited app, and the API is part of the plan, $10 per seat per month billed annually.

### What are the rate limits?

100 requests a minute per API key. Past that the API answers 429 with a Retry-After header that says when to try again. Comment replies are capped at 1,000 a day per workspace.

### How much does OmniSocials cost?

One plan with every feature included: $10 per seat per month billed annually, or $12 billed monthly. Team members and client seats cost the same. Every account starts with a 14-day free trial.

The REST API, the SDKs, the CLI, webhooks and the MCP server are part of that one plan.

## Pricing

From $10 per seat a month, API included. 14-day free trial.

## Related

- [TikTok scheduler](https://omnisocials.com/tiktok.md)
- [TikTok MCP server](https://omnisocials.com/tiktok-mcp.md)
- [All channels](https://omnisocials.com/channels.md)
- [TikTok character limits](https://omnisocials.com/tiktok-character-limits)
- [TikTok video lengths](https://omnisocials.com/tiktok-video-lengths)

## Links

- Page: https://omnisocials.com/tiktok-api
- TikTok platform docs: https://docs.omnisocials.com/platforms/tiktok
- API reference: https://docs.omnisocials.com/api
- REST API overview: https://omnisocials.com/api.md
- MCP server: https://omnisocials.com/mcp.md
- Sign up: https://app.omnisocials.com/signup
