The high-volume tier covers the endpoints you are most likely to hammer during bulk imports. The MCP server has its own limit of 60 requests per minute per user.
Headers
Responses to requests that reach the rate limiter include the current rate-limit state:401: the token is missing or invalid.404: the path doesn’t match any endpoint.405: the endpoint doesn’t accept the HTTP method.
402 when a plan check fails (see Plans), a 403 when the token lacks the ability the endpoint needs or you can’t act on the resource, a 404 for an ID in the URL that doesn’t exist, and 422 validation errors.
When you hit the limit
The API returns429 Too Many Requests:
429s during a single window can extend the cool-off.
Daily post creation cap
On top of the per-minute limits,POST /workspaces/{workspace}/posts is capped over a rolling 24-hour window. The cap belongs to the workspace owner: requests from every team member’s token count toward it, at the owner’s plan’s rate.
Each request counts once, whatever the number of items in its
posts array (up to 10), so batching posts stretches the cap. The window is rolling: a request made at 09:00 stops counting at 09:00 the next day. Posts created in the dashboard or through the MCP server do not count.
When the cap is reached the API returns 429 with:
Retry-After header. Back off until the oldest request in your window is 24 hours old, or spread bulk creation across the day.
Patterns for staying inside the limit
Concurrency limiting
Concurrency limiting
For bulk operations, cap concurrent in-flight requests instead of firing everything at once. A
p-limit(20) in Node, or ThreadPoolExecutor(max_workers=20) in Python, keeps you well inside the 1,000/min tier without coordination overhead.Exponential backoff with jitter
Exponential backoff with jitter
On 429, wait
Retry-After. On 5xx, retry with exponential backoff (for example 1s, 2s, 4s) plus 10 to 20% jitter to avoid thundering-herd retries from multiple workers.Batch where you can
Batch where you can
The upload endpoint takes up to 10 files per request, which counts as one request against the rate limit. For files too large for the request body, one
presign call plus one confirm call covers a batch of 10 and counts as 2 requests; the PUT uploads themselves go directly to storage and do not count at all. Post creation takes up to 10 items per request, which counts as one request against both the per-minute limit and the daily cap.Cache list responses
Cache list responses
If your code repeatedly fetches the same workspace’s profile list (for example in a polling loop), cache it for a few minutes instead of refetching every cycle. Profile membership rarely changes.