curl --request POST \
--url https://api.naturalead.ai/api/campaigns/{id}/launch \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.naturalead.ai/api/campaigns/{id}/launch"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.naturalead.ai/api/campaigns/{id}/launch', 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.naturalead.ai/api/campaigns/{id}/launch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.naturalead.ai/api/campaigns/{id}/launch"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.naturalead.ai/api/campaigns/{id}/launch")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.naturalead.ai/api/campaigns/{id}/launch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"_id": "<string>",
"accountId": "<string>",
"name": "<string>",
"agentConfigId": "<string>",
"channel": "whatsapp",
"status": "draft",
"schedule": {
"startAt": "2023-11-07T05:31:56Z",
"rateLimit": 5,
"activeHours": {
"start": "09:00",
"end": "17:00",
"timezone": "America/New_York"
},
"activeDays": [
1,
2,
3,
4,
5
]
},
"leads": [
{
"leadId": "<string>",
"status": "pending",
"conversationId": "<string>",
"sentAt": "2023-11-07T05:31:56Z",
"error": "<string>"
}
],
"stats": {
"totalLeads": 0,
"sent": 0,
"delivered": 0,
"replied": 0,
"qualified": 0,
"disqualified": 0,
"failed": 0
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"leadFilter": {
"statuses": [
"<string>"
],
"tags": [
"<string>"
],
"importedAfter": "2023-11-07T05:31:56Z"
},
"advancedFilter": {
"conditions": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>"
}
]
},
"manualLeadIds": [
"<string>"
]
}{
"error": "Campaign not found or cannot be launched"
}{
"error": "Failed to process request"
}Launch Campaign
Launches a draft or scheduled campaign, starting outreach to matched leads.
The campaign transitions to running status and begins sending messages
according to its schedule and rate limit settings.
Requires campaigns:launch permission.
curl --request POST \
--url https://api.naturalead.ai/api/campaigns/{id}/launch \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.naturalead.ai/api/campaigns/{id}/launch"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.naturalead.ai/api/campaigns/{id}/launch', 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.naturalead.ai/api/campaigns/{id}/launch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.naturalead.ai/api/campaigns/{id}/launch"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.naturalead.ai/api/campaigns/{id}/launch")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.naturalead.ai/api/campaigns/{id}/launch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"_id": "<string>",
"accountId": "<string>",
"name": "<string>",
"agentConfigId": "<string>",
"channel": "whatsapp",
"status": "draft",
"schedule": {
"startAt": "2023-11-07T05:31:56Z",
"rateLimit": 5,
"activeHours": {
"start": "09:00",
"end": "17:00",
"timezone": "America/New_York"
},
"activeDays": [
1,
2,
3,
4,
5
]
},
"leads": [
{
"leadId": "<string>",
"status": "pending",
"conversationId": "<string>",
"sentAt": "2023-11-07T05:31:56Z",
"error": "<string>"
}
],
"stats": {
"totalLeads": 0,
"sent": 0,
"delivered": 0,
"replied": 0,
"qualified": 0,
"disqualified": 0,
"failed": 0
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"leadFilter": {
"statuses": [
"<string>"
],
"tags": [
"<string>"
],
"importedAfter": "2023-11-07T05:31:56Z"
},
"advancedFilter": {
"conditions": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>"
}
]
},
"manualLeadIds": [
"<string>"
]
}{
"error": "Campaign not found or cannot be launched"
}{
"error": "Failed to process request"
}Authorizations
API key for programmatic access. Keys use the format nl_live_<64 hex>
or nl_test_<64 hex> and are scoped to an account's RBAC permissions.
Path Parameters
Campaign ID (MongoDB ObjectId)
"665a1b2c3d4e5f6a7b8c9d0e"
Response
Campaign launched successfully
A campaign orchestrates batch AI-driven outreach to leads.
Unique campaign identifier
Account that owns this campaign
Campaign display name
Reference to the AI agent configuration used for conversations
Messaging channel for outreach
whatsapp, telegram, email Current campaign lifecycle status
draft, scheduled, running, paused, completed Campaign scheduling and rate limit configuration.
Show child attributes
Show child attributes
Per-lead tracking for the campaign
Show child attributes
Show child attributes
Aggregate statistics for the campaign.
Show child attributes
Show child attributes
Basic lead filter criteria.
Show child attributes
Show child attributes
Advanced filter with multiple conditions.
Show child attributes
Show child attributes
Explicitly selected lead IDs to include in the campaign