Create cover letter
POST /cover-letter/create - queue a cover letter generation job
Example
curl -X POST https://api.rezzy.dev/v1/cover-letter/create \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Software Engineer at Acme Corp",
"job_description": "Full-time role. Requirements: 3+ years Python, REST APIs.",
"company_url": "https://acme.com",
"hiring_manager_name": "Jane Smith",
"company_street_address": "123 Main St",
"company_city": "San Francisco",
"company_state": "CA",
"company_zip": "94105",
"hiring_manager_email": "jane@acme.com",
"date": "2026-04-09",
"additional_context": "Referred by John Doe"
}'Sample response (202 Accepted):
{
"success": true,
"message": "Cover letter creation job has been successfully registered.",
"data": {
"id": "3de8fcc3-a913-413d-acdb-382701542cb9",
"title": "Software Engineer at Acme Corp",
"status": "QUEUED",
"dashboard_url": "https://rezzy.dev/dashboard/cover-letters"
}
}Processing is asynchronous. Use the returned id with Get cover letter
status to poll for completion.
Request body
| Field | Type | Required | Constraints | Example |
|---|---|---|---|---|
title | string | Yes | 1–255 characters | "Software Engineer – Acme Corp" |
job_description | string | Yes | Min length 1 | "Full-time role in San Francisco. Requirements: 3+ years Python..." |
company_url | string | No | Max length 500 | "https://acme.com" |
hiring_manager_name | string | No | - | "Jane Smith" |
company_street_address | string | No | - | "123 Main St" |
company_city | string | No | - | "San Francisco" |
company_state | string | No | - | "CA" |
company_zip | string | No | - | "94105" |
hiring_manager_email | string | No | - | "jane@acme.com" |
date | string | No | Valid calendar date, YYYY-MM-DD | "2026-04-09" |
additional_context | string | No | - | "Referred by John Doe" |
Including company_url helps tailor the letter to the employer. When
provided, Rezzy can research the company and role context similarly to the
dashboard flow.
Your profile import must be complete before generation. Unknown fields are stripped, and optional fields can be omitted or set to null.
A supplied company URL must be a reachable public HTTP or HTTPS website, at most 500 characters. A bare hostname is accepted and prefixed with https://; private network addresses are rejected.
The optional date must be a valid calendar date. Single-digit months and days are normalized to YYYY-MM-DD; an omitted or blank date is left unset.
Duplicate titles are automatically renamed with suffixes such as _1. Read the stored title from the response. Each create call can queue and charge for a new document; do not automatically retry an ambiguous failure.
Success response (202 Accepted)
data:
| Field | Type | Description |
|---|---|---|
id | UUID | Cover letter resource ID |
title | string | Stored title, with a suffix if the title already exists |
status | string | One of: QUEUED, IN_PROGRESS, SUCCESS, FAILED |
dashboard_url | string | URL to view in the dashboard |
Error responses
| Status | Condition |
|---|---|
| 400 | Invalid request fields, incomplete profile import, or invalid/unreachable company URL, or invalid date |
| 401 | Missing or invalid API key |
| 403 | Insufficient credits |
| 429 | Request limit exceeded |
| 500 | Internal server error |
See Errors for response bodies and Rate limiting for retry headers.