curl --request POST \
--url https://api.starleads.co/Campaign \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"name": "My prospecting campaign",
"agentId": "agent-123-abc",
"phoneNumber": "+33123456789",
"maxRetries": 3,
"delayBetweenRetries": 2,
"webhookUrl": "https://example.com/webhook",
"timezone": "Europe/Paris",
"schedule": [
{
"day": "Monday",
"timeRanges": [
{
"startTime": "09:00:00",
"endTime": "12:00:00"
},
{
"startTime": "14:00:00",
"endTime": "17:00:00"
}
]
}
]
}
'import requests
url = "https://api.starleads.co/Campaign"
payload = {
"name": "My prospecting campaign",
"agentId": "agent-123-abc",
"phoneNumber": "+33123456789",
"maxRetries": 3,
"delayBetweenRetries": 2,
"webhookUrl": "https://example.com/webhook",
"timezone": "Europe/Paris",
"schedule": [
{
"day": "Monday",
"timeRanges": [
{
"startTime": "09:00:00",
"endTime": "12:00:00"
},
{
"startTime": "14:00:00",
"endTime": "17:00:00"
}
]
}
]
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My prospecting campaign',
agentId: 'agent-123-abc',
phoneNumber: '+33123456789',
maxRetries: 3,
delayBetweenRetries: 2,
webhookUrl: 'https://example.com/webhook',
timezone: 'Europe/Paris',
schedule: [
{
day: 'Monday',
timeRanges: [
{startTime: '09:00:00', endTime: '12:00:00'},
{startTime: '14:00:00', endTime: '17:00:00'}
]
}
]
})
};
fetch('https://api.starleads.co/Campaign', 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.starleads.co/Campaign",
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' => 'My prospecting campaign',
'agentId' => 'agent-123-abc',
'phoneNumber' => '+33123456789',
'maxRetries' => 3,
'delayBetweenRetries' => 2,
'webhookUrl' => 'https://example.com/webhook',
'timezone' => 'Europe/Paris',
'schedule' => [
[
'day' => 'Monday',
'timeRanges' => [
[
'startTime' => '09:00:00',
'endTime' => '12:00:00'
],
[
'startTime' => '14:00:00',
'endTime' => '17:00:00'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.starleads.co/Campaign"
payload := strings.NewReader("{\n \"name\": \"My prospecting campaign\",\n \"agentId\": \"agent-123-abc\",\n \"phoneNumber\": \"+33123456789\",\n \"maxRetries\": 3,\n \"delayBetweenRetries\": 2,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"timezone\": \"Europe/Paris\",\n \"schedule\": [\n {\n \"day\": \"Monday\",\n \"timeRanges\": [\n {\n \"startTime\": \"09:00:00\",\n \"endTime\": \"12:00:00\"\n },\n {\n \"startTime\": \"14:00:00\",\n \"endTime\": \"17:00:00\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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.starleads.co/Campaign")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My prospecting campaign\",\n \"agentId\": \"agent-123-abc\",\n \"phoneNumber\": \"+33123456789\",\n \"maxRetries\": 3,\n \"delayBetweenRetries\": 2,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"timezone\": \"Europe/Paris\",\n \"schedule\": [\n {\n \"day\": \"Monday\",\n \"timeRanges\": [\n {\n \"startTime\": \"09:00:00\",\n \"endTime\": \"12:00:00\"\n },\n {\n \"startTime\": \"14:00:00\",\n \"endTime\": \"17:00:00\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.starleads.co/Campaign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My prospecting campaign\",\n \"agentId\": \"agent-123-abc\",\n \"phoneNumber\": \"+33123456789\",\n \"maxRetries\": 3,\n \"delayBetweenRetries\": 2,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"timezone\": \"Europe/Paris\",\n \"schedule\": [\n {\n \"day\": \"Monday\",\n \"timeRanges\": [\n {\n \"startTime\": \"09:00:00\",\n \"endTime\": \"12:00:00\"\n },\n {\n \"startTime\": \"14:00:00\",\n \"endTime\": \"17:00:00\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"agentId": "<string>",
"phoneNumber": "<string>",
"maxRetries": 123,
"delayBetweenRetries": 123,
"webhookUrl": "<string>",
"country": "<string>",
"timezone": "<string>",
"schedule": [
{
"timeRanges": [
{
"startTime": "09:00:00",
"endTime": "12:00:00"
}
]
}
],
"isActive": true
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Create a campaign
Creates a new campaign associated with an AI agent. The campaign is created in an inactive state (isActive: false). A phone number is required when the agent’s channel is Phone. Default values are applied for optional fields not provided.
curl --request POST \
--url https://api.starleads.co/Campaign \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"name": "My prospecting campaign",
"agentId": "agent-123-abc",
"phoneNumber": "+33123456789",
"maxRetries": 3,
"delayBetweenRetries": 2,
"webhookUrl": "https://example.com/webhook",
"timezone": "Europe/Paris",
"schedule": [
{
"day": "Monday",
"timeRanges": [
{
"startTime": "09:00:00",
"endTime": "12:00:00"
},
{
"startTime": "14:00:00",
"endTime": "17:00:00"
}
]
}
]
}
'import requests
url = "https://api.starleads.co/Campaign"
payload = {
"name": "My prospecting campaign",
"agentId": "agent-123-abc",
"phoneNumber": "+33123456789",
"maxRetries": 3,
"delayBetweenRetries": 2,
"webhookUrl": "https://example.com/webhook",
"timezone": "Europe/Paris",
"schedule": [
{
"day": "Monday",
"timeRanges": [
{
"startTime": "09:00:00",
"endTime": "12:00:00"
},
{
"startTime": "14:00:00",
"endTime": "17:00:00"
}
]
}
]
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My prospecting campaign',
agentId: 'agent-123-abc',
phoneNumber: '+33123456789',
maxRetries: 3,
delayBetweenRetries: 2,
webhookUrl: 'https://example.com/webhook',
timezone: 'Europe/Paris',
schedule: [
{
day: 'Monday',
timeRanges: [
{startTime: '09:00:00', endTime: '12:00:00'},
{startTime: '14:00:00', endTime: '17:00:00'}
]
}
]
})
};
fetch('https://api.starleads.co/Campaign', 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.starleads.co/Campaign",
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' => 'My prospecting campaign',
'agentId' => 'agent-123-abc',
'phoneNumber' => '+33123456789',
'maxRetries' => 3,
'delayBetweenRetries' => 2,
'webhookUrl' => 'https://example.com/webhook',
'timezone' => 'Europe/Paris',
'schedule' => [
[
'day' => 'Monday',
'timeRanges' => [
[
'startTime' => '09:00:00',
'endTime' => '12:00:00'
],
[
'startTime' => '14:00:00',
'endTime' => '17:00:00'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.starleads.co/Campaign"
payload := strings.NewReader("{\n \"name\": \"My prospecting campaign\",\n \"agentId\": \"agent-123-abc\",\n \"phoneNumber\": \"+33123456789\",\n \"maxRetries\": 3,\n \"delayBetweenRetries\": 2,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"timezone\": \"Europe/Paris\",\n \"schedule\": [\n {\n \"day\": \"Monday\",\n \"timeRanges\": [\n {\n \"startTime\": \"09:00:00\",\n \"endTime\": \"12:00:00\"\n },\n {\n \"startTime\": \"14:00:00\",\n \"endTime\": \"17:00:00\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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.starleads.co/Campaign")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My prospecting campaign\",\n \"agentId\": \"agent-123-abc\",\n \"phoneNumber\": \"+33123456789\",\n \"maxRetries\": 3,\n \"delayBetweenRetries\": 2,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"timezone\": \"Europe/Paris\",\n \"schedule\": [\n {\n \"day\": \"Monday\",\n \"timeRanges\": [\n {\n \"startTime\": \"09:00:00\",\n \"endTime\": \"12:00:00\"\n },\n {\n \"startTime\": \"14:00:00\",\n \"endTime\": \"17:00:00\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.starleads.co/Campaign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My prospecting campaign\",\n \"agentId\": \"agent-123-abc\",\n \"phoneNumber\": \"+33123456789\",\n \"maxRetries\": 3,\n \"delayBetweenRetries\": 2,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"timezone\": \"Europe/Paris\",\n \"schedule\": [\n {\n \"day\": \"Monday\",\n \"timeRanges\": [\n {\n \"startTime\": \"09:00:00\",\n \"endTime\": \"12:00:00\"\n },\n {\n \"startTime\": \"14:00:00\",\n \"endTime\": \"17:00:00\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"agentId": "<string>",
"phoneNumber": "<string>",
"maxRetries": 123,
"delayBetweenRetries": 123,
"webhookUrl": "<string>",
"country": "<string>",
"timezone": "<string>",
"schedule": [
{
"timeRanges": [
{
"startTime": "09:00:00",
"endTime": "12:00:00"
}
]
}
],
"isActive": true
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Authorizations
Headers
Body
Request payload to create a new campaign
Name of the campaign
ID of the AI agent to associate with the campaign
Outbound phone number. Required if the agent channel is Phone. Must belong to the company's phone number list
Maximum number of call retries (default: 3, min: 1, max: 4)
1 <= x <= 4Delay between retries in hours (default: 2). Must be greater than 0
Webhook URL to receive campaign events. Must be a valid HTTP/HTTPS URL
Timezone identifier (default: "Europe/Paris")
Campaign schedule. Defaults to Monday-Friday 09:00-12:00 / 14:00-17:00 if not provided
Show child attributes
Show child attributes
Response
Campaign created successfully
Response returned after a campaign is successfully created
Unique identifier of the created campaign
Name of the campaign
ID of the AI agent associated with the campaign
Outbound phone number (null for web agents)
Maximum number of retry attempts (between 1 and 4)
Delay between retry attempts in hours
Webhook URL for campaign event notifications
Country code (always FR)
Timezone identifier (e.g. Europe/Paris)
Weekly schedule defining the calling time slots
Show child attributes
Show child attributes
Whether the campaign is active (always false at creation)

