Rate Limits
The Smidge API enforces rate limits to ensure fair usage and service stability. Limits are applied per-user based on your authentication token.
Limits by Endpoint
| Endpoint Category | Limit | Window |
|---|---|---|
| Upload | 10 requests | per minute |
| Generate / Regenerate | 5 requests | per minute |
| General API | 60 requests | per minute |
The “General API” limit applies to all endpoints not specifically listed above (skills CRUD, credits, checkout, etc.).
Rate Limit Headers
Every API response includes rate limit headers:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum number of requests allowed in the current window. |
X-RateLimit-Remaining | Number of requests remaining in the current window. |
X-RateLimit-Reset | Unix timestamp when the current window resets. |
Example response headers
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 54
X-RateLimit-Reset: 1703001660When Rate Limited
If you exceed the rate limit, the API returns a 429 Too Many Requests response:
429 Responsejson
{
"error": "rate_limit_exceeded",
"message": "Too many requests. Please try again later.",
"retry_after": 23
}The response includes a Retry-After header (in seconds) indicating when you can resume making requests.
Best Practices
- ●Respect Retry-After — wait the indicated number of seconds before retrying
- ●Implement exponential backoff — if you receive repeated 429s, increase the wait time between retries
- ●Monitor remaining quota — check
X-RateLimit-Remainingto proactively throttle requests - ●Batch operations — upload multiple files in a single request instead of separate requests per file
Note
Unlimited plan subscribers have the same rate limits as other users. Rate limits protect service stability and are not a billing constraint.