List campaigns
Returns a paginated list of campaigns for the workspace. Supports filtering by status and searching by name.
curl -X GET "https://api.sendkit.ai/v1/campaigns?status=draft&search=example_string&cursor=665a1b2c3d4e5f6a7b8c9d0e&limit=25" \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY"
import requests
import json
url = "https://api.sendkit.ai/v1/campaigns?status=draft&search=example_string&cursor=665a1b2c3d4e5f6a7b8c9d0e&limit=25"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://api.sendkit.ai/v1/campaigns?status=draft&search=example_string&cursor=665a1b2c3d4e5f6a7b8c9d0e&limit=25", {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://api.sendkit.ai/v1/campaigns?status=draft&search=example_string&cursor=665a1b2c3d4e5f6a7b8c9d0e&limit=25", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.sendkit.ai/v1/campaigns?status=draft&search=example_string&cursor=665a1b2c3d4e5f6a7b8c9d0e&limit=25')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['X-Api-Key'] = 'YOUR_API_KEY'
response = http.request(request)
puts response.body
{
"success": true,
"data": [
{
"_id": "665a1b2c3d4e5f6a7b8c9d0e",
"name": "Q1 Outreach Campaign",
"status": "active",
"stats": {
"totalLeads": 200,
"contacted": 150,
"contactedLeads": 150,
"totalEmailsSent": 150,
"sent": 150,
"delivered": 145,
"opened": 72,
"clicked": 18,
"replied": 12,
"bounced": 5,
"failed": 0,
"unsubscribed": 2,
"completed": 50,
"active": 100,
"pending": 50,
"softBounces": 2,
"hardBounces": 3
},
"sequence": [
{
"_id": "665a1b2c3d4e5f6a7b8c0001",
"type": "email",
"name": "Initial Email",
"order": 0,
"useVariables": false,
"variables": [],
"variants": [
{
"_id": "665a1b2c3d4e5f6a7b8c0002",
"label": "A",
"subject": "Quick question about {{companyName}}",
"body": "<p>Hi {{firstName}},</p>",
"useVariables": false,
"variables": [],
"enabled": true,
"status": "active"
}
]
},
{
"_id": "665a1b2c3d4e5f6a7b8c0003",
"type": "wait",
"name": "Wait 3 days",
"order": 1,
"waitDays": 3,
"useVariables": false,
"variables": [],
"variants": []
},
{
"_id": "665a1b2c3d4e5f6a7b8c0004",
"type": "follow-up",
"name": "Follow-up 1",
"order": 2,
"useVariables": false,
"variables": [],
"variants": [
{
"_id": "665a1b2c3d4e5f6a7b8c0005",
"label": "A",
"subject": "Re: Quick question about {{companyName}}",
"body": "<p>Just following up...</p>",
"useVariables": false,
"variables": [],
"enabled": true,
"status": "active"
}
]
}
],
"sendingSchedule": {
"timezone": "America/New_York",
"startTime": "09:00",
"endTime": "17:00",
"workingDays": [
1,
2,
3,
4,
5
],
"skipNationalHolidays": false
},
"trackOpens": true,
"trackClicks": true,
"stopOnReply": true,
"startedAt": "2025-06-15T09:00:00.000Z",
"completedAt": null,
"createdAt": "2025-06-10T10:30:00.000Z"
}
],
"pagination": {
"limit": 25,
"total": 1,
"hasMore": false,
"nextCursor": "665a1b2c3d4e5f6a7b8c9d0e"
}
}
/v1/campaigns
Target server for requests. Edit to use your own host.
Platform API key (sk_user_...) or Workspace API key (sk_...)
Filter campaigns by status
Search campaigns by name (case-insensitive partial match)
Cursor for pagination - use the nextCursor value from the previous response to fetch the next page
Items per page (default 25, max 100)
Request Preview
Response
Response will appear here after sending the request
Authentication
API Key for authentication. Platform API key (sk_user_...) or Workspace API key (sk_...)
Query Parameters
Search campaigns by name (case-insensitive partial match)
Cursor for pagination - use the nextCursor value from the previous response to fetch the next page
665a1b2c3d4e5f6a7b8c9d0eItems per page (default 25, max 100)