API reference
Explore resume parsing, evidence-based match analysis, resume checking, candidate ranking, and recruiter communication endpoints.
RapidAPI base URL
https://hiresignal-api.p.rapidapi.comPublic examples use the RapidAPI gateway. Include `X-RapidAPI-Key` and `X-RapidAPI-Host: hiresignal-api.p.rapidapi.com` on every RapidAPI request.
Endpoints
Which analysis endpoint should I use?
Use this when you have resume files. Send PDF, DOC, DOCX, or TXT files with a job description, and the API handles parsing before analysis.
POST /api/v1/analyze-match/files
Use this when resume text is already extracted. Send up to 15 resume texts with one job description and receive ranked match results.
POST /api/v1/analyze-batch
Health Check
GET /api/health
{ "status": "ok", "service": "HireSignal API" }Resume Text Extraction
PDF, DOC, DOCX, and TXT files are sent as multipart form data to the backend route below. The API validates file type, file size, and file count before extracting text server-side.
POST /api/extract-resume-text
curl
curl -X POST https://hiresignal-api.p.rapidapi.com/api/extract-resume-text \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: hiresignal-api.p.rapidapi.com" \
-F "files=@resume.pdf" \
-F "files=@portfolio.docx" \
-F "files=@resume.doc" \
-F "files=@resume.txt"JavaScript
const formData = new FormData();
formData.append("files", resumePdf);
formData.append("files", portfolioDocx);
const response = await fetch("https://hiresignal-api.p.rapidapi.com/api/extract-resume-text", {
method: "POST",
headers: {
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "hiresignal-api.p.rapidapi.com"
},
body: formData
});
const parsed = await response.json();Response
{
"text": "Resume 1: alex-morgan.pdf\nAlex Morgan is an operations analyst...",
"files": [
{
"fileName": "alex-morgan.pdf",
"text": "Alex Morgan is an operations analyst...",
"characterCount": 2840
}
]
}Resume Job Match Endpoint
POST /api/v1/analyze-match
Compares a resume against any job description and returns structured hiring insights for candidate screening, ranking, and interview preparation. Match responses include score confidence, requirement-level evidence, missing requirements, and ambiguity warnings to support recruiter review.
Request
{
"resumeText": "Alex Morgan\nProfessional Summary\nOperations analyst with 5 years of experience improving reporting workflows...\nSkills\nExcel, CRM reporting, SQL basics",
"jobDescription": "We are hiring an Operations Analyst to manage KPI reporting, analyze CRM data, and improve business processes."
}Response
{
"overallScore": 86,
"confidenceScore": 78,
"recommendation": "Strong Match",
"scoreRationale": "The candidate has direct evidence for most core operations requirements, while advanced SQL depth is not clearly supported.",
"summary": "The candidate aligns well with the operations analyst role, especially in reporting, CRM data quality, and process improvement.",
"strengths": [
"Relevant operations experience",
"Strong reporting background"
],
"weaknesses": [
"Limited evidence of advanced SQL"
],
"missingSkills": [
"Advanced SQL"
],
"riskFlags": [],
"matchedRequirements": [
{
"requirement": "CRM reporting",
"evidence": "Resume describes ownership of CRM reporting and KPI dashboards.",
"strength": "strong"
}
],
"unmatchedRequirements": [
"Advanced SQL"
],
"ambiguityWarnings": [
"Resume mentions SQL basics but does not show query complexity or production use."
],
"interviewQuestions": [
"Describe a KPI dashboard you built or maintained."
],
"candidate": {
"name": "Alex Morgan",
"email": "alex@example.com",
"phone": "+1 555 0100",
"skills": [
"Excel",
"CRM reporting",
"Process improvement"
],
"yearsOfExperience": 5
}
}curl
curl -X POST https://hiresignal-api.p.rapidapi.com/api/v1/analyze-match \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: hiresignal-api.p.rapidapi.com" \
-d '{
"resumeText": "Alex Morgan\nProfessional Summary\nOperations analyst with 5 years of experience improving reporting workflows...\nSkills\nExcel, CRM reporting, SQL basics",
"jobDescription": "We are hiring an Operations Analyst to manage KPI reporting, analyze CRM data, and improve business processes."
}'JavaScript
const response = await fetch("https://hiresignal-api.p.rapidapi.com/api/v1/analyze-match", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "hiresignal-api.p.rapidapi.com"
},
body: JSON.stringify({
resumeText,
jobDescription
})
});
const analysis = await response.json();File Match Analysis Endpoint
POST /api/v1/analyze-match/files
Upload resume files and a job description in one request. The API extracts text server-side, analyzes the combined resume content, and returns structured match results.
JavaScript
const formData = new FormData();
formData.append("jobDescription", jobDescription);
formData.append("files", resumePdf);
const response = await fetch("https://hiresignal-api.p.rapidapi.com/api/v1/analyze-match/files", {
method: "POST",
headers: {
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "hiresignal-api.p.rapidapi.com"
},
body: formData
});
const analysis = await response.json();Batch Analysis Endpoint
POST /api/v1/analyze-batch
Analyze up to 15 resume texts against one job description and return results ordered by match score.
Request
{
"jobDescription": "We are hiring an Operations Analyst to manage KPI reporting and CRM data quality.",
"resumes": [
{
"id": "candidate_001",
"fileName": "alex-morgan.txt",
"resumeText": "Alex Morgan\nProfessional Summary\nOperations analyst with 5 years of reporting experience..."
}
]
}Response
{
"count": 1,
"results": [
{
"id": "candidate_001",
"fileName": "alex-morgan.txt",
"analysis": {
"overallScore": 90,
"confidenceScore": 82,
"recommendation": "Strong Match",
"scoreRationale": "The candidate directly supports most required operations analytics responsibilities.",
"summary": "Candidate is highly aligned with the target role.",
"strengths": [
"KPI reporting",
"CRM data quality"
],
"weaknesses": [
"Limited SQL depth"
],
"missingSkills": [
"Advanced SQL"
],
"riskFlags": [],
"matchedRequirements": [
{
"requirement": "KPI reporting",
"evidence": "Resume lists KPI dashboard ownership.",
"strength": "strong"
}
],
"unmatchedRequirements": [
"Advanced SQL"
],
"ambiguityWarnings": [
"SQL evidence is limited."
],
"interviewQuestions": [
"Describe your reporting workflow."
],
"candidate": {
"name": "Alex Morgan",
"email": "alex@example.com",
"phone": "+1 555 0100",
"skills": [
"Excel",
"CRM reporting"
],
"yearsOfExperience": 5
}
}
}
]
}Resume Checker Endpoint
POST /api/v1/resume-checker
Performs recruiter-grade resume analysis for ATS compatibility, readability, professionalism, keyword coverage, structure, and hiring competitiveness.
Request
{
"resumeText": "Full resume text..."
}Response
{
"resumeScore": 82,
"atsScore": 86,
"readabilityScore": 80,
"professionalismScore": 88,
"summary": "The resume is competitive but should include stronger measurable achievements.",
"strengths": [
"Clear role progression",
"Relevant operations skills"
],
"weaknesses": [
"Limited quantified impact"
],
"criticalIssues": [
"Professional summary is too generic"
],
"improvementRecommendations": [
"Add metrics to recent bullet points"
],
"missingSections": [
"Certifications"
],
"keywordSuggestions": [
"KPI reporting",
"CRM analytics"
],
"grammarIssues": [
"Inconsistent verb tense in one experience bullet"
],
"redundancies": [
"Repeated use of responsible for"
],
"recommendedSkills": [
"Advanced Excel",
"SQL"
],
"recommendedCertifications": [
"Google Data Analytics Certificate"
],
"bulletPointImprovements": [
"Replace task-based bullets with outcome-based bullets"
],
"optimizedProfessionalSummary": "Operations analyst with 5+ years of experience improving KPI reporting, CRM data quality, and cross-functional business processes.",
"optimizedBulletExamples": [
"Improved reporting turnaround by 32% by standardizing weekly KPI dashboards."
]
}curl
curl -X POST https://hiresignal-api.p.rapidapi.com/api/v1/resume-checker \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: hiresignal-api.p.rapidapi.com" \
-d '{
"resumeText": "Full resume text..."
}'JavaScript
const response = await fetch("https://hiresignal-api.p.rapidapi.com/api/v1/resume-checker", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "hiresignal-api.p.rapidapi.com"
},
body: JSON.stringify({ resumeText })
});
const analysis = await response.json();Job Requirements Endpoint
POST /api/v1/extract-job-requirements
Converts a job description into structured hiring requirements for screening, matching, and workflow automation.
Request
{
"jobDescription": "Full job description..."
}Response
{
"roleTitle": "Operations Analyst",
"seniorityLevel": "Mid-level",
"employmentType": "Not specified",
"locationRequirements": [],
"requiredSkills": [
"Excel",
"CRM reporting",
"Process improvement"
],
"preferredSkills": [
"SQL",
"Dashboard reporting"
],
"responsibilities": [
"Manage KPI reporting",
"Analyze CRM data"
],
"requiredExperience": [
"Experience in operations or business analytics"
],
"educationRequirements": [],
"certifications": [],
"toolsAndTechnologies": [
"Excel",
"CRM"
],
"softSkills": [
"Stakeholder communication"
],
"keywords": [
"KPI reporting",
"CRM data",
"process improvement"
],
"summary": "The role focuses on reporting, CRM analysis, and operational process improvement."
}Candidate Ranking Endpoint
POST /api/v1/rank-candidates
Ranks existing match analyses and returns recruiter-friendly rationale, interview focus areas, and a hiring recommendation.
Request
{
"candidates": [
{
"id": "candidate_001",
"fileName": "alex-morgan.txt",
"analysis": {
"overallScore": 86,
"confidenceScore": 78,
"recommendation": "Strong Match",
"scoreRationale": "The candidate has direct evidence for most core operations requirements, while advanced SQL depth is not clearly supported.",
"summary": "The candidate aligns well with the operations analyst role, especially in reporting, CRM data quality, and process improvement.",
"strengths": [
"Relevant operations experience",
"Strong reporting background"
],
"weaknesses": [
"Limited evidence of advanced SQL"
],
"missingSkills": [
"Advanced SQL"
],
"riskFlags": [],
"matchedRequirements": [
{
"requirement": "CRM reporting",
"evidence": "Resume describes ownership of CRM reporting and KPI dashboards.",
"strength": "strong"
}
],
"unmatchedRequirements": [
"Advanced SQL"
],
"ambiguityWarnings": [
"Resume mentions SQL basics but does not show query complexity or production use."
],
"interviewQuestions": [
"Describe a KPI dashboard you built or maintained."
],
"candidate": {
"name": "Alex Morgan",
"email": "alex@example.com",
"phone": "+1 555 0100",
"skills": [
"Excel",
"CRM reporting",
"Process improvement"
],
"yearsOfExperience": 5
}
}
}
]
}Response
{
"summary": "Alex Morgan is the strongest available candidate based on score, relevant operations experience, and reporting alignment.",
"topCandidate": "candidate_001",
"rankedCandidates": [
{
"id": "candidate_001",
"fileName": "alex-morgan.txt",
"rank": 1,
"candidateName": "Alex Morgan",
"overallScore": 90,
"recommendation": "Strong Match",
"rationale": "Strong fit for operations reporting and CRM data quality responsibilities.",
"keyStrengths": [
"KPI reporting",
"CRM data quality"
],
"keyGaps": [
"Advanced SQL"
],
"interviewFocus": [
"Reporting workflow",
"Data quality process"
]
}
],
"hiringRecommendation": "Prioritize Alex Morgan for an interview."
}Candidate Email Generation Endpoint
POST /api/v1/generate-candidate-email
Generates professional recruiter emails for acceptance, rejection, interview invitation, next steps, application received, and hold decisions. The response is plain text and structured for review before sending.
Request
{
"candidateName": "Alex Morgan",
"candidateEmail": "alex@example.com",
"companyName": "Acme Operations",
"roleTitle": "Operations Analyst",
"decision": "interview_invite",
"tone": "professional",
"context": {
"strengths": [
"KPI reporting",
"CRM data quality"
],
"nextStep": "Schedule a 30-minute interview with the hiring team.",
"recruiterName": "Jordan Lee",
"schedulingLink": "https://cal.example.com/jordan"
}
}Response
{
"subject": "Next steps for your Operations Analyst application",
"previewText": "We would like to invite you to the next stage.",
"body": "Hi Alex,\n\nThank you for your interest in the Operations Analyst role at Acme Operations. We were impressed by your experience with KPI reporting and CRM data quality.\n\nWe would like to invite you to a 30-minute interview with the hiring team. Please use this link to choose a convenient time: https://cal.example.com/jordan\n\nBest,\nJordan Lee"
}Candidate Email Delivery Endpoint
POST /api/v1/send-candidate-email
Sends a reviewed candidate email through the configured email provider. Delivery requires server-side email configuration and a verified sender.
Request
{
"to": "alex@example.com",
"subject": "Next steps for your Operations Analyst application",
"body": "Hi Alex,\n\nThank you for your interest...",
"replyTo": "recruiting@example.com"
}Response
{
"id": "resend_email_id",
"status": "sent"
}OpenAPI Specification
GET /api/openapi.json
Machine-readable endpoint metadata for developer tooling, SDK generation, and API publishing workflows.
Error Responses
Response shape
{
"error": "Resume text must be at least 120 characters.",
"code": "BAD_REQUEST",
"status": 400
}
{
"error": "Rate limit exceeded. Please wait or upgrade your RapidAPI plan.",
"code": "RATE_LIMITED",
"status": 429
}
{
"error": "Analysis failed. Please try again.",
"code": "UPSTREAM_AI_ERROR",
"status": 500
}
{
"error": "Email provider rejected the request.",
"code": "UPSTREAM_EMAIL_ERROR",
"status": 502
}