> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedule Campaign

> Schedule a campaign send

Schedule a draft or already scheduled campaign for a future send time. The campaign must have a sender profile whose sending domain is verified.
Campaigns that require safety review are held in `waiting_approval` and are
scheduled after an admin approves them.

## Request

<ParamField path="campaignId" type="string" required>
  Campaign ID.
</ParamField>

<ParamField body="scheduledAt" type="string" required>
  Future ISO 8601 send time.
</ParamField>

<ParamField body="targetLists" type="object">
  Optional targeting object. Omit this to reuse saved campaign targeting, or to
  default to all active subscribers.
</ParamField>

<ParamField body="sendTimeOptimization" type="boolean">
  Whether to use send-time optimization.
</ParamField>

<ParamField body="spreadOverHours" type="number">
  Spread delivery over 1-72 hours. When set, spread delivery takes precedence
  over send-time optimization.
</ParamField>

```bash theme={null}
curl -X POST "https://api.sequenzy.com/api/v1/campaigns/camp_abc123/schedule" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "scheduledAt": "2026-06-01T14:00:00Z",
    "targetLists": {
      "type": "all"
    }
  }'
```

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "message": "Campaign scheduled for 2026-06-01T14:00:00.000Z",
    "scheduledAt": "2026-06-01T14:00:00.000Z",
    "jobId": "mock-job-id",
    "previewUrl": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123?step=review",
    "campaign": {
      "id": "camp_abc123",
      "name": "April Launch",
      "subject": "A quick update",
      "status": "scheduled",
      "labels": ["edm", "launch"],
      "scheduledAt": "2026-06-01T14:00:00.000Z",
      "url": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123",
      "previewUrl": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123?step=review"
    }
  }
  ```

  ```json 200 theme={null}
  {
    "success": true,
    "message": "Campaign is awaiting approval before it can be scheduled.",
    "scheduledAt": "2026-06-01T14:00:00.000Z",
    "previewUrl": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123?step=review",
    "campaign": {
      "id": "camp_abc123",
      "name": "April Launch",
      "subject": "A quick update",
      "status": "waiting_approval",
      "labels": ["edm", "launch"],
      "scheduledAt": "2026-06-01T14:00:00.000Z",
      "url": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123",
      "previewUrl": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123?step=review"
    }
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": "Scheduled time must be in the future."
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": "Sending domain is not verified. Please verify your domain before scheduling emails."
  }
  ```

  ```json 401 theme={null}
  {
    "success": false,
    "error": "Unauthorized"
  }
  ```

  ```json 404 theme={null}
  {
    "success": false,
    "error": "Campaign not found"
  }
  ```

  ```json 409 theme={null}
  {
    "success": false,
    "error": "Campaign is no longer editable. It may have already started sending."
  }
  ```
</ResponseExample>
