Scheduling API
Timezone-aware scheduling, bulk CSV uploads, and queue-based publishing across 7 platforms — in a single API call.
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" }Pass any IANA timezone with scheduledFor and Aether converts to UTC internally. Your users see local times; the API handles the math.
Upload a CSV with post text, media URLs, platform targets, and scheduled times. Process hundreds of posts in one request.
Pass multiple profileIds and the post goes to every connected account simultaneously — with per-platform content overrides if needed.
Posts enter a BullMQ queue at submission. Your server doesn't need to be running at publish time — the worker handles it reliably.
Every post moves through a predictable status machine.
Webhooks fire on every transition so your app stays in sync.
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.
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.
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.
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.
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.
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.
Free tier, no credit card. Your first post can be queued in under 15 minutes.
Start for free →