# Prompt a résumé

> POST /prompt/ is the stateful résumé assistant. Generate, edit, translate or ask about the résumé pinned to your key, in plain language. $0.01 per request.

**Source:** /docs/api/prompt/ (Curriculo Docs)  
**Updated:** 12 October 2026  
**Contact:** hello@curriculo.me

```http
POST https://api.curriculo.me/public/prompt/
GET https://api.curriculo.me/public/prompt/resumes
GET https://api.curriculo.me/public/prompt/resume
```

**Stateful.** Works on the résumé pinned to your credential, or on [one résumé per end user](#one-resume-per-end-user): generate, edit, translate or ask a question in plain language, in any language. Attach a CV once, then send instructions without re-uploading the file.

**Price:** $0.01 per request, including a request that attaches a CV.

## Request

`multipart/form-data`

| Field | Type | Notes |
|---|---|---|
| `prompt_text` (required) | string | Your instruction, for example "add Python to my skills" or "make the summary more concise". |
| `language` | string | ISO 639-1 code to render the résumé in. Omit to keep the source language. |
| `file` | file | Optional PDF or DOCX, 10 MB max. Attach on the first call to seed the résumé from an existing CV. Later calls edit that same résumé. |
| `template_id` | string | Defaults to `default`. |

> [!TIP]
> To get a translated résumé, set `language`. That, rather than asking for a translation in `prompt_text`, is how translation is requested.

## Examples

First call, seeding the résumé from a CV:

```bash
curl -X POST https://api.curriculo.me/public/prompt/ \
  -H 'Authorization: Bearer key_abc123_yoursecret' \
  -F 'file=@candidate.pdf' \
  -F 'prompt_text=Make the summary more concise'
```

A later call on the same résumé, rendered in Korean:

```bash
curl -X POST https://api.curriculo.me/public/prompt/ \
  -H 'Authorization: Bearer key_abc123_yoursecret' \
  -F 'prompt_text=Add Python to my skills' \
  -F 'language=ko'
```

## Response

One JSON response: an `assistant_message` to show your user, plus the updated résumé as structured segments under `ai_response` when it changed. `mode` says what happened: `qa` (a question was answered, nothing changed), `modification` or `add-on` (the résumé changed), or `qa_with_modification` (both).

## One résumé per end user

By default every call works on the one résumé pinned to your key. To keep a separate résumé for each of your own users, add one of these headers to `POST /prompt/`. Both need a Console key and work on `/prompt/` only; any other path returns `400`.

| Header | Value | Effect |
|---|---|---|
| `X-Curriculo-User-Id` | Your own ID for the end user: 1 to 128 ASCII letters, digits, `_`, `.`, `:`, `@` or `-`, starting with a letter or digit. Case-sensitive. | A new ID creates a new résumé for that user; reuse the same ID for follow-ups. Omit it to use the résumé pinned to your key. |
| `X-Curriculo-Target-Resume-Id` | A `resume_id` from `GET /prompt/resumes` | Updates that saved résumé. It never creates one: an unknown id returns `404`. |

Send one or the other, not both (`400`). When either is set, the response also carries `customer_id` and `resume_id`.

```bash
curl -X POST https://api.curriculo.me/public/prompt/ \
  -H 'Authorization: Bearer key_abc123_yoursecret' \
  -H 'X-Curriculo-User-Id: user-123' \
  -F 'file=@candidate.pdf' \
  -F 'prompt_text=Make the summary more concise'
```

## Saved résumés

Two read-only endpoints let you browse the résumés stored for your account. They are free and need no prepaid balance. Console keys only; you only ever see your own account's records.

| Endpoint | Query parameters | Returns |
|---|---|---|
| `GET /prompt/resumes` | `search`, `limit`, `offset`, `cursor` | Your account's saved résumés in `items` (`resume_id`, `external_user_id`, `customer_id`, `name`, `version`, `updated_at`), plus `next_cursor` for the next page (`null` when finished). `search` matches name, `external_user_id` or `resume_id`, ignoring case. |
| `GET /prompt/resume` | `resume_id` | One saved résumé |

```bash
curl 'https://api.curriculo.me/public/prompt/resumes?limit=20' \
  -H 'Authorization: Bearer key_abc123_yoursecret'
```

## Data handling

The résumé assistant keeps a working copy of the résumé so it can act on it across a session. See [Data handling](/docs/data-handling/).
