Get Senders for Campaign
curl --request GET \
--url https://app.pixie.ai/api/campaigns/{id}/senders \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.pixie.ai/api/campaigns/{id}/senders"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.pixie.ai/api/campaigns/{id}/senders', 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://app.pixie.ai/api/campaigns/{id}/senders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.pixie.ai/api/campaigns/{id}/senders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.pixie.ai/api/campaigns/{id}/senders")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.pixie.ai/api/campaigns/{id}/senders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"senders": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": "<string>",
"email_address": "<string>",
"profile_url": "<string>",
"status": "<string>",
"type": "linkedin",
"is_premium": true,
"warmup_status": "<string>",
"weekly_connection_limit": 4503599627370495,
"weekly_message_limit": 4503599627370495,
"daily_limit": 4503599627370495,
"weekly_connections_sent": 4503599627370495,
"weekly_messages_sent": 4503599627370495,
"committed_count": 4503599627370495,
"campaign_messages_sent": 4503599627370495,
"campaign_ever_contacted": 4503599627370495,
"campaign_connections_accepted": 4503599627370495,
"today_sent": 4503599627370495
}
],
"historical_sender_metrics": {
"sent": 4503599627370495,
"contacted": 4503599627370495
},
"campaign_total_sent": 4503599627370495,
"campaign_total_replies": 4503599627370495,
"campaign_total_bounced": 4503599627370495,
"campaign_total_completed": 4503599627370495,
"campaign_total_committed": 4503599627370495,
"campaign_type": "linkedin",
"campaignStatsByStatus": {},
"campaignSenderStatsByStatus": {},
"campaignSenderTodayStatsByStatus": {},
"campaignActiveProspectsCount": {}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Outbound
Get Senders for Campaign
Sender accounts attached to the campaign, with weekly limits, rolling 7-day usage, and per-campaign attribution.
GET
/
api
/
campaigns
/
{id}
/
senders
Get Senders for Campaign
curl --request GET \
--url https://app.pixie.ai/api/campaigns/{id}/senders \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.pixie.ai/api/campaigns/{id}/senders"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.pixie.ai/api/campaigns/{id}/senders', 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://app.pixie.ai/api/campaigns/{id}/senders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.pixie.ai/api/campaigns/{id}/senders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.pixie.ai/api/campaigns/{id}/senders")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.pixie.ai/api/campaigns/{id}/senders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"senders": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": "<string>",
"email_address": "<string>",
"profile_url": "<string>",
"status": "<string>",
"type": "linkedin",
"is_premium": true,
"warmup_status": "<string>",
"weekly_connection_limit": 4503599627370495,
"weekly_message_limit": 4503599627370495,
"daily_limit": 4503599627370495,
"weekly_connections_sent": 4503599627370495,
"weekly_messages_sent": 4503599627370495,
"committed_count": 4503599627370495,
"campaign_messages_sent": 4503599627370495,
"campaign_ever_contacted": 4503599627370495,
"campaign_connections_accepted": 4503599627370495,
"today_sent": 4503599627370495
}
],
"historical_sender_metrics": {
"sent": 4503599627370495,
"contacted": 4503599627370495
},
"campaign_total_sent": 4503599627370495,
"campaign_total_replies": 4503599627370495,
"campaign_total_bounced": 4503599627370495,
"campaign_total_completed": 4503599627370495,
"campaign_total_committed": 4503599627370495,
"campaign_type": "linkedin",
"campaignStatsByStatus": {},
"campaignSenderStatsByStatus": {},
"campaignSenderTodayStatsByStatus": {},
"campaignActiveProspectsCount": {}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}CLI:
pixie campaign sender --id <id>
Overview
Returns every sender account attached to the campaign plus the rate-limit context an agent needs to reason about throughput:- Per-account weekly limits (with defaults filled in based on
is_premium) - Rolling 7-day usage for connections + messages, aggregated globally across all the caller’s campaigns (not just this one)
- Per-campaign
sentcount — only populated ascampaign_messages_sentfor LinkedIn campaigns with exactly one sender, where attribution is unambiguous. Email and multi-sender LinkedIn exposecampaign_total_sentat the top level instead.
campaign_total_sent (total sent messages for this campaign) and campaign_type (channel) so a single call is enough to render a sender dashboard.
AI agent notes
Default limits. When an account has no per-account override, the weekly limits come from
Daily default for every account is 30 unless overridden.Usage is global, not per-campaign.
is_premium:| Channel | Free | Premium |
|---|---|---|
| Weekly connection requests | 80 | 100 |
| Weekly messages | 100 | 150 |
weekly_connections_sent / weekly_messages_sent sum activity across every campaign this account is attached to — not just this one. That matches how the rate limiter actually decides whether to throttle a send, so it’s the correct signal to surface “is this sender about to hit its cap?”Attribution caveat. campaign_messages_sent is deliberately null for email and multi-sender LinkedIn because there’s no cheap way to map a sent message back to a specific sender when round-robin is in play. Use campaign_total_sent for the aggregate.No mutations here. Adding or removing senders happens via PATCH /api/campaigns/{id} with a sender_account_ids field on draft campaigns. This endpoint is read-only.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Campaign UUID
Response
Sender list and campaign sender statistics.
Show child attributes
Show child attributes
Sent activity owned by removed senders or with unknown ownership. These counts are not assigned to any current sender.
Show child attributes
Show child attributes
Sent direct-message or email outbox rows. LinkedIn connection-request notes are excluded.
Required range:
0 <= x <= 9007199254740991Required range:
0 <= x <= 9007199254740991Required range:
0 <= x <= 9007199254740991Required range:
0 <= x <= 9007199254740991Required range:
0 <= x <= 9007199254740991Channel mode for this campaign. Immutable after creation.
Available options:
linkedin, email, multi_channel Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?