How many posts can I make per day on each platform?
| Platform | Posts per rolling 24 hours |
|---|---|
| YouTube | 10 |
| TikTok | 15 |
| 20 | |
| 25 | |
| 40 | |
| 50 | |
| X | 50 |
| Threads | 50 |
| Bluesky | 50 |
| Dev.to | 50 |
| Hashnode | 50 |
| Telegram | 100 |
| Discord | 100 |
| Mastodon | 100 |
| Nostr | 100 |
| Slack | 100 |
| 150 | |
| Tumblr | 250 |
The window is rolling, not a calendar day. A post you made at 3pm yesterday stops counting at 3pm today. When a platform rejects a post for hitting its cap, the API turns the raw error into a readable one: "Instagram's posting limit was reached. Instagram allows about 50 posts per 24 hours. Wait for the window to reset, then retry." Retrying immediately will not help; wait for older posts to age out.
How is that different from the API rate limit?
| Limit | Scope | Value |
|---|---|---|
| Platform daily cap | Per account on one platform, rolling 24 h | See table above |
| API rate limit, publishing endpoints | Requests per minute | 60 |
| API rate limit, list and fetch endpoints | Requests per minute | 240 |
| Plan uploads | Per workspace per month | Free 30, Pro and Business unlimited |
Key dailyPostLimit | Posts per UTC day through one key | You choose |
Key monthlyXSpendCentsCap | X spend through one key per month | You choose |
A request over the API rate limit gets a 429 with a Retry-After header in seconds, and the SDK exposes it as RateLimitError. That is about request volume. It says nothing about whether a platform will accept the post. A post that reaches the platform and is rejected for its cap fails on that channel only.
Which limit will I hit first?
- A single account posting often: the platform cap. TikTok at 15 and YouTube at 10 are the tightest.
- An agent in a loop: the key's
dailyPostLimitif you set one, otherwise the platform cap. See how to give an AI agent safe access. - A free workspace: 30 uploads per month is the binding limit. A post to five platforms counts as one upload.
- Posting to X: the monthly X allowance (Free 5, Pro 50, Business 300). See X posting limits and costs.
- A bulk job: 60 requests per minute. Use
bulk-schedule(500 rows per call) instead of 500 calls.
How should my code handle a limit error?
import { RateLimitError, UsageLimitError } from '@socifyr/sdk'
try {
await socifyr.uploads.text(params)
} catch (err) {
if (err instanceof RateLimitError) {
await sleep(60_000) // too many requests, back off and retry
return retry()
}
if (err instanceof UsageLimitError) {
notifyOwner('Plan limit reached') // monthly uploads or X allowance, do not retry
return
}
throw err
}Treat the two differently. A rate-limit error is transient and worth retrying after a delay. A usage-limit error will not clear until the monthly reset or an upgrade. For platform-side cap failures after a post fans out, check the result with waitForCompletion and retry the failed channels later. Succeeded channels are skipped, so you cannot double-post.
Where do I check how much I have used?
socifyr usage # posts this month, accounts, storage, X posts
# MCP: ask your assistant to run get_usage
# SDK (Python): client.usage()Self-hosted installs report every dimension as unlimited. Limits above apply to the hosted service. See the REST API guide for the full envelope and error shapes.
How do I pace posts to stay under a cap?
The cap applies to one connected account on one platform over a rolling window, so ten Instagram accounts each have their own allowance of 50. For a single busy account, spread posts across the day instead of sending them in a burst. With a cap of 15 on TikTok, one post every 90 minutes covers a full day with room to spare.
# Fan a week of posts over time with bulk scheduling
socifyr schedule posts.csvScheduling needs a paid plan, but it is the clean way to pace output. On the free plan, pace it in your own code with a delay between calls.
What do these limits mean for AI agents?
An agent can reach a cap faster than a person and will keep trying unless told to stop. Give it a key-level dailyPostLimit that sits below the strictest platform cap it touches, and tell it in its instructions what to do on a 403: report and stop. Without that, a retry loop against TikTok's 15-post cap just burns requests against your 60-per-minute rate limit. The guardrails guide covers the setup.