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

Post to X from your code or AI agent

No X developer account, no OAuth. Connect once and post through a REST API or MCP server.

OpenTweet vs the X API

Post, schedule, and automate X without a developer account or the $200/mo minimum.

X DM outreach, human-approved

Find and qualify leads, AI-draft DMs, approve each one, and drip-send from your own account via API or MCP.

Post to X without an API

The clean, account-safe way to post to X from your code or an AI agent.

Twitter MCP Server

Give Claude, Cursor, and OpenClaw the ability to post to X. 43 tools included.

Developer docs

Quickstart, API keys, MCP setup, and the REST reference for posting to X from code or an agent.

Cross-posting reference

One call posts to X, Bluesky and LinkedIn. The platforms field, per-network results, and why a network gets skipped.

Social media API for AI agents

Three ways an agent can post to X, Bluesky and LinkedIn, and the trade-offs of each.

LinkedIn MCP server

Post and schedule to a LinkedIn profile from Claude or Cursor through the official LinkedIn API.

XMCP vs OpenTweet

X's official MCP server bills per API call and cannot schedule. Compare it with the flat-fee hosted MCP.

MCP for AI agents

Connect your AI client to X in under two minutes, no X developer account.

Developer API and keys

REST endpoints, one bearer key, and usage tracking. Build on OpenTweet.

OpenTweet for AI agents

The posting layer for autonomous agents and automations that live on X.

Build an AI Twitter persona

Give your AI agent its own X account. Setup, cadence, and the rules that keep it safe.

Best MCP servers for social media

The 2026 ranked list. How the hosted OpenTweet MCP compares with the official X MCP and others.

Cheapest way to post to X via code

Flat fee vs pay-per-use. Why the $0.20 per-link fee flips the math past ~145 link posts a month.