# Create cover letter

POST /cover-letter/create - queue a cover letter generation job

Source: https://docs.rezzy.dev/cover-letter/create
Documentation index: https://docs.rezzy.dev/llms.txt



## Example

  

  
```bash
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"
  }'
```
  

  
```python
import requests

response = requests.post(
"https://api.rezzy.dev/v1/cover-letter/create",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"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",
},
)
print(response.json())

```
  

  
```javascript
const response = await fetch(
  "https://api.rezzy.dev/v1/cover-letter/create",
  {
    method: "POST",
    headers: {
      Authorization: "Bearer YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      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",
    }),
  },
);
const data = await response.json();
console.log(data);
```
  

**Sample response (202 Accepted):**

```json
{
  "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](https://docs.rezzy.dev/cover-letter/get-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](https://docs.rezzy.dev/errors) for response bodies and [Rate limiting](https://docs.rezzy.dev/rate-limiting) for retry headers.
