Scheduling API

Social Media Scheduling API

Timezone-aware scheduling, bulk CSV uploads, and queue-based publishing across 7 platforms — in a single API call. One endpoint handles Instagram, TikTok, LinkedIn, YouTube, and more.

schedule-post.ts
import Aether from "aether";

const aether = new Aether({ apiKey: process.env.AETHER_API_KEY });

// Schedule to 3 platforms at once with per-platform overrides
const post = await aether.posts.create({
  text: "Our biggest update yet. Thread below ↓",
  profileIds: ["ig_abc123", "li_company789", "th_user456"],
  mediaUrls: ["https://cdn.yourbrand.co/launch.jpg"],
  scheduledFor: "2026-06-15T09:00:00Z",
  overrides: {
    instagram: { contentType: "reel" },
    linkedin: { visibility: "PUBLIC" },
    threads:  { replyControl: "everyone" },
  },
});
// → { id: "post_xyz", status: "scheduled", publishAt: "2026-06-15T13:00:00Z" }

Free tier · 3 accounts · no credit card

Start scheduling

Scheduling that works the way you think

Timezone-aware scheduling

Pass any IANA timezone with scheduledFor and Aether converts to UTC internally. Your users see local times; the API handles the math.

Bulk scheduling via CSV

Upload a CSV with post text, media URLs, platform targets, and scheduled times. Process hundreds of posts in one request.

Cross-platform in one call

Pass multiple profileIds and the post goes to every connected account simultaneously — with per-platform content overrides if needed.

Queue-based publishing

Posts enter a BullMQ queue at submission. Your server doesn't need to be running at publish time — the worker handles it reliably.

Full post lifecycle visibility

Every post moves through a predictable status machine. Webhooks fire on every transition.

draft
scheduled
publishing
published
failed
cancelled

Webhooks fire on every transition so your app stays in sync.

Per-platform scheduling limits

Platform-level limits apply to all scheduled posts. Aether queues and retries automatically when limits are hit — your integration does not need backoff logic.

PlatformDaily limitSchedule windowNote
Instagram50 posts / 24 h75 days aheadPer Business/Creator account
TikTok4 videos / 24 h10 days aheadPlatform-imposed schedule window
LinkedIn150 shares / day30 days aheadPer member token
Facebook200 calls / hr6 months aheadPer Page access token
YouTube10,000 quota units6 months aheadUpload costs 1,600 units
Threads250 posts / 24 hQueue-basedAether queues at platform limit
Reddit60 requests / minQueue-basedVia OAuth token

AI-Native

Let your AI agent handle scheduling

Aether ships an MCP server that exposes every scheduling endpoint as a callable tool. Claude Desktop, Cursor, and any MCP-compatible agent can schedule posts, check queue status, and cancel or reschedule — with no extra 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 schedule posts across all 7 platforms:
# "Schedule our launch post to Instagram and LinkedIn for 9am tomorrow"
# "What posts are queued for this week?"
# "Cancel the TikTok post scheduled for Friday"

Frequently asked questions

How far in advance can I schedule posts?+

Up to 365 days in advance for most platforms. TikTok has a platform-imposed 10-day limit — Aether surfaces this as a specific validation error with a clear message. YouTube uses native scheduled publishing, which supports up to 6 months.

What happens if a scheduled post fails to publish?+

Aether retries with exponential backoff up to 5 times. After all retries are exhausted, the post status changes to 'failed' and we fire a webhook so you can handle it in your application.

Can I cancel or reschedule a post after it's queued?+

Yes. Use PATCH /v1/posts/{id} to update the scheduledFor time, or DELETE /v1/posts/{id} to cancel. Both operations work up until the moment the post begins publishing.

Does scheduling work across all 7 platforms?+

Yes, with one exception: YouTube videos are uploaded immediately and scheduled via YouTube's native scheduled publishing — so they require upload time upfront. All other platforms accept future scheduledFor times natively.

Can I see which posts are queued and their status?+

Yes. GET /v1/posts returns all posts with their status (draft, scheduled, publishing, published, failed, cancelled). Filter by status, platform, or profileId. The dashboard also shows a visual queue.

Is there a rate limit on how many posts I can schedule?+

Aether does not impose a scheduling rate limit beyond your plan's API call limits. The platforms themselves have per-account daily limits — Aether surfaces these in error responses before submission.

Start scheduling today

Free tier, no credit card. Your first post can be queued in under 15 minutes.

Get your free API key →