Get Campaign
curl --request GET \
--url https://api.example.com/v1/campaigns/{id}import requests
url = "https://api.example.com/v1/campaigns/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/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.example.com/v1/campaigns/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/campaigns/{id}"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/campaigns/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/campaigns/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"campaign": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"status": "<string>",
"daily_send_limit": 123,
"delay_between_emails": 123,
"sending_timezone": "<string>",
"send_on_weekends": true,
"track_opens": true,
"track_clicks": true,
"show_unsubscribe": true,
"steps": [
{}
],
"contacts": [
{}
],
"created_at": "<string>",
"updated_at": "<string>"
}
}
}Campaigns
Get Campaign
Retrieve a campaign’s full configuration including steps and contacts
GET
/
v1
/
campaigns
/
{id}
Get Campaign
curl --request GET \
--url https://api.example.com/v1/campaigns/{id}import requests
url = "https://api.example.com/v1/campaigns/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/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.example.com/v1/campaigns/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/campaigns/{id}"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/campaigns/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/campaigns/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"campaign": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"status": "<string>",
"daily_send_limit": 123,
"delay_between_emails": 123,
"sending_timezone": "<string>",
"send_on_weekends": true,
"track_opens": true,
"track_clicks": true,
"show_unsubscribe": true,
"steps": [
{}
],
"contacts": [
{}
],
"created_at": "<string>",
"updated_at": "<string>"
}
}
}Request
Path Parameters
string
required
The campaign’s unique ID (UUID)
Headers
Authorization: Bearer wbk_your_api_key_here
Requires an API key with the
campaigns:read permission.Response
object
Show properties
Show properties
object
Show Campaign object
Show Campaign object
string
Campaign UUID
string
Campaign name
string
Free-form description
string
draft, active, paused, or completedinteger
Maximum emails to send per day
integer
Seconds to wait between sends within a day
string
IANA timezone (e.g.,
Europe/Berlin)boolean
Whether sends are allowed on Saturday and Sunday
boolean
Open tracking enabled
boolean
Click tracking enabled
boolean
Whether unsubscribe footer is appended
array
Array of step objects (subject, body, delay, send_condition)
array
Array of contact IDs enrolled in this campaign
string
ISO 8601 timestamp
string
ISO 8601 timestamp
curl https://data.leadlex.com/functions/v1/api-gateway/v1/campaigns/cmp_abc123 \
-H "Authorization: Bearer wbk_your_api_key_here"
import requests
API_KEY = "wbk_your_api_key_here"
BASE_URL = "https://data.leadlex.com/functions/v1/api-gateway"
CAMPAIGN_ID = "cmp_abc123"
response = requests.get(
f"{BASE_URL}/v1/campaigns/{CAMPAIGN_ID}",
headers={"Authorization": f"Bearer {API_KEY}"},
)
campaign = response.json()["data"]["campaign"]
const CAMPAIGN_ID = 'cmp_abc123';
const response = await fetch(
`https://data.leadlex.com/functions/v1/api-gateway/v1/campaigns/${CAMPAIGN_ID}`,
{ headers: { 'Authorization': 'Bearer wbk_your_api_key_here' } }
);
const { data } = await response.json();
Example Response
{
"data": {
"campaign": {
"id": "cmp_abc123",
"name": "Q2 GC Outreach",
"description": "Warm outreach to general counsels at mid-market companies",
"status": "active",
"daily_send_limit": 50,
"delay_between_emails": 120,
"sending_timezone": "Europe/Berlin",
"send_on_weekends": false,
"track_opens": true,
"track_clicks": true,
"show_unsubscribe": true,
"steps": [
{
"id": "step_1",
"subject": "Quick question about {{company_name}}",
"body": "Hi {{first_name}}, ...",
"delay_days": 0,
"delay_hours": 0,
"send_condition": "always"
}
],
"contacts": ["123e4567-e89b-12d3-a456-426614174000"],
"created_at": "2026-03-15T09:00:00Z",
"updated_at": "2026-04-10T14:22:00Z"
}
}
}
Errors
| Status | Code | Description |
|---|---|---|
| 401 | invalid_key | Invalid or expired API key |
| 403 | insufficient_permissions | Missing campaigns:read permission |
| 404 | campaign_not_found | No campaign with this ID |
| 429 | rate_limited | Rate limit exceeded |