---
title: "Trigger send for an email campaign"
method: POST
path: "/v2/email/campaigns/{campaign_id}/send"
tags: ["email-campaigns-v2"]
---

# Trigger send for an email campaign

`POST /v2/email/campaigns/{campaign_id}/send`

## Request

- Base URL: `https://api.tracklysms.com/api`
- URL: `https://api.tracklysms.com/api/v2/email/campaigns/{campaign_id}/send`
- Auth: API key in header `X-Api-Key`

Campaign must be in 'draft' or 'scheduled' status.
Must have at least one list_id or segment_id.
Transitions campaign to 'sending' status.

Hardenings:
  - AC-19 idempotency_key (Redis SET NX EX 24h) makes retries safe
  - AC-19 per-account rate limit
  - AC-20 senderIdentityId override forbidden when campaign has one
  - AC-22 Kafka payload signed with HMAC over (campaign,account,action,ts)

## Response `202`

Campaign send triggered

## Other responses

- `400`: Validation error
- `401`: Authentication error
- `404`: Not found
- `409`: Conflict
- `429`: Rate limit exceeded

---

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