# TikTok API: Posting Reference

TikTok is supported via the TikTok Business API. Both photo posts and video posts (reels) are available. The connected account must be a TikTok Business account, not a personal account.

**Channel ID:** `tiktok`

## Supported content types

| Type | Supported | Notes |
|------|-----------|-------|
| Feed post | ✅ | Photo posts only (1-35 images) |
| Story | - | Not supported |
| Reel | ✅ | Vertical video |

## Minimal example

Video reel:

```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": { "default": "New drop 🔥" },
    "accounts": ["your-tiktok-account-id"],
    "media_urls": ["https://example.com/video.mp4"],
    "tiktok": {
      "privacy_level": "PUBLIC_TO_EVERYONE"
    }
  }'
```

Photo post:

```bash
curl -X POST https://api.omnisocials.com/v1/posts/create \
  -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": { "default": "Weekend shots" },
    "accounts": ["your-tiktok-account-id"],
    "media_urls": [
      "https://example.com/photo1.jpg",
      "https://example.com/photo2.jpg"
    ],
    "tiktok": {
      "privacy_level": "PUBLIC_TO_EVERYONE"
    }
  }'
```

## Platform-specific options

| Field | Type | Description |
|-------|------|-------------|
| `tiktok.privacy_level` | string | Who can see the post. Required. One of `PUBLIC_TO_EVERYONE`, `MUTUAL_FOLLOW_FRIENDS`, `FOLLOWER_OF_CREATOR`, `SELF_ONLY`. |
| `tiktok.disable_comment` | boolean | Disable comments on the post. |
| `tiktok.disable_duet` | boolean | Disable duets (video only). |
| `tiktok.disable_stitch` | boolean | Disable stitches (video only). |
| `tiktok.video_cover_timestamp_ms` | integer | Video only. Timestamp (ms) of the frame to use as the cover. |
| `tiktok.is_aigc` | boolean | Disclose the content is AI-generated. |
| `tiktok.brand_content_toggle` | boolean | Mark as a paid partnership promoting a third-party brand. |
| `tiktok.brand_organic_toggle` | boolean | Mark as promoting your own business / brand. |
| `tiktok.auto_add_music` | boolean | Photo carousels only. When `true`, TikTok auto-selects a soundtrack. Defaults to `false`. |

`privacy_level` is required on every TikTok post. Omitting it returns `400`.

## Media requirements

| Media | Requirement |
|-------|-------------|
| Video | MP4 or MOV, aspect ratio 9:16 or 16:9, 3 seconds to 10 minutes, max 4 GB |
| Photo | JPEG or PNG, 1-35 images per post, max 20 MB per image |

Photo posts must contain only images. Video posts must contain exactly one video. Mixing is not allowed.

## Limitations

- Only TikTok Business accounts can connect. Personal accounts are rejected at OAuth time.
- `brand_content_toggle: true` triggers TikTok's branded content review workflow. The post may take longer to publish.
- TikTok's API does not support scheduling posts further than 10 days in advance
- Comments, duets, and stitches can be disabled at post time but cannot be changed later
