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
| Parameter | In | Required | Meaning |
|---|---|---|---|
output_language | query | no | Write 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. |
| Status | Meaning |
|---|---|
200 | The parsed resume. |
400 | The body carried no resume, or output_language was not a language. |
403 | Either 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. |
413 | Document larger than the limit. |
415 | File type cannot be read. |
422 | File unreadable, or the document is not a resume. |
429 | Sent 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. |
500 | Our 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. |
502 | The model answered with something unusable. Retry once. |
503 | Model upstream unavailable. Retry after the Retry-After delay. |