Campaigns
Create a campaign
Create a new campaign with optional inline steps and contacts.
POST
/
campaigns
Create a campaign
curl --request POST \
--url https://api.seamless.ai/api/client/v2/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Summer Outreach",
"emailAccountIds": [
"<string>"
],
"steps": [
{
"type": "<string>",
"name": "<string>",
"description": "<string>",
"dueDay": 123,
"templateId": 123,
"templateData": {}
}
],
"contactIds": [
123
],
"maxActiveContacts": 100
}
'import requests
url = "https://api.seamless.ai/api/client/v2/campaigns"
payload = {
"name": "Summer Outreach",
"emailAccountIds": ["<string>"],
"steps": [
{
"type": "<string>",
"name": "<string>",
"description": "<string>",
"dueDay": 123,
"templateId": 123,
"templateData": {}
}
],
"contactIds": [123],
"maxActiveContacts": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Summer Outreach',
emailAccountIds: ['<string>'],
steps: [
{
type: '<string>',
name: '<string>',
description: '<string>',
dueDay: 123,
templateId: 123,
templateData: {}
}
],
contactIds: [123],
maxActiveContacts: 100
})
};
fetch('https://api.seamless.ai/api/client/v2/campaigns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.seamless.ai/api/client/v2/campaigns",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Summer Outreach',
'emailAccountIds' => [
'<string>'
],
'steps' => [
[
'type' => '<string>',
'name' => '<string>',
'description' => '<string>',
'dueDay' => 123,
'templateId' => 123,
'templateData' => [
]
]
],
'contactIds' => [
123
],
'maxActiveContacts' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.seamless.ai/api/client/v2/campaigns"
payload := strings.NewReader("{\n \"name\": \"Summer Outreach\",\n \"emailAccountIds\": [\n \"<string>\"\n ],\n \"steps\": [\n {\n \"type\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"dueDay\": 123,\n \"templateId\": 123,\n \"templateData\": {}\n }\n ],\n \"contactIds\": [\n 123\n ],\n \"maxActiveContacts\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.seamless.ai/api/client/v2/campaigns")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Summer Outreach\",\n \"emailAccountIds\": [\n \"<string>\"\n ],\n \"steps\": [\n {\n \"type\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"dueDay\": 123,\n \"templateId\": 123,\n \"templateData\": {}\n }\n ],\n \"contactIds\": [\n 123\n ],\n \"maxActiveContacts\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.seamless.ai/api/client/v2/campaigns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Summer Outreach\",\n \"emailAccountIds\": [\n \"<string>\"\n ],\n \"steps\": [\n {\n \"type\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"dueDay\": 123,\n \"templateId\": 123,\n \"templateData\": {}\n }\n ],\n \"contactIds\": [\n 123\n ],\n \"maxActiveContacts\": 100\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"campaign": {
"campaignId": "<string>",
"name": "<string>",
"identifier": "<string>",
"status": "draft",
"isPublic": true,
"maxActiveContacts": 123,
"numContacts": "<string>",
"numSteps": "<string>",
"numDays": 123,
"userIdOwner": "<string>",
"ownerName": "<string>",
"startedAt": "2023-11-07T05:31:56Z",
"pausedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"emailAccountIds": [
"<string>"
]
},
"steps": [
{
"campaignStepId": "<string>",
"campaignId": "<string>",
"type": "<string>",
"name": "<string>",
"description": "<string>",
"status": "<string>",
"stepNumber": 123,
"dueDay": 123,
"templateId": "<string>",
"createdAt": "2023-11-07T05:31:56Z"
}
],
"contactsAdded": 123
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
OAuth2ApiKeyAuth
The access token received from the authorization server in the OAuth 2.0 flow.
Body
application/json
Campaign name.
Example:
"Summer Outreach"
Public-facing email account IDs to link as sending addresses.
Steps to create inline with the campaign.
Show child attributes
Show child attributes
Contact IDs to enroll in the campaign (max 500).
Maximum array length:
500Maximum number of contacts that may be actively engaged in the campaign at one time. Must be set to a value greater than 0 before the campaign can be started via POST /campaigns/{id}/actions (action START). Requires the Max Active Contacts feature to be enabled for your organization.
Required range:
x >= 1Example:
100
Was this page helpful?
⌘I
Create a campaign
curl --request POST \
--url https://api.seamless.ai/api/client/v2/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Summer Outreach",
"emailAccountIds": [
"<string>"
],
"steps": [
{
"type": "<string>",
"name": "<string>",
"description": "<string>",
"dueDay": 123,
"templateId": 123,
"templateData": {}
}
],
"contactIds": [
123
],
"maxActiveContacts": 100
}
'import requests
url = "https://api.seamless.ai/api/client/v2/campaigns"
payload = {
"name": "Summer Outreach",
"emailAccountIds": ["<string>"],
"steps": [
{
"type": "<string>",
"name": "<string>",
"description": "<string>",
"dueDay": 123,
"templateId": 123,
"templateData": {}
}
],
"contactIds": [123],
"maxActiveContacts": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Summer Outreach',
emailAccountIds: ['<string>'],
steps: [
{
type: '<string>',
name: '<string>',
description: '<string>',
dueDay: 123,
templateId: 123,
templateData: {}
}
],
contactIds: [123],
maxActiveContacts: 100
})
};
fetch('https://api.seamless.ai/api/client/v2/campaigns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.seamless.ai/api/client/v2/campaigns",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Summer Outreach',
'emailAccountIds' => [
'<string>'
],
'steps' => [
[
'type' => '<string>',
'name' => '<string>',
'description' => '<string>',
'dueDay' => 123,
'templateId' => 123,
'templateData' => [
]
]
],
'contactIds' => [
123
],
'maxActiveContacts' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.seamless.ai/api/client/v2/campaigns"
payload := strings.NewReader("{\n \"name\": \"Summer Outreach\",\n \"emailAccountIds\": [\n \"<string>\"\n ],\n \"steps\": [\n {\n \"type\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"dueDay\": 123,\n \"templateId\": 123,\n \"templateData\": {}\n }\n ],\n \"contactIds\": [\n 123\n ],\n \"maxActiveContacts\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.seamless.ai/api/client/v2/campaigns")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Summer Outreach\",\n \"emailAccountIds\": [\n \"<string>\"\n ],\n \"steps\": [\n {\n \"type\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"dueDay\": 123,\n \"templateId\": 123,\n \"templateData\": {}\n }\n ],\n \"contactIds\": [\n 123\n ],\n \"maxActiveContacts\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.seamless.ai/api/client/v2/campaigns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Summer Outreach\",\n \"emailAccountIds\": [\n \"<string>\"\n ],\n \"steps\": [\n {\n \"type\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"dueDay\": 123,\n \"templateId\": 123,\n \"templateData\": {}\n }\n ],\n \"contactIds\": [\n 123\n ],\n \"maxActiveContacts\": 100\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"campaign": {
"campaignId": "<string>",
"name": "<string>",
"identifier": "<string>",
"status": "draft",
"isPublic": true,
"maxActiveContacts": 123,
"numContacts": "<string>",
"numSteps": "<string>",
"numDays": 123,
"userIdOwner": "<string>",
"ownerName": "<string>",
"startedAt": "2023-11-07T05:31:56Z",
"pausedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"emailAccountIds": [
"<string>"
]
},
"steps": [
{
"campaignStepId": "<string>",
"campaignId": "<string>",
"type": "<string>",
"name": "<string>",
"description": "<string>",
"status": "<string>",
"stepNumber": 123,
"dueDay": 123,
"templateId": "<string>",
"createdAt": "2023-11-07T05:31:56Z"
}
],
"contactsAdded": 123
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}