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…).
Try it out
€5/ 10 analyses

Test pricing — not our production rates.
Volume contracts start well below this.

  • Instant access, no approval needed
  • Full JSON output on every parse
  • Credits never expire
  • Production pricing is among the lowest on the market
Try the product →

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