logo
Schedulin Developers

For AI agents: a documentation index is available at /llms.txt. Every guide and example is also available as markdown by adding .md to its URL.

Rate Limits

Limits are applied per credential — each API key (or OAuth access token) has its own budget, so one key can't exhaust another's.

RequestsLimit
Reads (GET)300 per minute
Writes (POST, PUT, PATCH, DELETE)60 per minute
All requests combined300 per minute
Unauthenticated requests50 per 10 seconds, per IP

So a credential can make up to 300 requests a minute in total, of which at most 60 can be writes.

Per-network publishing limits also apply on top of the API limits — a channel can only post as often as the platform allows.

Headers

Responses carry RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset (seconds until the window resets) for the combined per-credential budget, so you can pace requests.

Handling 429

When you exceed a limit, the API returns 429 Too Many Requests with a Retry-After header (in seconds). The body depends on which limit you hit:

{
  "error": {
    "message": "Rate limit exceeded. Retry after 12s.",
    "code": "RATE_LIMITED"
  }
}

is returned when you exceed the per-minute read or write limit, and

{
  "defined": false,
  "code": "TOO_MANY_REQUESTS",
  "status": 429,
  "message": "Too Many Requests",
  "data": { "message": "You are being rate limited. Please try again later." }
}

when you exceed the combined limit. Either way, wait for Retry-After and try again:

async function withRetry(fn: () => Promise<Response>, attempts = 5) {
  for (let i = 0; i < attempts; i++) {
    const res = await fn();
    if (res.status !== 429) return res;
    const retryAfter = Number(res.headers.get("Retry-After"));
    const wait = Number.isFinite(retryAfter) && retryAfter > 0
      ? retryAfter * 1000
      : Math.min(2 ** i * 500, 10_000);
    await new Promise((r) => setTimeout(r, wait));
  }
  throw new Error("Rate limited after retries");
}
TIP
Spread bulk writes over time rather than firing them in a tight loop — at 60 writes a minute, scheduling 200 posts takes a little over three minutes. The official SDKs retry responses automatically.