Documents and Resume Intake
Resume ingestion and record document storage are different workflows. Do not send an identity scan or an arbitrary attachment to the resume extraction endpoint.
Upload a resume for extraction
POST /v1/documents accepts multipart field files. The handler processes the first file, so send one resume per request. Resume intake accepts PDF and DOCX within the current resume upload limit.
curl -X POST 'https://api.vitae.ai/v1/documents' \
-H 'Authorization: Bearer <token>' \
-F 'files=@/path/to/resume.pdf'
Let the HTTP client supply the multipart boundary. This endpoint starts the resume extraction flow; it is not a general candidateId plus type=cv attachment API.
Read the returned document and extraction state. Extraction can propose identity, experience, education and skills data, but a successful upload is not proof that an existing candidate’s profile has been updated.
Review extraction changes
Use the application’s extraction review to inspect the proposed changes. The document API exposes:
POST /v1/documents/<document-id>/extraction/applyto apply an authorized extraction.POST /v1/documents/<document-id>/extraction/rejectto reject it.PATCH /v1/documents/<document-id>/cancelto cancel eligible extraction work.GET /v1/documents/<document-id>/contentto retrieve authorized document content.
Apply and reject are mutations. Check the document, target record and current state before executing them, then verify the returned outcome.
Attach ordinary files to a record
Use the candidate or other record’s Documents surface and its record document API for ordinary attachments. Those routes have separate authorization, file-type and size rules. Candidate resume replacement also has its own resume route and review behavior.
Do not assume a generic application-document attachment endpoint exists or that every attachment is parsed into a profile. Use the API reference for the current record-specific contract and the Candidates guide for the UI workflow.