ResumeJSON

API reference

Generated from the same OpenAPI document the API serves at /openapi.json and RapidAPI imports to build the listing.

Endpoints

POST /v1/parse

Accepts a JSON body with a text field, a multipart form with a file part, or the file bytes as the raw request body. A PDF without a text layer — a scan or a photograph — is read as images instead, and so is an uploaded JPEG, PNG or WebP; meta.read tells you which happened. PDF, DOCX and image types are detected from the bytes, not from the Content-Type header. Text values come back in the CV's own language unless you ask for one with output_language.

Request parameters

ParameterInRequiredMeaning
output_languagequerynoWrite the extracted text values in this language, up to 40 characters — a name (French, Bahasa Indonesia, 日本語) or a code (fr, pt-BR, zh-Hans). Any language the model can write is accepted; there is no fixed list. Omit it and the CV is returned in its own language, which is the default and what this endpoint has always done.

Job titles, the headline, highlights, skills, degrees, locations and proficiency wording are translated. Names of people, companies and schools are not, and neither are emails, phone numbers, URLs or dates. meta.outputLanguage echoes back what was understood.

A JSON or multipart body may carry the same value as an output_language field instead; when both are sent the query parameter wins.
StatusMeaning
200The parsed resume.
400The body carried no resume, or output_language was not a language.
403Either the subscription is not active — lapsed, cancelled or never started — in which case RapidAPI refuses the call at its gateway and the body is { "message": "…" } with no error.code; or the call did not come through RapidAPI at all, which this worker refuses as not_via_rapidapi. Branch on the presence of error.code, not on the status.
405/v1/parse is POST only.
413Document larger than the limit.
415File type cannot be read.
422File unreadable, or the document is not a resume.
429Sent by RapidAPI, not the parser, so the body is { "message": "…" } with no error.code; branch on the message. Two causes: (1) the message names the MONTHLY quota — your plan's quota is spent; do not retry, wait for x-ratelimit-requests-reset or upgrade the plan. (2) the message is Too many requests — a short burst limit; back off for a few seconds and retry.
500Our fault: an unhandled failure (internal), or the deployment is missing a secret (gate_misconfigured). It still costs you a request: RapidAPI meters every call it forwards to us, whatever we answer — measured 2026-09-16, a 400 decremented x-ratelimit-requests-remaining by the same one as a 200. Do not retry the same request; quote request_id — also in X-Request-Id — to support. The message is fixed on purpose: a runtime exception string is ours, not yours.
502The model answered with something unusable. Retry once.
503Model upstream unavailable. Retry after the Retry-After delay.

GET /v1/health

Liveness and the deployed version

StatusMeaning
200Service is up.

Schemas

A nullable field is null whenever the resume does not state it. It is never an empty string and never the word "null".

Resume

FieldTypeNotes
basicsobject
workarray of WorkEntry
educationarray of EducationEntry
skillsarray of string
certificationsarray of object
languagesarray of object
total_years_experiencenumber | nullComputed from work, not read off the document. Months are counted inclusively, a role still in progress runs to today, a year-only range spans January to December, and roles held at the same time are counted once rather than added together. null when no role carries a usable start date.

WorkEntry

FieldTypeNotes
companystring | null
titlestring | null
start_datestring | nullYYYY-MM, or YYYY when no month is stated.
end_datestring | nullnull when the role is current.
is_currentboolean
locationstring | null
highlightsarray of string

EducationEntry

FieldTypeNotes
institutionstring | null
degreestring | null
field_of_studystring | null
start_datestring | null
end_datestring | null

ParseResponse

FieldTypeNotes
resumeResume
metaobject

Error

FieldTypeNotes
errorobject

Date format

Every date field — start_date, end_date, a certification date — is one of exactly three things:

ValueMeansExample in the CV
"2022-03"Year and monthMarch 2022, Mar '22, 03/2022
"2016"Year only; the CV gave no month2014 – 2016
nullThe CV did not state it, or the role is currentPresent, Current, blank

Anything the model returns that is not one of those is dropped rather than passed through, so sorting by start_date is always a string comparison.