Send email to candidate
Send an email to a candidate from a template or your own text, now or at a set time.
POST https://cotlet.dev/api/v1/ashby/candidates/{candidate_id}/emails
Sends an email to the candidate from the Ashby profile, so it appears in the candidate's email history. Give either a template name or a subject and body; substitution tokens in a template are filled by Ashby. Scheduled emails can be viewed and rescheduled only by the person who drafted them, which is your connected account. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| candidate_id string required | string | Candidate ID from search_candidates. |
| template string | string | Template name from list_email_templates. Or set subject and body. |
| subject string | string | Subject, when no template is used. |
| body string | string | Email body, when no template is used. |
| send string | string | 'immediately' or 'scheduled'. Default: immediately. With 'scheduled', set send_at. |
| send_at string | string | ISO 8601 date and time with offset, only with send set to scheduled. |
Request
curl -X POST https://cotlet.dev/api/v1/ashby/candidates/candidate_8c41d2/emails \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("ashby", "send_email", {"candidate_id":"candidate_8c41d2"}) const result = await cotlet.call('ashby', 'send_email', {"candidate_id":"candidate_8c41d2"}); cotlet call ashby send_email --data '{"candidate_id":"candidate_8c41d2"}' Example response
{
"email_id": "a09d3e72-5b16-4c84-97f0-e2c48b1d6a35",
"candidate_id": "e1f7a309-4c52-4d8b-a063-9b25d7c1e840",
"subject": "Still interested?",
"status": "sent",
"sent_at": "2026-10-16T09:00:00+02:00"
}