Rate Limits
Talonic meters usage in credits, not request quotas. Every account starts with 5,000 free credits per month (a hard cap: the API returns 429 when they run out, until the monthly reset or a credit purchase), then you pay as you go with prepaid credits. Separate abuse-protection rate limits apply per API key on a rolling window; they exist to keep the platform healthy and are not pricing.
Credit metering
Every operation costs credits (1,000 credits = €1): 100 credits per page ingested, 20 credits per AI-resolved structuring cell, registry-resolved cells free. See pricing for the full rate card. When your balance reaches zero, the API returns 429 until your free credits reset or you buy credits inside the platform.
Abuse-protection limits
Default operational limits are generous and independent of what you pay. If a legitimate workload hits them, contact info@talonic.ai and we raise them. Enterprise contracts include custom quotas.
| Limit | Default | Enterprise |
|---|---|---|
| Requests per minute | 30 | Custom |
| Max file size | 50 MB | Custom |
| Concurrent extractions | 5 | Custom |
| Schemas | 50 | Unlimited |
| Sources | 10 | Unlimited |
Rate limit headers
Every API response includes rate limit headers so you can monitor usage proactively. Check these headers to avoid hitting limits during bulk extraction workloads.
| Header | Description |
|---|---|
| X-RateLimit-Limit | Maximum requests per minute for your API key |
| X-RateLimit-Remaining | Requests remaining in the current window |
| X-RateLimit-Reset | Unix timestamp when the window resets |
| Retry-After | Seconds to wait before retrying (only on 429) |
Handling 429 responses
When you receive a 429 Too Many Requests response, read the Retry-After header and wait that many seconds before retrying. Implement exponential backoff with jitter for resilience. See the error handling guide for a full retry strategy.
Best practices
Batch documents using source ingestion instead of individual extract calls. Use webhooks to receive results asynchronously rather than polling jobs. Cache schema responses to avoid unnecessary reads.