---
title: "Send a campaign"
method: POST
path: "/v1/campaigns/{id}/send"
tags: ["Messaging"]
---

# Send a campaign

`POST /v1/campaigns/{id}/send`

## Request

- Base URL: `https://api.affiliaterail.com`
- URL: `https://api.affiliaterail.com/v1/campaigns/{id}/send`
- Auth: HTTP bearer

Sends a draft or paused campaign now, to the audience saved on it: the audience is queued atomically and the sender runs exactly as the dashboard's Send button. Refused when nobody matches the audience or the campaign is not sendable from its current state.

**Scope:** `write`

## Path parameters

- `id` string, required

## Request body

- CampaignSend
  - `program_id` string, required

## Response `200`

The campaign, now sending

- Campaign
  - `id` string, required: Prefixed id (`camp_…`)
  - `object` 'campaign', required
  - `program_id` string, required: Prefixed id (`prg_…`)
  - `name` string, required
  - `subject` string, required
  - `status` 'draft' | 'scheduled' | 'sending' | 'paused' | 'sent', required
  - `scheduled_at` string, date-time, nullable, required: ISO-8601, UTC
  - `sent_at` string, date-time, nullable, required: ISO-8601, UTC
  - `stats` object, required
    - `total` integer, required
    - `queued` integer, required
    - `sent` integer, required
    - `failed` integer, required
    - `opened` integer, required
    - `skipped` integer, required
  - `created_at` string, date-time, required: ISO-8601, UTC
  - `updated_at` string, date-time, required: ISO-8601, UTC

## Other responses

- `400`: Invalid request
- `401`: Missing or unknown API key
- `403`: Key lacks the required scope
- `404`: No such object in your organization
- `422`: The request was understood and refused
- `429`: Rate limited: see Retry-After

---

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