Skip to content

CVault Resume Parsing API

Resume files.
Structured data.

Extract contact details, work history, education and skills from resumes. Submit files through the API and retrieve structured results for your own application.

Direct uploads, batch jobs and signed webhooks.

From document to data
resume.pdf
Resume
Contact details
Work experience
Skills & education
Parsing data
{
 "contact": {},
 "experience": [],
 "education": [],
 "skills": []
}

Illustrative subset with empty values. Not a live parse or the full response envelope.

Accepted files
PDFDOCXDOCTXTPNGJPGJPEG

Up to 10 MiB per file. Batch and project limits apply.

Parser output

The fields your application needs.

The schema endpoint reports the available top-level field groups. Read the returned data, handle missing values and preserve unknown fields.

Explore the output contract
Contact details
contact
Resume summary
summary
Work history
experience
Education
education
Skills
skills
Languages
languages
Certifications
certifications

Integration workflow

Submit. Follow. Retrieve.

Read the parsing guide
01

Submit your files

Send multipart files directly, or declare an upload session and upload each file to its signed URL.

POST /v1/resumes/parseAdmission returns 202, or 200 for a completed or cached result.
02

Follow the job

Store data.job_id. Poll the job or receive signed webhook events, and handle per-document outcomes.

GET /v1/parse-jobs/{job_id}Cancellation stops work and retains completed documents.
03

Retrieve the results

Fetch parsing data separately. Follow next_cursor whenever has_more is true.

GET /v1/parse-jobs/{job_id}/resultsInternal raw text, storage keys and provider traces are excluded.

Start integrating

Your first API request.

Create a project API key in the console and send it from your backend. These examples submit a local PDF.

Set CVAULT_API_URL to https://cvault.tech and CVAULT_API_KEY to your project key.

Complete the quickstart
curl -sS -X POST "$CVAULT_API_URL/v1/resumes/parse" \
  -H "x-api-key: $CVAULT_API_KEY" \
  -H "Idempotency-Key: first-resume-0001" \
  -F "files[]=@resume.pdf;type=application/pdf"

Keep the idempotency key when retrying this submission. The response returns a job; use the workflow above to read its results.

Integration controls

Handle more than the happy path.

Security & data handling

Project-scoped keys

Separate project and environment access. Keep your API keys on your server.

Read the guide

Retry with idempotency

Keep the same key for the same submission. Changed content with that key returns a conflict.

Read the guide

Signed webhooks

Receive job events over HTTPS and verify their HMAC-SHA256 signatures on your receiver.

Read the guide

Explicit job erasure

Request source, result and cache cleanup. Accepted erasure blocks result reads; poll until erased.

Read the guide

Questions

Before you integrate.

For deployment requirements or a larger workload, talk to us.

Can I send more than one resume?

Yes. Direct multipart submission accepts multiple files. Upload sessions separate file declaration, whole-file uploads and job admission for larger batches. File, batch and project limits still apply.

How do I know when a job is finished?

Use the returned data.job_id to poll the job status, or subscribe to signed webhook events. Fetch results separately and follow next_cursor when has_more is true. Handle each document's outcome, including partial failures.

Does the API return confidence and evidence for every field?

Do not assume it does. The standard public submission contract does not expose a selectable none/compact/full evidence response mode. A processing workspace can add its selected-field projection, evidence and validation result; use the workspace guide for that contract.

How is parsing charged?

Admitted files reserve organization parser credits: native processing costs 1 credit and OCR costs 3. Successful files settle the reservation; failed or cancelled files release it. Check the pricing page for current pack availability.

Build with CVault

Connect parsing to your application.

Start with the API reference, or discuss the requirements for your integration.