# Create a campaign draft

## Prerequisites

1. Have a validated sender linked to your API Key
2. Have a contact list containing all the recipients you want to send to your campaign.


Optionally, have a sengment you would like to apply to your list to target a specific demographic.

To create a campaign draft, perform a `POST` on the `/campaigndraft` resource. You need to select a `Locale`, `Sender`, `SenderEmail`, `Subject` and `ContactsListID`.

If you want to send your campaign to a segment of your contact list, please also enter a `SegmentationID` (more info on segmentation can be found here).

### Example

cURL
```shell
# Create : CampaignDraft data
curl -s \
	-X POST \
	--user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
	https://api.mailjet.com/v3/REST/campaigndraft \
	-H 'Content-Type: application/json' \
	-d '{
		"Locale":"en_US",
		"Sender":"MisterMailjet",
		"SenderEmail":"Mister@mailjet.com",
		"Subject":"Greetings from Mailjet",
		"ContactsListID":"$ID_CONTACTSLIST",
		"Title":"Friday newsletter"
	}'
```

PHP
```php
<?php
/*
Create : CampaignDraft data
*/
require 'vendor/autoload.php';
use \Mailjet\Resources;
$mj = new \Mailjet\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'));
$body = [
    'Locale' => "en_US",
    'Sender' => "MisterMailjet",
    'SenderEmail' => "Mister@mailjet.com",
    'Subject' => "Greetings from Mailjet",
    'ContactsListID' => "$ID_CONTACTSLIST",
    'Title' => "Friday newsletter"
];
$response = $mj->post(Resources::$Campaigndraft, ['body' => $body]);
$response->success() && var_dump($response->getData());
?>
```

Node.js
```javascript
/**
 *
 * Create : CampaignDraft data
 *
 */
const mailjet = require ('node-mailjet')
	.connect(process.env.MJ_APIKEY_PUBLIC, process.env.MJ_APIKEY_PRIVATE)
const request = mailjet
	.post("campaigndraft")
	.request({
		"Locale":"en_US",
		"Sender":"MisterMailjet",
		"SenderEmail":"Mister@mailjet.com",
		"Subject":"Greetings from Mailjet",
		"ContactsListID":"$ID_CONTACTSLIST",
		"Title":"Friday newsletter"
	})
request
	.then((result) => {
		console.log(result.body)
	})
	.catch((err) => {
		console.log(err.statusCode)
	})
```

Ruby
```ruby
# Create : CampaignDraft data
require 'mailjet'
Mailjet.configure do |config|
  config.api_key = ENV['MJ_APIKEY_PUBLIC']
  config.secret_key = ENV['MJ_APIKEY_PRIVATE']  
end
variable = Mailjet::Campaigndraft.create(locale: "en_US",
sender: "MisterMailjet",
sender_email: "Mister@mailjet.com",
subject: "Greetings from Mailjet",
contacts_list_id: "$ID_CONTACTSLIST",
title: "Friday newsletter"
)
p variable.attributes['Data']
```

Python
```python
"""
Create : CampaignDraft data
"""
from mailjet_rest import Client
import os
api_key = os.environ['MJ_APIKEY_PUBLIC']
api_secret = os.environ['MJ_APIKEY_PRIVATE']
mailjet = Client(auth=(api_key, api_secret))
data = {
  'Locale': 'en_US',
  'Sender': 'MisterMailjet',
  'SenderEmail': 'Mister@mailjet.com',
  'Subject': 'Greetings from Mailjet',
  'ContactsListID': '$ID_CONTACTSLIST',
  'Title': 'Friday newsletter'
}
result = mailjet.campaigndraft.create(data=data)
print result.status_code
print result.json()
```

Java
```java
package com.my.project;
import com.mailjet.client.errors.MailjetException;
import com.mailjet.client.errors.MailjetSocketTimeoutException;
import com.mailjet.client.MailjetClient;
import com.mailjet.client.MailjetRequest;
import com.mailjet.client.MailjetResponse;
import com.mailjet.client.resource.Campaigndraft;
import org.json.JSONArray;
import org.json.JSONObject;
public class MyClass {
    /**
     * Create : CampaignDraft data
     */
    public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {
      MailjetClient client;
      MailjetRequest request;
      MailjetResponse response;
      client = new MailjetClient(System.getenv("MJ_APIKEY_PUBLIC"), System.getenv("MJ_APIKEY_PRIVATE"));
      request = new MailjetRequest(Campaigndraft.resource)
			.property(Campaigndraft.LOCALE, "en_US")
			.property(Campaigndraft.SENDER, "MisterMailjet")
			.property(Campaigndraft.SENDEREMAIL, "Mister@mailjet.com")
			.property(Campaigndraft.SUBJECT, "Greetings from Mailjet")
			.property(Campaigndraft.CONTACTSLISTID, "$ID_CONTACTSLIST")
			.property(Campaigndraft.TITLE, "Friday newsletter");
      response = client.post(request);
      System.out.println(response.getStatus());
      System.out.println(response.getData());
    }
}
```

