TikTok API
The TikTok Content Posting API requires a developer application, weeks of review, and sandbox-only access until approved. Aether is pre-approved — connect a TikTok account and post your first video in under 15 minutes.
One call for videos and scheduled posts. Aether handles format validation, upload, and retry logic — no TikTok developer portal required.
import Aether from "aether";
const aether = new Aether({ apiKey: process.env.AETHER_API_KEY });
// Post a TikTok video now
const post = await aether.posts.create({
text: "POV: you shipped your TikTok integration in minutes 👀 #buildinpublic",
profileIds: ["tt_xyz789"],
mediaUrls: ["https://your-cdn.com/clip.mp4"],
overrides: {
tiktok: { privacyLevel: "public_to_everyone" },
},
});
// Schedule a video for tonight
const scheduled = await aether.posts.create({
text: "Drop everything — this just launched 🚀",
profileIds: ["tt_xyz789"],
mediaUrls: ["https://your-cdn.com/launch.mp4"],
scheduledFor: "2026-06-15T18:00:00Z",
overrides: {
tiktok: { privacyLevel: "public_to_everyone" },
},
});Free tier · 3 accounts · no credit card
Get your free API keyimport os
import aether
client = aether.Aether(api_key=os.environ["AETHER_API_KEY"])
# Post a TikTok video now
post = client.posts.create(
text="POV: you shipped your TikTok integration in minutes 👀",
profile_ids=["tt_xyz789"],
media_urls=["https://your-cdn.com/clip.mp4"],
overrides={"tiktok": {"privacy_level": "public_to_everyone"}},
)
# Schedule a video
scheduled = client.posts.create(
text="Drop everything — this just launched 🚀",
profile_ids=["tt_xyz789"],
media_urls=["https://your-cdn.com/launch.mp4"],
scheduled_for="2026-06-15T18:00:00Z",
overrides={"tiktok": {"privacy_level": "public_to_everyone"}},
)curl -X POST https://api.aetherhq.dev/v1/posts \
-H "Authorization: Bearer $AETHER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Drop everything — this just launched 🚀",
"profileIds": ["tt_xyz789"],
"mediaUrls": ["https://your-cdn.com/launch.mp4"],
"scheduledFor": "2026-06-15T18:00:00Z",
"overrides": {
"tiktok": { "privacyLevel": "public_to_everyone" }
}
}'Aether returns a normalized post object immediately. Once published, publishResults includes the TikTok-native post ID and publish timestamp.
{
"success": true,
"data": {
"id": "post_3m5np9y",
"status": "scheduled",
"text": "Drop everything — this just launched 🚀",
"profileIds": ["tt_xyz789"],
"mediaUrls": ["https://cdn.aetherhq.dev/org_9p2qrs/launch.mp4"],
"mediaKeys": ["org_9p2qrs/launch.mp4"],
"scheduledFor": "2026-06-15T18:00:00.000Z",
"publishResults": [],
"publishedAt": null,
"failedAt": null,
"createdAt": "2026-06-08T14:23:11.000Z"
}
}Getting direct TikTok API access means: registering a developer app, completing TikTok's review process, staying in sandbox mode until approved, and managing OAuth credentials per environment.
Aether's Connect Link removes all of that. Call one endpoint, get a URL, send it to your user. They click, TikTok authenticates them, and their account appears in your dashboard.
// Generate a Connect Link for your user to authenticate TikTok
const link = await aether.connectLinks.create({
platform: "tiktok",
redirectUrl: "https://yourapp.com/settings/social",
});
// Send link.url to your user — they click, authenticate on TikTok,
// and the account appears in your dashboard automatically.
// No TikTok developer app setup needed on your end.
console.log(link.url); // "https://connect.aetherhq.dev/link/cl_tk8p3n..."
console.log(link.expiresAt); // "2026-06-15T14:23:11.000Z"TikTok requires weeks of application review before approving a developer app. Aether is pre-approved — connect an account and start posting immediately.
Upload MP4 or H.264 videos directly or pass a URL. Aether validates format, duration, and file size before submission and returns actionable errors.
Post TikTok carousels of up to 35 images with Photo Mode. Each slide can have a caption. Aether handles the container API automatically.
TikTok's scheduling window is 10 days. Pass scheduledFor in any supported timezone — Aether queues and publishes at the right UTC time.
Set privacyLevel per post: public_to_everyone, mutual_follow_friends, follower_of_creator, or self_only. Override per post in the platforms object.
Views, likes, comments, shares, and profile visits — per post and per account. Historical data with custom date ranges via the Analytics API.
TikTok's 4-video daily limit is tracked per connected account. Aether queues excess posts and retries after the window resets.
Every TikTok endpoint is an MCP tool. Claude, Cursor, and any MCP-compatible agent can post, schedule, and pull analytics without extra code.
You can — but you take on everything TikTok requires before you write a single line of posting code.
| Feature | Aether | TikTok API directly |
|---|---|---|
| Developer approval | ✓No approval needed — Aether is pre-approved | ✗Weeks of waiting for TikTok to review your app |
| Authentication | ✓One API key | ✗OAuth 2.0 + client key management |
| Sandbox restriction | ✓Live posting from day one | ✗Sandbox-only until app approved |
| Rate limits | ✓Handled automatically | ✗Strict daily video quotas to track manually |
| API maintenance | ✓We absorb all breaking changes | ✗Your team's responsibility |
| Platform compliance | Official API, fully compliant | Official API, fully compliant |
Platform-level limits set by TikTok. Aether queues and retries automatically — your integration does not need backoff logic.
| Operation | Limit | Error code | Note |
|---|---|---|---|
| Video publish | 4 videos / 24 h | quota_exceeded | Per TikTok account |
| API requests | 100 req / 10 min | 68005 | Per app credential |
| Video duration | 60 s (standard) / 10 min (approved) | 68019 | MP4 / H.264 |
| File size | 4 GB max | 68013 | Aether validates before upload |
| Caption length | 2,200 characters | — | UTF-8 |
| Hashtags | 5 per post (recommended) | — | TikTok best practice |
| Code | Meaning | How Aether handles it |
|---|---|---|
| 68002 | Permission denied — missing scope | Re-connect via Connect Link; Aether requests all scopes upfront |
| 68005 | Rate limit exceeded | Aether auto-queues and retries after the window resets |
| 68013 | Invalid request parameter | Aether validates requests; check your input fields |
| 68019 | Video duration exceeds limit | Trim to 60s (standard) or upgrade to an approved app tier |
| 10007 | User has not authorized this scope | Re-connect account via Connect Link to re-request permissions |
| 73001 | Video upload failed | Aether retries once automatically; check media URL if it persists |
AI-Native
Aether ships an MCP server that exposes every TikTok endpoint as a callable tool. Claude Desktop, Cursor, Windsurf, and any MCP-compatible agent can post, schedule, pull analytics, and manage accounts — with no additional integration code.
# Add to ~/.claude/claude_desktop_config.json
{
"mcpServers": {
"aether": {
"command": "npx",
"args": ["-y", "aether-mcp"],
"env": { "AETHER_API_KEY": "sk_live_..." }
}
}
}
# Claude can now post to TikTok:
# "Post our product demo video to TikTok now"
# "Schedule tonight's TikTok at 6pm"
# "What's our TikTok engagement rate this week?"No. Aether has an approved developer relationship with TikTok. When you connect a TikTok account through Aether, it goes through our pre-approved app — no separate developer application or weeks of waiting for review.
Videos (up to 10 minutes for approved apps, 60 seconds for standard) and Photo Mode (carousel of up to 35 images). Stories are not yet available via the TikTok API for third-party apps — this is a TikTok platform restriction.
Yes, up to 10 days in advance using the scheduledFor field. Posts enter a queue and publish at the specified time regardless of whether your server is running at that moment.
TikTok allows up to 4 videos per day per account via the Content Posting API. Aether surfaces this limit in error responses if you exceed it, and queues excess posts for the following day.
Yes. Every Aether endpoint is exposed as an MCP tool. AI agents running on Claude Desktop or Cursor can schedule, manage, and retrieve analytics for TikTok accounts directly in a single agentic workflow.
Free tier · 3 accounts · full API access · MCP server · no credit card.
Get your free API key →