---
title: "Schedule Campaign"
method: POST
path: "/v1/campaigns/{id}/schedule"
tags: ["Campaigns"]
---

# Schedule Campaign

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

Schedule a campaign for future delivery. scheduledAt must be in the future. Requires API key with campaign:write.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- ScheduleCampaignRequest
  - `scheduledAt` string, date-time, required — ISO 8601 datetime for sending
  - `scheduledTimezone` string — IANA timezone (e.g. America/New_York). Defaults to UTC.

## Response `200`

Campaign scheduled

- ApiResponseCampaign
  - `success` boolean, required
  - `data` object, nullable
    - `id` string
    - `projectId` string
    - `name` string
    - `conversationId` string
    - `emailId` string, nullable — Generated email ID when the campaign was created from a specific email.
    - `subject` string
    - `preheaderText` string, nullable
    - `from` string, email
    - `fromName` string
    - `replyTo` string, nullable
    - `recipientType` 'audience' | 'tag'
    - `recipientId` string
    - `topicId` string, nullable
    - `estimatedRecipients` integer, nullable
    - `providerType` 'ses' | 'resend' | 'sendgrid' | 'mailgun' | 'migma'
    - `variables` object, nullable
    - `status` 'draft' | 'pending_review' | 'scheduled' | 'sending' | 'throttled' | 'sent' | 'failed' | 'cancelled'
    - `scheduledAt` string, date-time, nullable
    - `scheduledTimezone` string, nullable
    - `batchId` string, nullable
    - `sentAt` string, date-time, nullable
    - `completedAt` string, date-time, nullable
    - `error` string, nullable
    - `triggeredBy` 'manual' | 'api' | 'automation'
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `error` string, nullable

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden - Missing required permissions or access denied
- `404` — Resource not found
- `409` — Conflict - the Idempotency-Key was reused with a different request body (code: IDEMPOTENCY_CONFLICT)

---

[API](https://skmtc.net/migma/apis/migma-ai-api-v1.md) · [All operations](https://skmtc.net/migma/apis/migma-ai-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/migma/migma-ai-api-v1/revisions/3f3dba69574b/schema)
