Coding agent documentation index Fetch the complete documentation index at: https://docs.worklittle.com/docs-agent-manifest.json Use this file to discover all available pages before exploring further.

Create resumes

Generate a one-page hiring-ready resume (HTML, PDF, and/or DOCX) tailored to a job.

Overview

POST /jobs/resumes generates a one-page resume tailored to a job and returns it as HTML and PDF.

curl -s -X POST "https://api.worklittle.com/jobs/resumes" \
  -H "Authorization: Bearer $WORKLITTLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "job_id": "YOUR_JOB_ID",
    "resume_text": "10 years frontend, React, design systems",
    "instructions": "Emphasize platform engineering"
  }'

The key needs the agent:tools scope. Only AI tokens are billed, once per call, whatever formats you request - see Pricing. MCP: create_resume takes the same JSON body. For letters, see Create cover letters.

Request body

Every field is optional. Send job_id to target a posting and resume_text or profile as the source of facts.

| Field | Type | Description |
| --- | --- | --- |
| `job_id` | string | Target job. The server loads the posting. |
| `resume_text` | string | Existing resume as plain text. Primary source of facts. |
| `profile` | object | Structured candidate fields (name, experience, education). |
| `job_context` | object | Pre-fetched job fields or keywords, for example from `get_job_keywords`. |
| `instructions` | string | Emphasis hints such as "highlight systems work". Not a place to paste the job description. |
| `formats` | string[] | Any of `html`, `pdf`, `docx`. |
| `format` | string | Single-value alias for `formats`: `html`, `pdf`, or `docx`. |

The output has no placeholders. Anything not in your input is left out, never invented.

Output formats

Cover letters use the same rules.

| You send | You get |
| --- | --- |
| Nothing | `html` and `pdf` |
| `formats: ["html"]`, `format: "html"`, or `Accept: text/html` | `html` |
| `format: "pdf"` or `Accept: application/pdf` | `html` and `pdf` |
| `format: "docx"` or the Word MIME type in `Accept` | `html` and `docx` |
| `formats: ["html","pdf","docx"]` | All three |

Precedence is body formats, then body format, then Accept, then the default. The response is always a JSON envelope, never raw PDF bytes.

The PDF is US Letter, one page, scaled to fit. The DOCX is the same HTML with tight margins and no auto-fit.

Response

{
  "document_type": "resume",
  "mode": "ready",
  "formats": ["html", "pdf"],
  "html": "<h1>…</h1>…",
  "pdf_base64": "JVBERi0xLjQK…",
  "pdf_mime": "application/pdf",
  "pdf_filename": "resume.pdf",
  "docx_base64": null,
  "docx_mime": null,
  "docx_filename": null,
  "billing": { }
}

Fields for formats you did not request are null. billing holds the metered usage for the call.

Attach to an application

Send pdf_base64 as resume_file.content_base64 on submit_job_application. See Apply for jobs. The cover letter goes in its own fields, never in resume_file.

Errors

| Status | Cause |
| --- | --- |
| `400` | Missing JSON body, empty or invalid `formats`, or generation failed |
| `401` | Missing or invalid API key |
| `402` | Billing not set up or payment failed |
| `403` | Key lacks `agent:tools` |
| `406` | `Accept` lists only unsupported types |
| `429` | Rate limit exceeded |

Legacy route: POST /v1/agent/tool with { "name": "create_resume", "args": { … } }.