apyhub
ARTIFICIAL INTELLIGENCE · HR

Resume/CV Job Match Score API

What it does

Resume Job Match Score compares a resume or CV against a job description and returns structured match results. Send a resume file plus the job text, and you get back a job ID and a status URL to poll while the analysis runs.

Use the POST endpoint to submit a resume file in PDF, DOCX, TXT, or another binary file format, along with the full job description in plain text. You can also set a language for the explanations. The service processes the submission asynchronously, which makes it suitable for batch screening or ATS workflows where you do not want to block on analysis.

When the job finishes, the status endpoint returns the result payload with a status and a data object. Inside the result, you get match_scores with metrics such as overall_match, skills_match, experience_match, education_match, soft_skills_match, technical_stack_match, and other compatibility scores. It also returns explanations that give human-readable reasoning for the selected scores, which helps recruiters and hiring managers understand why a candidate was ranked a certain way.

Use Resume Job Match Score when you need to compare applicants to a role, triage large candidate pools, or add transparent scoring to an internal hiring tool. It gives you a consistent way to evaluate a resume against a job description without parsing the document yourself.

▣ ENDPOINT 01 / 02
POST
Resume/CV Job Match Score - Submit Job
https://api.eu.apyverse.com/sharpapi/resume-cv-job-match-score

QUICKSTART

GUIDE

Quickstart

Upload your resume and a job description to get a match score job started.

curl -X POST "https://api.eu.apyverse.com/sharpapi/resume-cv-job-match-score" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/resume.pdf" \
  -F "content=Senior software engineer with 5+ years of backend experience, Python, APIs, and cloud infrastructure."

What you'll get back

Returns a JSON object with two top-level string fields: job_id is the submitted job’s UUID, and status_url is the URL to poll for status and results.

{
  "job_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "status_url": "https://example.com/status/3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
TRY ITLIVE · 50 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/CV file (PDF, DOCX, TXT, etc.).
Full job description in plain text.
Language for explanations.

About this endpoint

What it does

Submits a resume/CV file and a plain-text job description to start an asynchronous job that calculates a match score. The response returns a job identifier and a status URL you can use to check progress and retrieve the result later.

Request Body

ParameterTypeMandatoryDescription
fileStringYesResume/CV file (PDF, DOCX, TXT, etc.).
contentStringYesFull job description in plain text.
languageStringNoLanguage for explanations. Default: English.

Response

Returns a JSON object with job_id and status_url string fields. job_id is the unique identifier of the submitted job, and status_url is the URI to poll for the job's status and result. Success response: 200.

ParameterTypeMandatoryDescription
job_idStringNoThe unique identifier of the submitted job. Format: UUID.
status_urlStringNoURL to poll for the job's status and result. Format: URI.

Notes

This endpoint kicks off an async job and returns immediately with a job identifier; the actual work runs in the background. Pair this call with the corresponding job_check endpoint — poll that until the status reaches a terminal state to retrieve the result. Use job_id from the response to check the job status.

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.

▣ ENDPOINT 02 / 02
GET
Resume/CV Job Match Score - Check Job Status
https://api.eu.apyverse.com/sharpapi/resume-cv-job-match-score/job/status/:job_id

QUICKSTART

GUIDE

Quickstart

Check the status of a resume/job match scoring job by its UUID.

curl -X GET "https://api.eu.apyverse.com/sharpapi/resume-cv-job-match-score/job/status/:job_id" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with a data object. data includes id and type, plus an attributes object with the job type, a result object containing explanations and match_scores, and a status string (running, failed, queued, or success).

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "type": "api_job_result",
    "attributes": {
      "type": "hr_resume_job_match_score",
      "result": {
        "explanations": {
          "skills_match": "The candidate has strong PHP and MySQL skills, which align well with the job requirements.",
          "experience_match": "The candidate has over 22 years of programming experience, which is highly relevant and exceeds the typical requirements for the role."
        },
        "match_scores": {
          "overall_match": 92
        }
      }
    },
    "status": "success"
  }
}
TRY ITLIVE · 1 ATOM
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns the current status of a resume/CV job match score job identified by job_id. The response wraps the job record and its attributes, including the job status and, when available, the match score result payload.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesJob identifier in UUID format.

Response

Returns a JSON object with a data object field. The data object includes the job id as a UUID string, the resource type as a string, and an attributes object. Inside attributes, type is a string, status is an enum string, and result is an object containing match_scores and explanations objects.

AttributeTypeMandatoryDescription
dataObjectNoJob resource object. Contains id, type, and attributes.
data.idStringNoJob identifier in UUID format.
data.typeStringNoResource type.
data.attributesObjectNoJob attributes object. Contains type, status, and result.
data.attributes.typeStringNoJob result type.
data.attributes.statusENUMNoJob status. Allowed values: running, failed, queued, success.
data.attributes.resultObjectNoMatch score result object. Contains explanations and match_scores.
data.attributes.result.explanationsObjectNoHuman-readable reasoning strings for score components. Additional string properties may be present.
data.attributes.result.match_scoresObjectNoCompatibility scores across job-match dimensions. Numeric properties may be present.

Path parameters

Name
Type
Description
job_idREQUIRED
string
▣ 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.