---
title: "Draft an opener per company"
method: POST
path: "/v1/searches/{id}/openers"
tags: ["Leads"]
---

# Draft an opener per company

`POST /v1/searches/{id}/openers`

## Request

- Base URL: `https://api.nvoke.run`
- URL: `https://api.nvoke.run/v1/searches/{id}/openers`
- Auth: HTTP bearer

Claude drafts one first line per company from the pages nvoke read on its site, only for companies with at least one valid email, so the cost follows your verified emails. Every line rests on a fact the page states (`opener.quote`, verbatim, on `opener.sourceUrl`); no merge tags, nothing invented, and `none` when the pages hold nothing to build on. Uses your site profile (`POST /v1/site-profile`) when there is one. Pass `companyIds` for some companies, or leave it out for the whole search. Runs in the background: read `opener` on the companies from the company list, and the `opener` column in the CSV. nvoke never sends anything.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `companyIds` string[]
  - `redo` boolean

## Response `202`

OK

- object
  - `queued` integer, required
  - `skipped` integer, required

## Other responses

- `4XX`: `unauthorized`: No valid token. Send `Authorization: Bearer <key>`. `not_found`: No such search, key or webhook on this account. `invalid_request`: The body or query failed validation. `details` lists the problems. `ai_unavailable`: Claude could not answer right now, or the account spent its monthly Claude budget. Try again later.

---

[API](https://skmtc.dev/nvoke/apis/nvoke-api.md) · [All operations](https://skmtc.dev/nvoke/apis/nvoke-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nvoke/apis/nvoke-api/revisions/f7cfd26111a8?raw)
