apyhub
ARTIFICIAL INTELLIGENCE · HR

Skill Based Resume Screening API

What it does

Resume Screening lets you send a resume as plain text or upload a PDF or DOCX file, then returns a screening result you can use in your hiring flow. Provide resume_text for text-based screening, or upload file for document-based screening. Both endpoints also accept min_years, and the text endpoint accepts required_skills as an array while the upload endpoint accepts required_skills as a comma-separated string.

Use Resume Screening when you need a fast first pass on applicants before a recruiter reviews the full profile. A typical workflow is filtering resumes against a role requirement set, checking for minimum experience, or flagging candidates whose resumes mention the skills you care about. Returns a structured JSON object containing the screening results, extracted information, evaluation details, request metadata, and attribution.

This fits into applicant tracking systems, internal hiring tools, and lightweight qualification pipelines where you want to automate the first review step without building document handling yourself. Send the resume, set your thresholds, and use the returned screening output to route candidates forward or hold them for manual review.

▣ ENDPOINT 01 / 02
POST
Screen resume
https://api.eu.apyhub.com/dosvak/screen-resume

QUICKSTART

GUIDE

Quickstart

Send a resume text to screen it against the minimum years of experience and required skills you provide.

curl -X POST "https://api.eu.apyhub.com/dosvak/screen-resume" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "resume_text": "Software engineer with 6 years of experience building web applications, APIs, and data pipelines.",
    "min_years": 5,
    "required_skills": ["Python", "APIs"]
  }'

What you'll get back

Returns a structured JSON object containing the requested results and any additional metadata produced during processing.

{
  "score": 100,
  "recommendation": "strong_yes",
  "matched_required_skills": [
    "sql"
  ],
  "missing_required_skills": [],
  "skills_coverage_pct": 100,
  "years_requirement_met": true,
  "parsed_resume": {
    "name": "Jane Doe",
    "estimated_years_experience": 8,
    "skills": [
      "python",
      "sql",
      "fastapi",
      "docker"
    ]
  },
  "llm_assessment": {
    "fit_label": "strong_yes",
    "strengths": [
      "Python",
      "SQL"
    ],
    "interview_focus": [
      "REST APIs",
      "ETL pipelines"
    ]
  }
}
TRY ITLIVE · 100 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.
ScreenInput*
Required Skills

About this endpoint

What it does

Screens a resume using the submitted resume text and optional screening criteria. It accepts the resume content plus optional minimum years and required skills, then returns a success response whose detailed shape is not yet captured in the schema.

Request Body

ParameterTypeMandatoryDescription
min_yearsIntegerNoMinimum years of experience to screen against. Default: 0. Must be between 0 and 60 inclusive.
resume_textStringYesResume content to evaluate. Must be at least 20 characters long.
required_skillsString ArrayNoSkills that should be present in the resume.

Response

The endpoint returns a structured JSON object containing the screening score, recommendation, matched and missing required skills, skills coverage percentage, years-of-experience evaluation, parsed resume information, AI assessment details, and attribution metadata.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 02 / 02
POST
Screen resume upload
https://api.eu.apyhub.com/dosvak/screen-resume/upload

QUICKSTART

GUIDE

Quickstart

Upload a resume file to screen it for matching skills.

curl -X POST "https://api.eu.apyhub.com/dosvak/screen-resume/upload" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/resume.pdf"

What you'll get back

eturns a structured JSON object containing the screening results, extracted information, evaluation details, request metadata, and attribution.

{
  "score": 20,
  "recommendation": "no",
  "matched_required_skills": [],
  "missing_required_skills": [],
  "skills_coverage_pct": 0,
  "years_requirement_met": true,
  "parsed_resume": {
    "name": "Jane Doe Resume",
    "estimated_years_experience": 8,
    "skills": [
      "python",
      "sql",
      "fastapi",
      "docker"
    ]
  },
  "llm_assessment": {
    "fit_label": "strong_yes",
    "strengths": [
      "Python",
      "SQL"
    ],
    "interview_focus": [
      "ETL pipelines",
      "application deployment"
    ]
  },
  "input_mode": "file",
  "file_name": "Jane_Doe_Resume.docx",
  "file_type": "application/octet-stream"
}
TRY ITLIVE · 100 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.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Resume file (.pdf or .docx)
Comma-separated skills, e.g. python,sql,fastapi

About this endpoint

What it does

Uploads a resume file (.pdf or .docx) and eturns a structured JSON object containing the screening results, extracted information, evaluation details, request metadata, and attribution.

Request Body

ParameterTypeMandatoryDescription
fileStringYesResume file upload. Expected file format: .pdf or .docx.
min_yearsIntegerNoMinimum years of experience to screen for. Default: 0. Minimum: 0. Maximum: 60.
required_skillsStringNoComma-separated skills, for example python,sql,fastapi.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ 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.