TikTok API

The TikTok API without the approval wait

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.

Post to TikTok in under 15 minutes

One call for videos and scheduled posts. Aether handles format validation, upload, and retry logic — no TikTok developer portal required.

Node.js / TypeScript
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 key

The same call in Python and cURL

Python
import 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
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" }
    }
  }'

The actual API response

Aether returns a normalized post object immediately. Once published, publishResults includes the TikTok-native post ID and publish timestamp.

JSON
{
  "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"
  }
}

TikTok OAuth — without the developer app

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.

TypeScript
// 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"

Everything the TikTok API gives you

No developer approval needed

TikTok requires weeks of application review before approving a developer app. Aether is pre-approved — connect an account and start posting immediately.

Video publishing

Upload MP4 or H.264 videos directly or pass a URL. Aether validates format, duration, and file size before submission and returns actionable errors.

Photo Mode

Post TikTok carousels of up to 35 images with Photo Mode. Each slide can have a caption. Aether handles the container API automatically.

Scheduling up to 10 days

TikTok's scheduling window is 10 days. Pass scheduledFor in any supported timezone — Aether queues and publishes at the right UTC time.

Privacy controls

Set privacyLevel per post: public_to_everyone, mutual_follow_friends, follower_of_creator, or self_only. Override per post in the platforms object.

Analytics

Views, likes, comments, shares, and profile visits — per post and per account. Historical data with custom date ranges via the Analytics API.

Automatic rate limit handling

TikTok's 4-video daily limit is tracked per connected account. Aether queues excess posts and retries after the window resets.

MCP / AI agents

Every TikTok endpoint is an MCP tool. Claude, Cursor, and any MCP-compatible agent can post, schedule, and pull analytics without extra code.

Why not build directly on the TikTok Content Posting API?

You can — but you take on everything TikTok requires before you write a single line of posting code.

FeatureAetherTikTok API directly
Developer approvalNo approval needed — Aether is pre-approvedWeeks of waiting for TikTok to review your app
AuthenticationOne API keyOAuth 2.0 + client key management
Sandbox restrictionLive posting from day oneSandbox-only until app approved
Rate limitsHandled automaticallyStrict daily video quotas to track manually
API maintenanceWe absorb all breaking changesYour team's responsibility
Platform complianceOfficial API, fully compliantOfficial API, fully compliant

TikTok API rate limits

Platform-level limits set by TikTok. Aether queues and retries automatically — your integration does not need backoff logic.

OperationLimitError codeNote
Video publish4 videos / 24 hquota_exceededPer TikTok account
API requests100 req / 10 min68005Per app credential
Video duration60 s (standard) / 10 min (approved)68019MP4 / H.264
File size4 GB max68013Aether validates before upload
Caption length2,200 charactersUTF-8
Hashtags5 per post (recommended)TikTok best practice

TikTok API error codes reference

CodeMeaningHow Aether handles it
68002Permission denied — missing scopeRe-connect via Connect Link; Aether requests all scopes upfront
68005Rate limit exceededAether auto-queues and retries after the window resets
68013Invalid request parameterAether validates requests; check your input fields
68019Video duration exceeds limitTrim to 60s (standard) or upgrade to an approved app tier
10007User has not authorized this scopeRe-connect account via Connect Link to re-request permissions
73001Video upload failedAether retries once automatically; check media URL if it persists

AI-Native

Let your AI agent post to TikTok

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.

Claude Desktop config
# 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?"

Frequently asked questions

Do I need to apply for TikTok API access separately?+

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.

What TikTok content formats can I post?+

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.

Can I schedule TikTok videos in advance?+

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.

What are TikTok's daily posting limits?+

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.

Does TikTok posting work with AI agents?+

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.

Ready to ship your TikTok integration?

Free tier · 3 accounts · full API access · MCP server · no credit card.

Get your free API key →