Campaigns
List Campaigns
List all campaigns in your account with optional filtering and pagination using the AutoSend API.
GET
/
campaigns
curl --request GET \
--url 'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20' \
--header 'Authorization: Bearer <token>'
import requests
url = "https://api.autosend.com/v1/campaigns"
params = {
"status": "draft",
"page": 1,
"limit": 20
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const response = await fetch(
'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20',
{
method: 'GET',
headers: {
Authorization: 'Bearer <token>',
},
}
);
const data = await response.json();
console.log(data);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20", nil)
req.Header.Set("Authorization", "Bearer <token>")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
require 'json'
uri = URI('https://api.autosend.com/v1/campaigns')
uri.query = URI.encode_www_form(status: 'draft', page: 1, limit: 20)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer <token>'
response = http.request(request)
puts JSON.parse(response.body)
{
"success": true,
"data": {
"campaigns": [
{
"id": "60d5ec49f1b2c72d9c8b4567",
"name": "Spring Sale Newsletter",
"subject": "Don't miss our Spring Sale!",
"previewText": "Up to 50% off this weekend only",
"status": "draft",
"sendMode": "immediate",
"trackingClick": true,
"trackingOpen": true,
"createdAt": "2026-03-01T10:00:00.000Z",
"updatedAt": "2026-03-15T14:30:00.000Z"
},
{
"id": "60d5ec49f1b2c72d9c8b4568",
"name": "Welcome Series - Week 1",
"subject": "Welcome to Autosend!",
"previewText": "Get started in minutes",
"status": "sent",
"sendMode": "scheduled",
"trackingClick": true,
"trackingOpen": true,
"metrics": {
"sent": 200,
"delivered": 200,
"opened": 160,
"suppressed": 0,
"clicked": 0,
"bounced": 0,
"unsubscribed": 0,
"spamReported": 0,
"processedCount": 200,
"totalContacts": 200,
"failedCount": 0
},
"sentAt": "2026-04-06T05:54:51.190Z",
"createdAt": "2026-02-15T08:00:00.000Z",
"updatedAt": "2026-02-20T09:45:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2,
"pages": 1
}
}
}
curl --request GET \
--url 'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20' \
--header 'Authorization: Bearer <token>'
import requests
url = "https://api.autosend.com/v1/campaigns"
params = {
"status": "draft",
"page": 1,
"limit": 20
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const response = await fetch(
'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20',
{
method: 'GET',
headers: {
Authorization: 'Bearer <token>',
},
}
);
const data = await response.json();
console.log(data);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20", nil)
req.Header.Set("Authorization", "Bearer <token>")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
require 'json'
uri = URI('https://api.autosend.com/v1/campaigns')
uri.query = URI.encode_www_form(status: 'draft', page: 1, limit: 20)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer <token>'
response = http.request(request)
puts JSON.parse(response.body)
{
"success": true,
"data": {
"campaigns": [
{
"id": "60d5ec49f1b2c72d9c8b4567",
"name": "Spring Sale Newsletter",
"subject": "Don't miss our Spring Sale!",
"previewText": "Up to 50% off this weekend only",
"status": "draft",
"sendMode": "immediate",
"trackingClick": true,
"trackingOpen": true,
"createdAt": "2026-03-01T10:00:00.000Z",
"updatedAt": "2026-03-15T14:30:00.000Z"
},
{
"id": "60d5ec49f1b2c72d9c8b4568",
"name": "Welcome Series - Week 1",
"subject": "Welcome to Autosend!",
"previewText": "Get started in minutes",
"status": "sent",
"sendMode": "scheduled",
"trackingClick": true,
"trackingOpen": true,
"metrics": {
"sent": 200,
"delivered": 200,
"opened": 160,
"suppressed": 0,
"clicked": 0,
"bounced": 0,
"unsubscribed": 0,
"spamReported": 0,
"processedCount": 200,
"totalContacts": 200,
"failedCount": 0
},
"sentAt": "2026-04-06T05:54:51.190Z",
"createdAt": "2026-02-15T08:00:00.000Z",
"updatedAt": "2026-02-20T09:45:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2,
"pages": 1
}
}
}
Authorizations
string | header
required
Bearer authentication header of the form Bearer
<token>, where <token> is your auth token.Query Parameters
string
Filter campaigns by status. One of:
draft, scheduled, sending, sending_gradual, paused, sent, failed, aborted.string
Filter campaigns by name. Supports partial matching.
integer
Page number for pagination. Must be at least
1. Defaults to 1.integer
Number of results to return per page. Must be between
1 and 100. Defaults to 20.string
ISO 8601 date-time string. Only campaigns created on or after this date are returned.
string
ISO 8601 date-time string. Only campaigns created on or before this date are returned.
string
Whether to include recipient and send counts in each campaign object. Pass
"true" or "false".Response
Returns a paginated list of campaign objects.boolean
Indicates whether the request was successful.
object
Response payload.
Show data
Show data
array
Array of campaign objects.
Show campaign
Show campaign
string
Unique identifier of the campaign.
string
Display name of the campaign.
string
Email subject line.
string
Preview text shown in email clients.
string
Current status of the campaign.
string
How the campaign is delivered:
immediate, scheduled, or gradual.boolean
Whether click tracking is enabled.
boolean
Whether open tracking is enabled.
object
Send and engagement metrics. Only present on campaigns that have been sent.
Show metrics
Show metrics
integer
Total emails sent.
integer
Total emails delivered.
integer
Total emails opened.
integer
Total link clicks.
integer
Total bounced emails.
integer
Total unsubscribes.
integer
Total suppressed emails.
integer
Total spam complaints.
integer
Total emails processed.
integer
Total contacts targeted.
integer
Total failed sends.
string
ISO 8601 timestamp when the campaign was sent. Only present on sent campaigns.
string
ISO 8601 timestamp when the campaign was created.
string
ISO 8601 timestamp when the campaign was last updated.
Was this page helpful?
⌘I
curl --request GET \
--url 'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20' \
--header 'Authorization: Bearer <token>'
import requests
url = "https://api.autosend.com/v1/campaigns"
params = {
"status": "draft",
"page": 1,
"limit": 20
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const response = await fetch(
'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20',
{
method: 'GET',
headers: {
Authorization: 'Bearer <token>',
},
}
);
const data = await response.json();
console.log(data);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20", nil)
req.Header.Set("Authorization", "Bearer <token>")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.autosend.com/v1/campaigns?status=draft&page=1&limit=20"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
require 'json'
uri = URI('https://api.autosend.com/v1/campaigns')
uri.query = URI.encode_www_form(status: 'draft', page: 1, limit: 20)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer <token>'
response = http.request(request)
puts JSON.parse(response.body)
{
"success": true,
"data": {
"campaigns": [
{
"id": "60d5ec49f1b2c72d9c8b4567",
"name": "Spring Sale Newsletter",
"subject": "Don't miss our Spring Sale!",
"previewText": "Up to 50% off this weekend only",
"status": "draft",
"sendMode": "immediate",
"trackingClick": true,
"trackingOpen": true,
"createdAt": "2026-03-01T10:00:00.000Z",
"updatedAt": "2026-03-15T14:30:00.000Z"
},
{
"id": "60d5ec49f1b2c72d9c8b4568",
"name": "Welcome Series - Week 1",
"subject": "Welcome to Autosend!",
"previewText": "Get started in minutes",
"status": "sent",
"sendMode": "scheduled",
"trackingClick": true,
"trackingOpen": true,
"metrics": {
"sent": 200,
"delivered": 200,
"opened": 160,
"suppressed": 0,
"clicked": 0,
"bounced": 0,
"unsubscribed": 0,
"spamReported": 0,
"processedCount": 200,
"totalContacts": 200,
"failedCount": 0
},
"sentAt": "2026-04-06T05:54:51.190Z",
"createdAt": "2026-02-15T08:00:00.000Z",
"updatedAt": "2026-02-20T09:45:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2,
"pages": 1
}
}
}