apyhub
ARTIFICIAL INTELLIGENCE · HR

Resume Screening API

What it does

Resume Screening scores resumes against a job title, then returns a decision-ready assessment you can use in hiring workflows. Send a jobTitle and a resumeContent string for a single candidate, or send a jobTitle plus an array of resumes for bulk ranking.

For a single resume, Resume Screening returns score, verdict, strengths, gaps, integrityNotes, and a nested securityReport with flags and riskLevel. That gives you both fit signals and a quick check for suspicious or low-trust content in the same response.

For bulk screening, the API returns rankedCandidates, where each item includes an id, score, and summary. Use it to sort applicants for a role, shortlist candidates before manual review, or add a scoring layer to an internal recruiting tool.

The responses are structured for automation, so you can feed them into applicant tracking systems, review dashboards, or hiring pipelines without extra parsing logic.

▣ ENDPOINT 01 / 02
POST
Screen Resume
http://localhost:8080/namastesumalya/resume-screening-api
QUICKSTARTGUIDE

Quickstart

Send a resume and job title to get a screening result.

curl -X POST "http://localhost:8080/namastesumalya/resume-screening-api" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jobTitle":"Software Engineer","resumeContent":"Experienced software engineer with 5+ years building web applications in JavaScript, TypeScript, and Python."}'

What you'll get back

Returns a JSON object with score as an integer, verdict as a string, strengths and gaps as arrays of strings, integrityNotes as a string, and securityReport as an object with flags and riskLevel.

{
  "score": 82,
  "verdict": "Strong match",
  "strengths": ["Relevant software engineering experience", "Modern web stack"],
  "integrityNotes": "Resume appears consistent with the job title.",
  "securityReport": {
    "flags": [],
    "riskLevel": "low"
  },
  "gaps": ["No cloud infrastructure experience mentioned"]
}
TRY ITLIVE · 300 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body

About this endpoint

What it does

Screens a resume against a job title and returns a structured assessment of the candidate fit and review signals. The request body must include jobTitle and resumeContent; the response returns scoring, verdict, strengths, gaps, integrity notes, and a nested security report.

Request Body

ParameterTypeMandatoryDescription
jobTitleStringYesThe job title to screen the resume against.
resumeContentStringYesThe resume text to evaluate.

Response

Returns a JSON object with six top-level fields: score as an integer, verdict as a string, strengths as a string array, integrityNotes as a string, securityReport as an object, and gaps as a string array.

ParameterTypeMandatoryDescription
scoreIntegerYesThe screening score.
verdictStringYesThe overall screening verdict.
strengthsString ArrayYesA list of strengths identified in the resume.
integrityNotesStringYesNotes related to resume integrity.
securityReportObjectYesSecurity-related review output with flags and riskLevel.
securityReport.flagsString ArrayYesA list of security flags.
securityReport.riskLevelStringYesThe security risk level.
gapsString ArrayYesA list of gaps identified in the resume.

Body

Name
Type
Description
bodyOPTIONAL
object
▣ ENDPOINT 02 / 02
POST
Screen Resume in Bulk
http://localhost:8080/namastesumalya/resume-screening-api/bulk
QUICKSTARTGUIDE

Quickstart

Send a job title and a list of resumes to get candidates ranked for that role.

curl -X POST "http://localhost:8080/namastesumalya/resume-screening-api/bulk" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "jobTitle": "Software Engineer",
    "resumes": [
      "Senior backend engineer with 8 years of experience in Node.js, Python, PostgreSQL, and AWS.",
      "Product designer with 5 years of experience in Figma, user research, and design systems."
    ]
  }'

What you'll get back

Returns a JSON object with a rankedCandidates array. Each item in the array is an object with id integer, score integer, and summary string fields.

{
  "rankedCandidates": [
    {
      "id": 0,
      "score": 0.95,
      "summary": "Highly qualified candidate with 8 years of experience, including professional Python development, backend architecture, and cloud infrastructure proficiency."
    },
    {
      "id": 1,
      "score": 0.1,
      "summary": "Candidate profile is focused on product design and UI/UX with no relevant experience in software engineering or Python development."
    }
  ],
  "_cacheInfo": {
    "cacheEnabled": true,
    "cachedEntriesCount": 0,
    "note": "Context caching applied to 2 candidates. Estimated 75% cost reduction on cached content.",
    "estimatedTokenSavings": 0
  }
}
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body
resumes*

About this endpoint

What it does

Screens multiple resumes against a job title and returns a ranked list of candidate results.

Request Body

ParameterTypeMandatoryDescription
jobTitleStringYesThe job title used to evaluate the resumes.
resumesString ArrayYesAn array of resume text strings to be screened in bulk.

Response

Returns a JSON object with a rankedCandidates array field. Each item in the array is an object containing an id integer, a score integer, and a summary string.

ParameterTypeMandatoryDescription
rankedCandidatesObject ArrayYesThe ranked candidate results. Each object includes id, score, and summary.
rankedCandidates[].idIntegerYesThe candidate identifier.
rankedCandidates[].scoreIntegerYesThe candidate's score.
rankedCandidates[].summaryStringYesA summary for the candidate.

Body

Name
Type
Description
bodyOPTIONAL
object
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.