API reference
Rate limits
1 min read
Rate limits keep the platform usable for everyone. Limits scale with your tier; everyone gets the same headers + retry behavior.
Tiers
| Tier | UI generations | API generations | |------|----------------|-----------------| | Free | 3 / 30 days | none | | Pro | unlimited | 100 / month | | Team | unlimited | 1,000 / seat / month | | Enterprise | unlimited | custom |
Rate limits apply per user for UI generations and per token for API generations. Reads (library, reviews, bookmarks) are not rate-limited beyond the platform's anti-abuse protections.
Headers
Every job-submission response carries:
X-RateLimit-Limit: 3
X-RateLimit-Remaining: 2
X-RateLimit-Reset: 1830342000Reset is a Unix timestamp (seconds) for when the window opens again. When you've hit the limit:
HTTP/1.1 429 Too Many Requests
Retry-After: 86400
{
"success": false,
"error": "Free plan limit reached (3 per window). Upgrade to Pro for unlimited generations.",
"plan": "free",
"resetAt": 1830342000000
}Retry-After is in seconds. resetAt (in the body) is in milliseconds.
Retry strategy
For API consumers:
- Respect
Retry-After. Wait at least that long before retrying. - Exponential backoff for 503/network errors, capped at 5 minutes between attempts.
- Don't retry 4xx errors other than 429. A 400 won't change on retry.
The CLI implements this automatically in designdrop generate. SDK users get the same behavior built into the client.
Upgrades
Hit the free limit and need more right now? Upgrade in Dashboard → Billing. The new limit applies immediately — no need to wait for the window to reset.