curl --request GET \
--url https://api.naturalead.ai/api/campaigns/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.naturalead.ai/api/campaigns/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.naturalead.ai/api/campaigns/{id}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}"
req, _ := http.NewRequest("GET", 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.get("https://api.naturalead.ai/api/campaigns/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.naturalead.ai/api/campaigns/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.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"
}{
"error": "Failed to process request"
}Get Campaign
Returns a single campaign by ID, including its full lead list and stats.
Requires campaigns:view permission.
curl --request GET \
--url https://api.naturalead.ai/api/campaigns/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.naturalead.ai/api/campaigns/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.naturalead.ai/api/campaigns/{id}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}"
req, _ := http.NewRequest("GET", 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.get("https://api.naturalead.ai/api/campaigns/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.naturalead.ai/api/campaigns/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.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"
}{
"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 details
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