> For the complete documentation index, see [llms.txt](https://api.senderwiz.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://api.senderwiz.com/customer/campaigns/create-a-campaign.md).

# Create a Campaign

### 🆕 Create a Campaign

Use this endpoint to create and schedule a campaign using a template and optional features like URL tracking and stats reporting.

***

#### 🔹 HTTP Request

```http
POST API-URL/campaigns
```

***

#### 🔎 POST Parameters

| Parameter  | Type  | Required | Description                        |
| ---------- | ----- | -------- | ---------------------------------- |
| `campaign` | array | Yes      | Array containing campaign details. |

***

#### 📦 Campaign Block

| Parameter    | Type     | Required | Description                                                        |
| ------------ | -------- | -------- | ------------------------------------------------------------------ |
| name         | string   | Yes      | Name of the campaign.                                              |
| type         | string   | No       | Type: `regular` or `autoresponder`. Default: `regular`.            |
| from\_name   | string   | Yes      | Sender name.                                                       |
| from\_email  | string   | Yes      | Sender email.                                                      |
| subject      | string   | Yes      | Subject of the email.                                              |
| reply\_to    | string   | Yes      | Email address for replies.                                         |
| send\_at     | datetime | Yes      | When to send the campaign (Y-m-d H:i:s). Uses customer's timezone. |
| list\_uid    | string   | Yes      | Target list unique ID.                                             |
| segment\_uid | string   | No       | Optional segment to target a specific audience.                    |
| options      | array    | No       | Optional settings like tracking, feeds, stats email, etc.          |
| template     | array    | Yes      | Content or reference to the email template.                        |

***

#### 🖌️ Template Block

| Parameter         | Type     | Required | Description                                     |
| ----------------- | -------- | -------- | ----------------------------------------------- |
| archive           | filePath | Yes\*    | Path to zip archive if using archived template. |
| template\_uid     | string   | Yes\*    | Reference to saved template UID.                |
| content           | string   | Yes\*    | HTML content of the campaign.                   |
| inline\_css       | yes/no   | Yes      | Enable/disable inline CSS.                      |
| plain\_text       | string   | No       | Manually set plain text version or leave null.  |
| auto\_plain\_text | yes/no   | Yes      | Automatically generate plain text.              |

\*At least one of `archive`, `template_uid`, or `content` must be provided.

***

#### ⚙️ Options Block

| Parameter                         | Type    | Description                                         |
| --------------------------------- | ------- | --------------------------------------------------- |
| url\_tracking                     | yes/no  | Enable/disable URL tracking.                        |
| json\_feed                        | yes/no  | Enable/disable JSON feed.                           |
| xml\_feed                         | yes/no  | Enable/disable XML feed.                            |
| plain\_text\_email                | yes/no  | Send email as plain text.                           |
| email\_stats                      | string  | Optional: Send campaign stats to this email.        |
| autoresponder\_event              | string  | Values: AFTER-SUBSCRIBE, AFTER-CAMPAIGN-OPEN.       |
| autoresponder\_time\_unit         | string  | Time unit: minute, hour, day, etc.                  |
| autoresponder\_time\_value        | integer | Interval value for autoresponder.                   |
| autoresponder\_open\_campaign\_id | integer | Campaign ID to link with for open-event responders. |
| cronjob                           | string  | Cron syntax for recurring campaigns.                |
| cronjob\_enabled                  | integer | 1 (enabled) or 0 (disabled).                        |

***

#### 🔐 Authorization Header

```
X-API-KEY: your-api-key-here
```

***

#### 💻 PHP Example

```php
// CREATE CAMPAIGN
$response = $endpoint->create([
    'name'          => 'April Campaign via API', // required
    'type'          => 'regular', // optional: regular or autoresponder
    'from_name'     => 'Sophie Turner', // required
    'from_email'    => 'sophie.turner@demo.com', // required
    'subject'       => 'Hello from the April Campaign (via API)', // required
    'reply_to'      => 'sophie.turner@demo.com', // required
    'send_at'       => date('Y-m-d H:i:s', strtotime('+10 hours')), // required, this will use the timezone which customer selected
    'list_uid'      => 'LIST-UNIQUE-ID', // required
    'segment_uid'   => 'SEGMENT-UNIQUE-ID', // optional, only to narrow down

    // optional block, defaults are shown
    'options' => [
        'url_tracking'      => 'no', // yes | no
        'json_feed'         => 'no', // yes | no
        'xml_feed'          => 'no', // yes | no
        'plain_text_email'  => 'yes', // yes | no
        'email_stats'       => null, // a valid email address where we should send the stats after campaign done

        // - if autoresponder uncomment below:
        //'autoresponder_event'            => 'AFTER-SUBSCRIBE', // AFTER-SUBSCRIBE or AFTER-CAMPAIGN-OPEN
        //'autoresponder_time_unit'        => 'hour', // minute, hour, day, week, month, year
        //'autoresponder_time_value'       => 1, // 1 hour after event
        //'autoresponder_open_campaign_id' => 1, // INT id of campaign, only if event is AFTER-CAMPAIGN-OPEN,

    ],

    // required block, archive or template_uid or content => required.
    'template' => [
        //'archive'         => file_get_contents(__DIR__ . '/template-example.zip'),
        //'template_uid'    => 'TEMPLATE-UNIQUE-ID',
        'content'           => file_get_contents(__DIR__ . '/template-example.html'),
        'inline_css'        => 'no', // yes | no
        'plain_text'        => null, // leave empty to auto generate
        'auto_plain_text'   => 'yes', // yes | no
    ],
]);

// DISPLAY RESPONSE
echo '<hr /><pre>';
print_r($response->body);
echo '</pre>';
```

***

#### 📦 Sample JSON Response

```json
{
  "status": "success",
  "campaign_uid": "xy5934demo938"
}
```
