Rate limits
Per-product limits, what a 429 looks like and how to back off
Limits count per workspace unless a row says otherwise, so every key in a workspace shares them. A call over a limit answers 429 rate_limited with a Retry-After header in seconds. It costs nothing.
Limits by model
These come from GET /api/v1/models.
| Slug | Limits |
|---|---|
ember-v1 | 60 drafts a day and 5 drafts open at once per workspace |
ember-14k | 60 drafts a day and 5 drafts open at once per workspace |
ember-28k | 60 drafts a day and 5 drafts open at once per workspace |
x-writer-v1 | 60 drafts a day and 5 drafts open at once per workspace |
x-reply-v1 | 60 drafts a day and 5 drafts open at once per workspace |
prose-1 | 60 drafts a day and 5 drafts open at once per workspace |
reddit-pooled-v1 | 20 requests a minute and 1,000 requests a day per workspace |
x-viral-v1 | 10 requests a minute and 250 requests a day per workspace |
wave-v3 | 60 reads a minute per workspace |
hot-rules-v1 | 60 reads a minute per workspace |
reddit-mentions | 60 reads a minute, 20 writes a minute and 10 trackers in total per workspace |
api.call | 30 top posts reads a minute per workspace |
profile.proposal | 6 proposals an hour per workspace |
Limits by product
| Product | Limit |
|---|---|
| Reddit top posts | 30 calls a minute |
| Reddit mentions | 60 reads and 20 changes a minute; 10 live trackers per workspace; a report refreshes at most once a minute |
| Drafts | 60 drafts a day and 5 open at once; at most 3 options per draft |
| X signals | 60 reads a minute; 50 keyword changes a day |
| Profile proposals | 6 an hour |
| Repository scans | 10 scans queued or running per workspace; repositories up to 1 GB and 5,000 files; scans run one at a time in a shared queue |
Drafts
A draft submit that stores a new draft returns its day limit in headers:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Drafts allowed a day |
X-RateLimit-Remaining | Drafts left today |
X-RateLimit-Reset | Seconds until the window resets |
A sixth open draft in a workspace answers 429 drafts_queue_full. Poll the open ones and submit again when one finishes. Writers run on GPUs that start when needed, and the daily GPU budget is shared. When it runs out, a draft fails with gpu_daily_cap and is refunded in full; submit again after 00:00 UTC.
Back off
- Wait for
Retry-Afterbefore you retry a429. - Poll jobs at the
poll_after_sthe API returns: 30 seconds while a draft is queued and 10 while it writes, 30 seconds while a scan is queued and 15 while it runs. - Mention reports change at most once a minute. Poll every 5 minutes or less often, and send
If-None-Matchwith the lastETagto get a free304.