> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mokaru.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Resume

> Create a new resume

## Overview

The Create Resume endpoint lets you create a new resume in Mokaru. Each resume owns its own content. A new resume starts as a copy of your base (default) resume's content (experiences, education, skills, certificates, projects, awards, publications and interests); editing the base afterwards doesn't change resumes you already created. Use this endpoint for the CV-level shell (name, template, design) and to hide items on the CV via `hiddenItems`.

**Common use cases:**

* **AI agent resume creation** - create a tailored resume for a specific job by hiding items that aren't relevant.
* **Bulk resume generation** - create multiple resume variants with different `hiddenItems` selections.
* **Set defaults** - create the user's first resume, copied from the base resume's content.

<Note>
  **Self-contained model:** sections (experiences, education, skills, certificates, projects, awards, publications, interests, customSections) are managed via the dedicated content endpoints (e.g. `POST /v1/experiences`), not via `cvData`. Arrays under these keys in `cvData` are silently dropped to prevent the resume thumbnail from drifting from what the builder shows. The new resume's content is copied from the base resume at create time; use `hiddenItems` to hide items on this specific CV.
</Note>

<Note>
  **Scope required:** `resume:write` | **Rate limit:** 10 requests/min
</Note>

## Request

```bash theme={null}
POST /v1/resume
```

### Body Parameters

<ParamField body="name" type="string" required>
  Resume name (max 200 characters)
</ParamField>

<ParamField body="jobTitle" type="string">
  CV-level job title shown in the header (max 150 chars). Overrides the shared identity job title for this CV. Pass `null` to clear and fall back to the identity value.
</ParamField>

<ParamField body="template" type="string" default="classic">
  Template ID (e.g. "classic", "modern", "minimal")
</ParamField>

<ParamField body="isDefault" type="boolean" default="false">
  Set as the default resume (unsets any existing default)
</ParamField>

<ParamField body="cvData" type="object">
  CV-level overrides for personal info and `summary`. Section arrays (`experiences`, `education`, `skills`, `certificates`, `projects`, `awards`, `publications`, `interests`, `customSections`) are silently ignored - use the dedicated content endpoints to manage them, and `hiddenItems` to hide them per-CV.
</ParamField>

<ParamField body="hiddenItems" type="object">
  Per-section blacklist of the resume's item IDs to hide on this CV. Items not listed are visible. Keys: `experiences`, `education`, `skills`, `certificates`, `projects`, `awards`, `publications`, `interests`, or `customSection:<definitionId>`. Each value is an array of the resume's item IDs (from the content endpoints / `GET /v1/profile`).
</ParamField>

<ParamField body="personalOverrides" type="object">
  Per-CV content override. Only `summary` takes effect - it overrides the selected summary for this CV (pass `null` to clear). Identity fields (name, email, phone, address, links, photo) are shared profile-level and cannot be overridden per resume; edit them via the profile endpoint. The per-CV job title is the top-level `jobTitle` field, not `personalOverrides`.
</ParamField>

<ParamField body="itemOrder" type="object">
  Per-section ordering map. Keys are section names (`experiences`, `education`, `skills`, `certificates`, `projects`, `awards`, `publications`, `interests`, `skillCategories`); values are arrays of the resume's item IDs in the desired order. Items not listed fall back to the default order.
</ParamField>

<ParamField body="selectedSummaryId" type="string">
  ID of the summary this resume shows (from `GET /v1/summaries`). Set to `null` to render no summary.
</ParamField>

<ParamField body="designSettings" type="object">
  Visual styling: colors, fonts, spacing, margins
</ParamField>

<ParamField body="optionalFields" type="object">
  Show/hide toggles for optional fields like phone, address, photo
</ParamField>

<ParamField body="sectionOrder" type="array">
  Order of resume sections (e.g. \["summary", "experiences", "education", "skills"])
</ParamField>

### Example

Create a resume that hides two of the resume's experiences and one project:

```bash theme={null}
curl -X POST "https://api.mokaru.ai/v1/resume" \
  -H "Authorization: Bearer mk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Backend Engineer Resume",
    "template": "classic",
    "isDefault": false,
    "cvData": {
      "jobTitle": "Backend Engineer"
    },
    "hiddenItems": {
      "experiences": ["clx_exp_oldjob1", "clx_exp_oldjob2"],
      "projects": ["clx_proj_sidegig"]
    }
  }'
```

## Response

<ResponseField name="success" type="boolean">Whether the resume was created</ResponseField>
<ResponseField name="id" type="string">The new resume's unique ID</ResponseField>

```json theme={null}
{
  "success": true,
  "id": "clx1234..."
}
```