Go
```go
/*
Create : CampaignDraft data
*/
package main
import (
	"fmt"
	"log"
	"os"
	mailjet "github.com/mailjet/mailjet-apiv3-go"
	"github.com/mailjet/mailjet-apiv3-go/resources"
)
func main () {
	mailjetClient := NewMailjetClient(os.Getenv("MJ_APIKEY_PUBLIC"), os.Getenv("MJ_APIKEY_PRIVATE"))
	var data []resources.Campaigndraft
	mr := &Request{
	  Resource: "campaigndraft",
	}
	fmr := &FullRequest{
	  Info: mr,
	  Payload: &resources.Campaigndraft {
      Locale: "en_US",
      Sender: "MisterMailjet",
      SenderEmail: "Mister@mailjet.com",
      Subject: "Greetings from Mailjet",
      ContactsListID: "$ID_CONTACTSLIST",
      Title: "Friday newsletter",
    },
	}
	err := mailjetClient.Post(fmr, &data)
	if err != nil {
	  fmt.Println(err)
	}
	fmt.Printf("Data array: %+v\n", data)
}
```

C#
```csharp
using Mailjet.Client;
using Mailjet.Client.Resources;
using System;
using Newtonsoft.Json.Linq;
namespace Mailjet.ConsoleApplication
{
   class Program
   {
      /// <summary>
      /// Create : CampaignDraft data
      /// </summary>
      static void Main(string[] args)
      {
         RunAsync().Wait();
      }
      static async Task RunAsync()
      {
         MailjetClient client = new MailjetClient(Environment.GetEnvironmentVariable("MJ_APIKEY_PUBLIC"), Environment.GetEnvironmentVariable("MJ_APIKEY_PRIVATE"));
         MailjetRequest request = new MailjetRequest
         {
            Resource = Campaigndraft.Resource,
         }
            .Property(Campaigndraft.Locale, "en_US")
            .Property(Campaigndraft.Sender, "MisterMailjet")
            .Property(Campaigndraft.SenderEmail, "Mister@mailjet.com")
            .Property(Campaigndraft.Subject, "Greetings from Mailjet")
            .Property(Campaigndraft.ContactsListID, "$ID_CONTACTSLIST")
            .Property(Campaigndraft.Title, "Friday newsletter");
         MailjetResponse response = await client.PostAsync(request);
         if (response.IsSuccessStatusCode)
         {
            Console.WriteLine(string.Format("Total: {0}, Count: {1}\n", response.GetTotal(), response.GetCount()));
            Console.WriteLine(response.GetData());
         }
         else
         {
            Console.WriteLine(string.Format("StatusCode: {0}\n", response.StatusCode));
            Console.WriteLine(string.Format("ErrorInfo: {0}\n", response.GetErrorInfo()));
            Console.WriteLine(response.GetData());
            Console.WriteLine(string.Format("ErrorMessage: {0}\n", response.GetErrorMessage()));
         }
      }
   }
}
```

### API Response

```
{
  "Count": 1,
  "Data": [
    {
      "AXFractionName": "",
      "AXTesting": "",
      "CampaignID": "",
      "ContactsListID": "$ID_CONTACTSLIST",
      "CreatedAt": "",
      "Current": "",
      "DeliveredAt": "",
      "EditMode": "",
      "ID": "",
      "IsStarred": "false",
      "IsTextPartIncluded": "false",
      "Locale": "en_US",
      "ModifiedAt": "",
      "Preset": "",
      "ReplyEmail": "",
      "SegmentationID": "",
      "Sender": "MisterMailjet",
      "SenderEmail": "Mister@mailjet.com",
      "SenderName": "",
      "Status": "",
      "Subject": "Greetings from Mailjet",
      "Template": "",
      "Title": "Friday newsletter",
      "Url": "",
      "Used": "false"
    }
  ],
  "Total": 1
}
```