REST API Β· JSON output

Parse any resume into structured JSON

Upload a PDF, get back a clean, structured JSON with candidate info, work experience, education, skills and languages. One endpoint, zero friction.

⚑ Results in secondsπŸ”’ Token-based authπŸ“„ PDF up to 20MB
response.json
{
  "basics": {
    "name": "Alice Dupont",
    "email": "[email protected]",
    "phone": "+33 6 12 34 56 78",
    "location": {
      "city": "Paris",
      "country": "France"
    },
    "summary": "Senior Frontend Engineer..."
  },
  "experiences": [
    {
      "company": "Acme Corp",
      "position": "Lead Engineer",
      "startDate": "2021-03",
      "endDate": null,
      "isCurrent": true
    }
  ],
  "skills": ["TypeScript", "Kotlin", "Vue"],
  "languages": ["French", "English"]
}

Three steps to structured data

No SDK required. A single HTTP request is all it takes to turn a raw PDF into clean, machine-readable JSON.

01
πŸ”‘

Authenticate

Pass your Bearer token in the Authorization header. Tokens are scoped per account and tracked for usage.

Authorization: Bearer <your-token>
02
πŸ“€

Upload the PDF

Send a multipart/form-data POST request with the PDF file as the "file" field. Up to 20 MB, any language.

POST /resume
03
✨

Get structured JSON

The API extracts basics, work experiences, education, skills, and languages β€” ready to consume in any system.

200 OK β†’ { "basics": {...}, ... }

Response shape at a glance

Every field of the parsed resume, its type, and whether it is guaranteed to be present.

FieldTypeRequiredDescription
β€Ί basicsobjectyesCore candidate information
basics.namestringyesFull name
basics.emailstring | nulloptionalEmail address
basics.phonestring | nulloptionalPhone number
basics.summarystring | nulloptionalProfessional summary or objective
β€Ί basics.locationobject | nulloptionalGeographic location
β€Ί experiencesarrayoptionalWork experience entries (defaults to [])
experiences.companystringyesCompany or organization name
experiences.positionstringyesJob title or role
experiences.startDatestring | nulloptionalStart date β€” format yyyy-MM
experiences.endDatestring | nulloptionalEnd date β€” format yyyy-MM, null means current position
experiences.isCurrentbooleanyestrue when endDate is null (position still ongoing)
experiences.summarystring | nulloptionalRole description or achievements
experiences.locationobject | nulloptionalLocation of this role
β€Ί educationarrayoptionalEducation entries (defaults to [])
education.institutionstringyesSchool or university name
education.areastring | nulloptionalField of study
education.studyTypestring | nulloptionalDegree or qualification type
education.endDatestring | nulloptionalGraduation date β€” format yyyy-MM, null means ongoing
education.isCurrentbooleanyestrue when endDate is null (education still ongoing)
skillsstring[]optionalList of technical or soft skills
languagesstring[]optionalList of spoken or written languages

One endpoint, any language

A single POST to /resume with your PDF as multipart form data.

curl -X POST https://api.resumalchemy.com/resume \
  -H "Authorization: Bearer <your-token>" \
  -F "file=@candidate_cv.pdf"
POST
/resume

Request

Content-Typemultipart/form-data
AuthorizationBearer <token>
Body fieldfile (PDF, max 20 MB)

Response codes

200
OK β€” Parse succeeded β€” body contains the Resume JSON.
401
Unauthorized β€” Missing or invalid Authorization header.
403
Forbidden β€” Token exists but has insufficient permissions.
422
Unprocessable β€” The file could not be parsed (corrupt PDF, no text layer…).

Need a dedicated plan?

Tell us about your use case. We'll get back to you with pricing tailored to your volume, SLA requirements, and integration needs.

  • βœ“ 100% European solution β€” data processed and hosted in Europe
  • βœ“ One of the most competitive prices on the market
  • βœ“ GDPR-compliant by design, no data resold or retained