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

# Send Email From Csv Admin

`POST /v1/email/admin/send_from_csv/{template_id}`

## 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/admin/send_from_csv/{template_id}`
- Auth: HTTP bearer

Same CSV send, authenticated with a Firebase admin token.

Exists so the SvelteKit admin console can drive this without shipping the
shared x-admin-api-key into a browser bundle. Requires the ADMIN role, not
VIEWER — this mails hundreds of people and is not undoable.

## Path parameters

- `template_id` string, required

## Request body `multipart/form-data`

- BodySendEmailFromCsvAdminV1EmailAdminSendFromCsvTemplateIdPost
  - `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)
