Billing & Limits
Understand Knowhere API's pricing model, usage limits, and rate limiting.
Pricing Model
Knowhere API uses a credits-based pricing model. You purchase credits and consume them based on your usage.
Credit Consumption
| Operation | Credit Cost |
|---|---|
| Parse 1 page (base model) | 1 credit |
| Parse 1 page (advanced model) | 3 credits |
| OCR processing (per page) | +1 credit |
Example: A 50-page PDF with the base model costs 50 credits. With OCR enabled, it costs 100 credits.
Subscription Tiers
| Plan | Monthly Price | Included Credits | Per-Credit Rate | Rate Limit |
|---|---|---|---|---|
| Free | $0 | 100 | - | 60 RPM |
| Pro | $49 | 5,000 | $0.0098 | 120 RPM |
| Ultra | $199 | 25,000 | $0.008 | 300 RPM |
Free Tier
- 100 free credits per month
- Automatically refreshes on the 1st of each month
- Perfect for testing and prototyping
- No credit card required
Pay-as-you-go
Purchase additional credit packs anytime:
| Pack | Price | Credits | Per-Credit Rate | Savings |
|---|---|---|---|---|
| Starter | $10 | 1,000 | $0.010 | - |
| Growth | $50 | 5,500 | $0.009 | 10% |
| Scale | $200 | 25,000 | $0.008 | 20% |
Rate Limits
To ensure fair usage and service stability, API requests are rate-limited.
Default Limits
| Limit Type | Value |
|---|---|
| Requests per minute (RPM) | 60 |
| Concurrent jobs | 10 |
| Max file size | 100 MB |
Rate Limit Headers
Every API response includes rate limit information:
RateLimit-Limit: 60
RateLimit-Remaining: 45
RateLimit-Reset: 1672531260
| Header | Description |
|---|---|
RateLimit-Limit | Maximum requests per window |
RateLimit-Remaining | Requests remaining in current window |
RateLimit-Reset | Unix timestamp when the window resets |
Handling Rate Limits
When you exceed the limit, you'll receive a 429 Too Many Requests response:
{
"success": false,
"error": {
"code": "RESOURCE_EXHAUSTED",
"message": "Rate limit exceeded. Please retry after 15 seconds.",
"request_id": "req_abc123",
"details": {
"retry_after": 15
}
}
}
Best practice: Check the Retry-After header and wait before retrying.
- Python
- Node.js
import time
import requests
response = requests.get(url, headers=headers)
if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 60))
time.sleep(retry_after)
response = requests.get(url, headers=headers) # Retry
let response = await fetch(url, { headers });
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '60');
await new Promise(r => setTimeout(r, retryAfter * 1000));
response = await fetch(url, { headers }); // Retry
}
File Size Limits
| File Type | Max Size |
|---|---|
| 100 MB | |
| DOCX | 50 MB |
| XLSX | 50 MB |
| PPTX | 100 MB |
Contact team@knowhereto.ai for enterprise pricing with custom limits.
Usage Monitoring
Dashboard
View your usage in the Knowhere Dashboard:
- Current credit balance
- Usage history and trends
- Billing history
- Invoice downloads
Low Balance Alerts
Set up alerts to be notified when your credits are running low:
- Go to Dashboard > Settings > Notifications
- Enable "Low Balance Alert"
- Set your threshold (e.g., 100 credits)
Billing FAQ
When are credits deducted?
Credits are deducted when a job completes successfully. Failed jobs do not consume credits.
Do unused credits roll over?
- Free tier credits: Do not roll over
- Paid credits: Never expire
Can I get a refund?
Contact team@knowhereto.ai for refund requests within 14 days of purchase.
How do I upgrade my plan?
- Go to Dashboard > Billing
- Click "Upgrade Plan"
- Select your new plan
- Complete payment through Stripe
What payment methods are accepted?
We accept all major credit cards through Stripe:
- Visa
- Mastercard
- American Express
- And more
Enterprise
Need custom limits, SLAs, or dedicated support?
Enterprise features include:
- Custom rate limits
- Priority processing
- Dedicated support channel
- Custom SLA agreements
- Volume discounts
- Invoice billing
Contact team@knowhereto.ai to discuss your needs.