Reference
Billing & plans
Every plan meters usage in words per month, with a per-request cap and a requests-per-minute throughput limit. These numbers are the single source of truth used everywhere else in these docs.
Starter
$0/mo
- 1 req/min
- 3 req/day per key
- 1,500 words/request cap
- 20,000 words/mo
- 90 requests/mo
- 1 concurrent async job
- 1 team seat
Growth
$49/mo
- 15 req/min
- 500 req/day per key
- 2,000 words/request cap
- 200,000 words/mo
- 5,000 requests/mo
- 3 concurrent async jobs
- 3 team seats
Scale
priority$199/mo
- 60 req/min
- 5,000 req/day per key
- 4,000 words/request cap
- 1,200,000 words/mo
- 50,000 requests/mo
- 10 concurrent async jobs
- 10 team seats
Rate limits & quotas
| Plan | Requests/min | Requests/day | Requests/mo | Max words/request | Monthly word cap | Priority processing |
|---|---|---|---|---|---|---|
| Starter | 1 | 3 | 90 | 1,500 | 20,000 | No |
| Growth | 15 | 500 | 5,000 | 2,000 | 200,000 | No |
| Scale | 60 | 5,000 | 50,000 | 4,000 | 1,200,000 | Yes |
requestsPerDay is the primary Starter-plan control lever — it, not the monthly cap, is usually what a free account hits first. Priority processing on async jobs (POST /v1/jobs) is enforced via a dedicated concurrency allowance per plan (see “concurrent async jobs” above): higher tiers can have more of their jobs in flight at once rather than sharing one undifferentiated queue.
Quota exceeded response
Once consumed.words reaches limits.monthlyWords, further generation requests return:
429
{
"error": {
"code": "QUOTA_EXCEEDED",
"message": "Monthly word quota exceeded for plan 'growth'. Upgrade your plan or wait for the next billing period.",
"requestId": "req_f6e5d4c3b2",
"details": {
"monthlyWords": 200000,
"consumedWords": 200000,
"periodEnd": "2026-10-01T00:00:00.000Z"
}
}
}