---
title: "Send Email From Csv"
method: POST
path: "/v1/email/{template_id}/send_email_from_csv"
tags: ["email"]
---

# Send Email From Csv

`POST /v1/email/{template_id}/send_email_from_csv`

## Request

- Base URL: `https://api.linktodm.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.linktodm.com/v1/email/{template_id}/send_email_from_csv`
- Auth: none declared

Mail everyone in an uploaded CSV, one individual email per recipient.

The CSV needs an `Email` column and may have a `Name` column. Recipients do
not see each other: this goes through ZeptoMail's batch endpoint, unlike
`send_email_to_list`, which puts every address in one message's `to` field.

Authenticated with the legacy x-admin-api-key, for curl and cron callers.
The admin console uses `send_email_from_csv_admin` instead — the browser
must never be handed that key.

## Path parameters

- `template_id` string, required

## Headers

- `x-admin-api-key` string

## Request body `multipart/form-data`

- BodySendEmailFromCsvV1EmailTemplateIdSendEmailFromCsvPost
  - `file` string, binary, required

## Response `200`

Successful Response

- SendEmailFromCsvResponse: Outcome of a CSV upload send. `sent` counts recipients ZeptoMail accepted, not recipients who received the mail — delivery is asynchronous and reported by webhook.
  - `total_rows` integer, required
  - `sent` integer, required
  - `skipped` SkippedRow[], required
    - `row` integer, required
    - `email` string, nullable
    - `reason` string, required
  - `batches` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/linktodm/apis/salesmorph.md) - [All operations](https://skmtc.dev/linktodm/apis/salesmorph/llms.txt) - [OpenAPI document](https://skmtc.dev/linktodm/apis/salesmorph/revisions/4af0ad5dbe92?raw)
