> 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"
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://api.senderwiz.com/customer/campaigns/create-a-campaign.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
