Solution · Resume parsing API
Resume parsing for ATS, HR-tech, and recruiting platforms — on hardened PDF infrastructure
DocuShell's Resume Parse endpoint returns deterministic, structured candidate profiles from PDF resumes. Built for product teams that need a stable JSON contract, signed webhooks, idempotent retries, and predictable monthly pricing — without negotiating an enterprise contract before the first parse.
- Deterministic structured output. No hallucinated fields, no LLM drift between requests.
- Returns candidate, contact, experience, education, skills, sections, and ATS confidence in one JSON payload.
- Same hardened public API used by every DocuShell endpoint — Idempotency-Key safe, signed webhooks, ephemeral storage.
cURL — submit a resume
curl -X POST "https://api.docushell.com/api/v1/resume/parse" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: candidate-applied-2026-06-09-001" \
-F "file=@./candidate-resume.pdf;type=application/pdf" \
-F "webhook_url=https://your-ats.example.com/hooks/docushell" \
-F "webhook_secret=replace-with-a-long-secret"Resume profile response
{
"job_id": "job_01JX8Y5YJ2M2D8N1AQ5F7Q3KVT",
"status": "done",
"service": "resume-parse",
"result": {
"resume": {
"candidate": {
"name": "Ram Kumar",
"headline": "Operations Manager",
"location": "Pune, Maharashtra"
},
"contact": {
"emails": ["[email protected]"],
"phones": ["+91 98000 00000"],
"links": []
},
"skills": [
"Process Improvement",
"Operations Management",
"Project Management",
"Strategic Planning"
],
"experience": [
{
"title": "Operations Manager",
"company": "Acme Industries",
"location": "Pune, Maharashtra",
"start_date": "April 2014",
"end_date": "Current",
"current": true,
"date_range": "April 2014 - Current",
"bullets": ["Owned regional ops for 4 manufacturing sites."]
}
],
"education": [
{
"institution": "Symbiosis Institute of Management Studies",
"degree": "Masters, Business Administration",
"graduation_date": "July 2010",
"location": "Pune, Maharashtra"
}
],
"ats": {
"section_coverage": ["skills", "experience", "education"],
"confidence": { "overall": 0.93 }
}
}
}
}Built for
ATS and recruiting platforms
Drop in normalized candidate profiles for new applicants without writing or maintaining your own NLP pipeline.
Job boards and sourcing tools
Bulk-parse resume uploads into searchable candidate records with consistent fields across sources.
HR-tech SaaS and HRIS
Reuse one parsing layer across onboarding, internal mobility, talent reviews, and reporting.
How it fits into your stack
- Send a candidate's PDF resume to POST /v1/resume/parse with a webhook URL.
- DocuShell queues the parse job, validates the PDF, runs the structured extractor, and returns a job_id.
- When the job completes, your webhook receives a signed resume.parse.completed event with the structured profile.
- Map the JSON fields directly into your ATS candidate model — no manual cleanup required.
How DocuShell compares to Affinda, RChilli, and Sovren
The table below summarizes commercial and architectural differences. We will update it as competitors change their offerings — if you spot something stale, please email [email protected].
| Capability | DocuShell | Affinda | RChilli | Sovren |
|---|---|---|---|---|
| Pricing model | Flat monthly credits from $9/mo (INR pricing native) | Per-document, sales-led after free trial | Per-document, annual contracts typical | Per-document, enterprise contracts typical |
| Time to first parse | Self-serve API key in under a minute | Self-serve trial, then commercial follow-up | Demo + commercial onboarding | Demo + commercial onboarding |
| INR billing native | Yes (Razorpay subscriptions, INR + USD) | No (USD/EUR/GBP) | Yes | No (USD-only typical) |
| Output style | Deterministic JSON: candidate / contact / experience / education / skills / sections / ATS confidence | JSON, model-driven | JSON / XML | JSON / XML |
| Idempotent retries | Yes, Idempotency-Key with in-flight 425 protection | Limited | Limited | Limited |
| Signed completion webhooks | Yes, HMAC-SHA256 with rotation + replay nonces | Yes | Yes | Yes |
| Ephemeral document storage | Files deleted on stream completion + 1-hour sweep | Retention policy depends on tier | Retention policy depends on tier | Retention policy depends on tier |
FAQ
Is this a third-party model or DocuShell's own extractor?+
It's DocuShell's own deterministic extractor running on the parse-pdf service. Output is stable across requests — there is no LLM in the resume profile mapping step, so the same input always produces the same JSON.
What fields are returned?+
candidate (name, headline, location), contact (emails, phones, links), experience[], education[], skills[], sections (summary, skills, experience, education, projects, certifications, languages, etc.), and an ATS confidence block. The raw parse document is also exposed for QA.
How do I handle a batch of resumes?+
Use POST /v1/resume/parse/batch. The batch endpoint accepts up to 10 PDFs per request, returns a batch_id, and emits resume.batch.* webhook events as files complete.
Do you offer a free trial?+
Yes. The Free plan includes 500 credits for browser tools and account exploration. Paid plans start at $9/mo (Starter) and include API keys plus signed webhooks. Try the live playground at /docs/playgrounds/resume before signing up.
What is the price per resume?+
Resume Parse uses the same monthly credit pool as every DocuShell endpoint. Credit consumption per resume is documented under the resume-parse endpoint in the API reference, and there are no surprise overage charges — usage is hard-capped to your plan.
Where is the data stored?+
Uploaded resumes and generated artifacts live in ephemeral processing storage only. Files are removed after the download stream completes or within a one-hour cleanup sweep. See the Security Posture page for the full data lifecycle.
Ship resume parsing in an afternoon, not a quarter
Sign up, grab an API key from the dashboard, send your first PDF, and wire a webhook into your candidate flow. No sales call required.