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 for hiring workflows. Send a resume file plus the job description text, and get back a job ID and a status URL for polling.

Use it when you want to screen applicants consistently before a recruiter reviews them. The submit endpoint accepts a binary file in PDF, DOCX, TXT, or similar formats, along with the job description in plain text. You can also set the language used for explanations.

When the job completes, the status endpoint returns a result object with match scores and human-readable explanations. The scores cover overall_match and a range of hiring signals such as skills_match, experience_match, education_match, soft_skills_match, technical_stack_match, job_title_relevance, recent_role_relevance, certifications_match, project_experience_match, and more. The response also includes the job status, so you can track whether the analysis is queued, running, successful, or failed.

Resume Job Match Score is a fit for ATS enrichment, recruiter triage, and shortlist ranking where you need both a numeric comparison and transparent reasoning behind it.

▣ ENDPOINT 01 / 02
POST
Resume/CV Job Match Score - Submit Job
http://localhost:8080/sharpapi/resume-cv-job-match-score
QUICKSTARTGUIDE

Quickstart

Upload a resume and a job description to get a matching job submission started.

curl -X POST "http://localhost:8080/sharpapi/resume-cv-job-match-score" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/resume.pdf" \
  -F "content=We are looking for a Python engineer with experience in APIs and cloud infrastructure."

What you'll get back

Returns a JSON object with a job_id string and a status_url string.

{
  "status_url": "https://apyhub.com/services/provider/sharpapi/api/v1/hr/resume_job_match_score/job/status/a8b764e9-5011-4770-afc5-aedf1769bd8e",
  "job_id": "a8b764e9-5011-4770-afc5-aedf1769bd8e"
}
TRY ITLIVE · 1000 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 and a job description for an asynchronous match-score job. The endpoint returns a job identifier and a status URL that you can use to poll for the result later.

Request Body

ParameterTypeMandatoryDescription
fileStringYesResume/CV file upload. Accepted formats include PDF, DOCX, TXT, etc.
contentStringYesFull job description in plain text.
languageStringNoLanguage for explanations. Default: English.

Response

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

ParameterTypeMandatoryDescription
job_idStringYesThe unique identifier of the submitted job. Format: UUID.
status_urlStringYesURL 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 the returned job_id to track the job, and follow status_url to check progress.

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
http://localhost:8080/sharpapi/resume-cv-job-match-score/job/status/:job_id
QUICKSTARTGUIDE

Quickstart

Check the status of a job by its UUID in the path.

curl -X GET "http://localhost:8080/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. Inside data, id is the job result UUID, type is the resource type, attributes contains the result details, and status is one of running, failed, queued, or success.

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "type": "api_job_result",
    "attributes": {
      "type": "hr_resume_job_match_score",
      "result": {
        "match_scores": {
          "overall_match": 85.5
        },
        "explanations": {
          "skills_match": "Strong alignment with the role requirements."
        }
      }
    },
    "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

Checks the status of a resume/CV job match scoring job by its job_id and returns the job result payload when available.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesJob identifier in UUID format.

Response

Returns a JSON object with a top-level data object. Inside data, the response includes id as a UUID string, type as a string, and attributes as an object containing type, result, and status. The status field is a string with one of: running, failed, queued, or success.

ParameterTypeMandatoryDescription
dataObjectNoWrapper object containing the job status payload.
data.idStringNoJob result identifier in UUID format.
data.typeStringNoResource type for the job result.
data.attributesObjectNoWrapper object containing the job attributes.
data.attributes.typeStringNoResult type identifier.
data.attributes.resultObjectNoCompatibility results for the resume/CV job match score. Contains explanations and match_scores.
data.attributes.result.explanationsObjectNoHuman-readable reasoning behind selected match scores. Additional string keys may be present.
data.attributes.result.match_scoresObjectNoCompatibility scores between the resume/CV and the job description. Numeric score fields are included, and additional numeric keys may be present.
data.attributes.statusENUMNoJob status. Allowed values: running, failed, queued, success.

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.