Resumes In. Clean Structured Data Out.
The CVFormatter API converts unstructured candidate documents (PDF, DOCX, DOC, PNG, JPEG) into verified, strongly-typed JSON candidate profiles, and compiles them into brand-compliant Microsoft Word (.docx) documents and shareable web previews.
Engineered for high-volume recruitment platforms
Processes both digital vector PDFs and scanned image files with high-precision OCR and entity recognition.
Standardizes verb tenses, fixes typos, and highlights career progression without altering factual achievements.
Zero costs for status checks, structured JSON retrieval, duplicate uploads, or Word document exports.
How the API works (3-Step Asynchronous Lifecycle)
Because multi-page PDF rendering and multi-modal AI extraction require compute time (averaging 3.5 to 6 seconds), the CVFormatter API follows a non-blocking asynchronous pipeline:
Upload the Document
Send the document binary via multipart form data with a unique Idempotency-Key. The gateway returns HTTP 202 Accepted and a tracking id.
Poll Processing Status
Query GET /resumes/:id every 2–3 seconds. The status transitions from PENDING → PROCESSING → COMPLETED.
Retrieve Output or Export
Query /resumes/:id/data for structured JSON, or call /export to generate a branded Microsoft Word document.
Copy-paste integration quickstart
Production base URL: https://api.cvformatter.co/api/v1/public. Replace YOUR_API_KEY with a secret token generated in your dashboard:
# 1. Ingest resume document (Costs 1 credit, returns 202 Accepted)
curl -X POST "https://api.cvformatter.co/api/v1/public/resumes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: ats-cand-98102" \
-F "file=@./resume.pdf;type=application/pdf" \
-F "auto_proofread=true" \
-F "recruiter_id=rec_0189"
# 2. Poll processing status (100% Free - poll every 2-3 seconds)
curl "https://api.cvformatter.co/api/v1/public/resumes/RESUME_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
# 3. Retrieve formatted structured JSON (100% Free)
curl "https://api.cvformatter.co/api/v1/public/resumes/RESUME_ID/data" \
-H "Authorization: Bearer YOUR_API_KEY"{
"id": "cv_res_89a01f",
"status": "COMPLETED",
"data": {
"basic_info": {
"first_name": "Jane",
"last_name": "Doe",
"full_name": "Jane Doe",
"email": "jane@example.com",
"phone_number": "+1-555-0199",
"location": { "city": "San Francisco", "country": "USA" },
"current_title": "Senior Backend Engineer",
"summary_description": [
"Distributed systems engineer with 8+ years experience scaling cloud data pipelines."
]
},
"skills": ["TypeScript", "Python", "PostgreSQL", "Next.js", "Docker", "AWS"],
"work_history": [
{
"role_title": "Senior Backend Engineer",
"company": "Acme Technologies",
"location": "San Francisco, CA",
"start_date": "2021-03",
"end_date": "Present",
"bullet_points": [
"Led development of candidate search indexing platform reducing query latency by 45%.",
"Maintained 99.99% uptime for core integration endpoints handling 10M events/day."
]
}
],
"education": [
{
"degree": "B.S. in Computer Science",
"institution": "Stanford University",
"start_date": "2013",
"end_date": "2017"
}
],
"resume_language": "english"
}
}