Scheduling API

Schedule Social Posts via API

Timezone-aware scheduling, bulk CSV uploads, and queue-based publishing across 7 platforms — in a single API call.

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"],
  media: [{ url: "https://cdn.yourbrand.co/launch.jpg", type: "image" }],
  scheduledFor: "2026-06-15T09:00:00Z",
  timezone: "America/New_York",
  platforms: {
    instagram: { contentType: "reel" },
    linkedin: { visibility: "PUBLIC" },
    threads:  { replyControl: "everyone" },
  },
});
// → { id: "post_xyz", status: "scheduled", publishAt: "2026-06-15T13:00:00Z" }

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.

draft
scheduled
publishing
published
failed
cancelled

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

Frequently asked questions

How far in advance can I schedule posts?+

Up to 365 days in advance. TikTok has a platform-imposed 10-day limit — Aether surfaces this as a specific validation error with a clear message.

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.

Start for free →