Quotas & Throughput Engineering

Rate Limits & Processing Speed

CVFormatter balances high-throughput resume ingestion with predictable latency across our distributed OCR and LLM inference clusters. Our edge API gateway enforces sliding-window rate limits to prevent runaway polling loops, protect your credit reserves, and maintain median document processing speeds under 3.5 seconds.

How CVFormatter rate limiting works

Rate limits operate per organization token using a distributed sliding-window counter evaluated at the Cloudflare edge. Traffic is segmented into distinct operation tiers so frequent polling or report downloads never block time-critical candidate file uploads:

Ingestion Queue Limits

Applies to POST /resumes and reprocess endpoints to protect GPU inference nodes from sudden burst overloads during bulk hiring migrations.

Read & Polling Limits

Generous thresholds on status checks and structured data queries (/resumes/:id/data) allowing frequent client status checks without latency penalties.

Document Export Limits

Governs heavy Word (.docx) document compilation and XML generation pipelines to ensure steady memory usage across workers.

Quota thresholds by endpoint category

Requests exceeding these thresholds receive an HTTP 429 response accompanied by standard rate-limiting headers:

Traffic ScopeSustained ThresholdExceeded Status
File Uploads & Reprocess60 requests per minute (1 req/sec average)429 Too Many Requests
Status Checks & JSON Reads300 requests per minute (5 req/sec average)429 Too Many Requests
DOCX Exports & Previews120 requests per minute (2 req/sec average)429 Too Many Requests
Health Probes (/health)Unmetered (exempt from tenant quotas)200 OK

Real-time rate limit HTTP response headers

Every response returned by the API contains telemetry headers so your integration can dynamically regulate request velocity before reaching throttling limits:

Header NameType & Meaning
X-RateLimit-LimitThe maximum number of allowed requests in the active 60-second sliding window for this endpoint tier.
X-RateLimit-RemainingThe number of remaining requests your token can execute within the current window before receiving a 429.
X-RateLimit-ResetUnix timestamp (in seconds) indicating exactly when the sliding window clears and quota resets to 100%.
Retry-AfterIncluded exclusively on HTTP 429 responses. Specifies the precise integer number of seconds your client must sleep before retrying.

How to handle 429 responses gracefully

When rate limits are triggered, the gateway returns an HTTP 429 status code with a structured JSON payload and a Retry-After header:

HTTP/1.1 429 Too Many Requests
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
Retry-After: 12

{ "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "Upload threshold of 60 req/min exceeded. Please wait before retrying.", "request_id": "req_rl_7701ab4", "retry_after_seconds": 12 } }
Recommended Client Pattern

In your HTTP client interceptor or retry wrapper, parse response.headers.get("Retry-After"), fall back to retry_after_seconds from the body, and delay subsequent requests by that duration plus 50–100ms of random jitter to avoid thundering herd conditions.

Bulk hiring migrations & enterprise quota increases

Migrating hundreds of thousands of candidate documents from legacy ATS databases (such as Bullhorn, Greenhouse, or Workday) may require elevated concurrency. Enterprise workspace plans support custom burst parameters and dedicated GPU worker clusters up to 1,200 uploads per minute. Contact our solutions engineering team from your organization dashboard to request a temporary or permanent limit increase.