Match candidates to jobs, rank applicants, analyse resumes, detect skill gaps, and generate cover letters — all via a single REST API. Scores delivered in under 3 seconds.
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /v1/auth/usage |
Today's request count and token usage |
API Key |
| GET | /v1/auth/history |
Recent request log — endpoint, status, latency, tokens |
API Key |
| POST | /v1/match |
Match a candidate to a job — returns score, strengths, missing skills, recommendations |
API Key |
| POST | /v1/match/pdf |
Same as /v1/match but accepts a PDF file upload instead of resume text |
API Key |
| POST | /v1/match/cover-letter |
Generate a personalised cover letter for a candidate + job pair |
API Key |
| POST | /v1/rank-candidates |
Rank up to 50 candidates for a job — batch scored and sorted by fit |
API Key |
| POST | /v1/analyze-resume |
ATS score, format, content, detected skills, experience estimate, improvements |
API Key |
| POST | /v1/analyze-resume/pdf |
Resume analysis from a PDF upload — text extraction handled server-side |
API Key |
| POST | /v1/skill-gap |
Compare resume against a target role — missing skills, learning priorities, readiness score |
API Key |
| GET | /health |
Liveness + database connectivity check |
Public |
// Subscribe on RapidAPI — no registration step needed const result = await fetch('https://ai-job-match1.p.rapidapi.com/v1/match', { method: 'POST', headers: { 'X-RapidAPI-Key': 'your-rapidapi-key', 'X-RapidAPI-Host': 'ai-job-match1.p.rapidapi.com', 'Content-Type': 'application/json' }, body: JSON.stringify({ candidate: { name: 'Jane Dev', resume_text: '5 years React developer, led team of 4, built Node.js APIs...', skills: ['React', 'Node.js', 'TypeScript'], experience_years: 5 }, job: { title: 'Senior Frontend Developer', description: 'Looking for React + TypeScript expert with 3+ years...' } }) }).then(r => r.json()); console.log(result.match_score); // 92 console.log(result.match_level); // "EXCELLENT"
import requests # Subscribe on RapidAPI — no registration step needed BASE = "https://ai-job-match1.p.rapidapi.com/v1" headers = { "X-RapidAPI-Key": "your-rapidapi-key", "X-RapidAPI-Host": "ai-job-match1.p.rapidapi.com" } result = requests.post(f"{BASE}/match", headers=headers, json={ "candidate": { "name": "Jane Dev", "resume_text": "5 years React developer, led team of 4, built Node.js APIs...", "skills": ["React", "Node.js", "TypeScript"], "experience_years": 5 }, "job": { "title": "Senior Frontend Developer", "description": "Looking for React + TypeScript expert with 3+ years..." } }).json() print(result["match_score"]) # 92 print(result["match_level"]) # EXCELLENT print(result["missing_skills"]) # ['PostgreSQL', 'Docker']
# Subscribe on RapidAPI — no registration step needed # Match candidate to job curl -X POST https://ai-job-match1.p.rapidapi.com/v1/match \ -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \ -H "X-RapidAPI-Host: ai-job-match1.p.rapidapi.com" \ -H "Content-Type: application/json" \ -d '{"candidate":{"name":"Jane Dev","resume_text":"5 years React developer...","skills":["React","Node.js"],"experience_years":5},"job":{"title":"Senior Frontend Developer","description":"Looking for React expert with 3+ years..."}}' # Analyse a resume curl -X POST https://ai-job-match1.p.rapidapi.com/v1/analyze-resume \ -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \ -H "X-RapidAPI-Host: ai-job-match1.p.rapidapi.com" \ -H "Content-Type: application/json" \ -d '{"resume_text":"6 years software engineer, React, TypeScript, Node.js..."}' # Skill gap to target role curl -X POST https://ai-job-match1.p.rapidapi.com/v1/skill-gap \ -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \ -H "X-RapidAPI-Host: ai-job-match1.p.rapidapi.com" \ -H "Content-Type: application/json" \ -d '{"resume_text":"3 years analyst, Excel, SQL, Tableau...","target_role":"Data Scientist"}'
"language" field (e.g. "es", "fr", "de") and the API will analyse the content in that language. JSON keys and skill names are always returned in English for consistency.POST /v1/match/pdf and POST /v1/analyze-resume/pdf accept a multipart file upload. Text extraction is handled server-side — only PDF files are accepted.