Rate Limits & Pricing
HirePlus API rate limits, monthly call caps, per-call credit costs, and overage rates by plan tier.
Rate Limits & Pricing
The HirePlus API enforces rate limits to ensure fair usage and platform stability. All tiers include API access — your plan determines the monthly call cap and per-call credit cost.
Monthly API Call Caps
Calls within your monthly cap are billed at the standard credit rate. Calls beyond the cap continue at overage rates — they are never hard-blocked.
| Tier | Included Calls / month |
|---|---|
| Free | 50 |
| Starter | 1,000 |
| Professional | 5,000 |
| Business | 15,000 |
Per-Call Credit Costs (standard rate)
Costs are in cents per call within your monthly cap.
| Action | Free | Starter | Professional | Business |
|---|---|---|---|---|
| CV Analysis | $0.10 | $0.07 | $0.05 | $0.03 |
| CV Generation | $0.15 | $0.10 | $0.08 | $0.05 |
| Skills Gap | $0.08 | $0.05 | $0.04 | $0.02 |
| Interview Prep | $0.09 | $0.06 | $0.05 | $0.03 |
Throttle Limits
| Limit | Value |
|---|---|
| Requests per minute | 100 per API key |
Rate Limit Headers
When you receive a 429 response, check these headers:
| Header | Description |
|---|---|
Retry-After | Seconds to wait before retrying |
Handling Rate Limits
Retry with Exponential Backoff
Base URL: https://hireplus.ai/api/v1
const BASE_URL = `https://${process.env.NEXT_PUBLIC_BRAND_DOMAIN}/api/v1`;
async function analyzeWithRetry(
formData: FormData,
apiKey: string,
maxRetries = 3,
) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(`${BASE_URL}/analyses`, {
method: 'POST',
headers: { 'x-api-key': apiKey },
body: formData,
});
if (response.status !== 429) return response.json();
const retryAfter = parseInt(
response.headers.get('Retry-After') ?? '60',
10,
);
const delay = retryAfter * 1000 * Math.pow(2, attempt);
await new Promise((r) => setTimeout(r, delay));
}
throw new Error('Max retries exceeded');
}Best Practices
- Batch requests — Space out analyses rather than submitting them all at once
- Cache results — Store analysis reports locally using the
id - Monitor usage — Use the
/v1/usageendpoint to track your consumption - Handle 429s gracefully — Implement retry logic with backoff