Back to Blog

Scheduling Tweets by API at Scale: When Postiz and Typefully Rate Limits Get in the Way

@opentweet5 min read
Scheduling Tweets by API at Scale: When Postiz and Typefully Rate Limits Get in the Way

If you have ever tried to schedule tweets from code, you already know the problem is never writing the request. It is the wall you hit right after: the rate limit.

You wire up the API, the first post schedules perfectly, and then you try to push a real workload, a week of content, a month for three accounts, an agent that queues posts as it generates them, and the API starts saying no. Not because your code is wrong, but because the tool was built for a person clicking buttons, not for a program scheduling at volume.

Here is what the common options actually cap you at, and how to schedule in bulk without babysitting a limit.

Quick answer: OpenTweet schedules tweets through one API key with a batch endpoint that takes a whole calendar in a single call, for a flat $11.99/mo. No per-post fees, no per-hour throttle to design around. Try it free for 7 days.

The three walls you hit when scheduling by API

1. The X API has no scheduling endpoint at all

This is the one that surprises people. The official X API can post immediately, but there is no "schedule for later" endpoint at any tier. If you want scheduling, you have to build it: store every post in your own database, run a cron job that wakes up every minute, and call the create-tweet endpoint at exactly the right time.

That means you own the scheduler, the retry logic, the OAuth token refresh, and the bill, which is now metered per post on top of everything. You are building a scheduling product just to publish your own content.

2. Postiz caps its API at 30 requests per hour

Postiz is a capable open-source tool, and its public API documents a hard limit of 30 requests per hour. For a human queueing a handful of posts, that is invisible. For a batch job or an AI agent, it is a ceiling you crash into immediately.

Schedule 50 posts and you are now writing sleeps, backoff, and retry handling just to stay under the cap, turning a one-shot job into a job that drips for hours. The limit is not the problem on its own. The problem is that per-request scheduling plus a low per-hour cap is exactly the wrong shape for programmatic use.

3. Typefully is built around the app, not the agent

Typefully has an API and it is genuinely good for creators drafting threads. But it is designed around a person working inside the Typefully editor. When your use case is a backend or an agent scheduling at volume, you feel the mismatch: the model assumes a human in the loop, and the pricing and throughput follow that assumption.

None of these are bad tools. They are just built for a different job than "let my program schedule a lot of posts reliably."

What scheduling at scale actually needs

  • One request for many posts. A content calendar should go up in one call, not one request per tweet fighting a per-hour cap.
  • Individual scheduled times per post. Bulk should not mean "all at once." Each post keeps its own slot.
  • Flat, predictable cost. Scheduling more should never cost more. A metered per-post bill punishes exactly the high-volume use you are building for.
  • No OAuth to maintain. One long-lived API key beats refreshing X tokens forever.

How OpenTweet handles it

OpenTweet connects to your X account once and gives you one API key. From there, scheduling is a single POST.

Schedule one post for later:

curl -X POST https://opentweet.io/api/v1/posts \
  -H "Authorization: Bearer ot_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"text":"Shipping this on Thursday.","scheduled_date":"2026-07-03T15:00:00Z"}'

Schedule a whole batch in one call, each with its own time:

curl -X POST https://opentweet.io/api/v1/posts \
  -H "Authorization: Bearer ot_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"posts":[
    {"text":"Post one.","scheduled_date":"2026-07-03T15:00:00Z"},
    {"text":"Post two.","scheduled_date":"2026-07-04T15:00:00Z"},
    {"text":"Post three.","scheduled_date":"2026-07-05T15:00:00Z"}
  ]}'

That is a full week going up in a single request, no per-post loop, no per-hour cap to design around. The same key drives an MCP server if you want an agent to schedule, and connectors if you want a source like RSS or GitHub to schedule for you.

Side by side

OpenTweet X API Postiz API Typefully API
Native scheduling endpoint Yes No Yes Yes
Bulk schedule in one call Yes, array of posts Build it yourself Per-request Per-request
Documented rate ceiling Built for batch Metered per post 30 req/hour App-centric
Per-post fees None Yes None None
OAuth upkeep None (one key) Yours to build Managed Managed
Built for agents and backends Yes Raw, DIY Human-first Human-first

Always verify current limits on each provider's own docs, since they change. The point is not a single number. It is the shape: scheduling at scale wants a batch-friendly API and flat pricing, and that is a different design than a creator app with a public API bolted on.

The bottom line

If you schedule tweets by hand, any of these tools is fine. The moment a program does the scheduling, the rate limit becomes the whole story. The X API makes you build the scheduler and pay per post. Postiz caps you at 30 requests an hour. Typefully assumes a person in the editor.

OpenTweet was built for the programmatic case: one key, batch scheduling in a single call, flat pricing that does not punish volume.

👉 Read the API docs to see the batch-schedule endpoint, or start your 7-day free trial and schedule your first calendar in one request.

Start Scheduling Your X Posts Today

Join hundreds of creators using OpenTweet to stay consistent, save time, and grow their audience.

7-day free trial
Only $11.99/mo
Cancel anytime