---
title: "Schedule or send the campaign now"
method: POST
path: "/campaigns/{id}/send"
tags: ["Campaigns"]
---

# Schedule or send the campaign now

`POST /campaigns/{id}/send`

## Request

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

`sendAt` absent, in the past or less than 5 minutes from now = immediate send: requires `confirmationToken` from POST /campaigns/{id}/estimate, because a real, irreversible send has no window to be corrected. A `sendAt` further ahead schedules without needing confirmation. Required scope: `email:send`.

## Path parameters

- `id` string, required: Campaign ID.

## Request body

- ScheduleCampaignBody
  - `sendAt` string, date-time: Absent, in the past or less than 5 minutes from now = immediate send (requires confirmationToken).
  - `confirmationToken` string: From POST /campaigns/:id/estimate. Required only for an immediate send or one within 5 minutes; scheduling further ahead does not require it.

## Response `202`

Campaign scheduled or sending.

- CampaignSendResult
  - `id` string, uuid, required
  - `status` string, required
  - `scheduledAt` string, date-time, nullable
  - `recipients` integer

## Other responses

- `401`: Missing or invalid token.
- `402`: Plan quota exceeded.
- `403`: Insufficient scope.
- `404`: Resource not found.
- `409`: State conflict (e.g. duplicate).
- `422`: Invalid input.

---

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