---
title: "Upload Resume"
method: POST
path: "/api/forms/upload-resume"
tags: ["Forms"]
---

# Upload Resume

`POST /api/forms/upload-resume`

## Request

- Base URL: `https://api.ruzora.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ruzora.com/api/forms/upload-resume`
- Auth: none declared

Public resume upload (job form + chat widget). No auth required.

Accepts PDF and Word documents (max 10MB).
Stores in R2 and returns the file URL.

``candidate_id`` (optional form field) is sent by the job form, which
now creates the candidate BEFORE uploading (Epic 2.6). It is used only
to make the storage-failure Slack alert actionable — the applicant is
already saved, Roberto just has to chase the CV. Never trusted for
anything else.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api.md) · [All operations](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/revisions/f9b8223f3ac4?raw)
