Get started
Quickstart
Create an API key, check connectivity and parse a resume with cURL, Python or TypeScript in about five minutes.
- 1
Create an API key
Sign up (the Free plan includes 50 credits a month), then create a key in Dashboard → API keys. Store it in an environment variable on your server:
Shell export HIRELAYER_API_KEY="sk_xxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - 2
Check connectivity
The health check needs no key and costs nothing:
curl https://onlineresumeparser.com/api/v1/healthimport requests response = requests.get( "https://onlineresumeparser.com/api/v1/health", timeout=10, ) response.raise_for_status() data = response.json() print(data["status"])const response = await fetch('https://onlineresumeparser.com/api/v1/health', { signal: AbortSignal.timeout(10_000), }) if (!response.ok) { throw new Error(`HireLayer ${response.status}: ${await response.text()}`) } const data = await response.json() console.log(data.status)Response { "status": "healthy", "service": "HireLayer API", "skills_loaded": 664, "timestamp": "2026-10-01T09:30:12.417Z" } - 3
Parse a resume
Send any resume file as
file. Python needspip install requests; TypeScript runs on Node.js 18+ with no dependency: save it asparse.mtsand runnpx tsx parse.mts.curl -X POST https://onlineresumeparser.com/api/v3/parser \ -H "X-API-Key: $HIRELAYER_API_KEY" \ -F "[email protected];type=application/pdf" \ -F "application_id=app_123"import os import requests with open("resume.pdf", "rb") as file: response = requests.post( "https://onlineresumeparser.com/api/v3/parser", headers={"X-API-Key": os.environ["HIRELAYER_API_KEY"]}, files={"file": ("resume.pdf", file, "application/pdf")}, data={ "application_id": "app_123", }, timeout=150, ) response.raise_for_status() data = response.json() print(data["info_candidate"]["full_name"])import { readFile } from 'node:fs/promises' const form = new FormData() form.append( 'file', new Blob([await readFile('resume.pdf')], { type: 'application/pdf' }), 'resume.pdf' ) form.append('application_id', 'app_123') const response = await fetch('https://onlineresumeparser.com/api/v3/parser', { method: 'POST', headers: { 'X-API-Key': process.env.HIRELAYER_API_KEY!, }, body: form, signal: AbortSignal.timeout(150_000), }) if (!response.ok) { throw new Error(`HireLayer ${response.status}: ${await response.text()}`) } const data = await response.json() console.log(data.info_candidate.full_name)The call is synchronous and usually takes about 35 seconds. A successful parse costs 1 credit.
- 4
Read the result
Response (excerpt) { "status": "success", "request_id": "6f1c2a9e-4b7d-4c3e-9a51-2f8d7e6b1c04", "info_candidate": { "full_name": "Alex Morgan", "email": "[email protected]", "job_title": "Senior Software Engineer", "experience_level": "5 to 10 years" }, "work_experiences": […], "skills": […] }Every field is described in the CV Extract reference. Errors return a non-2xx status with an
errormessage: see Errors and retries.