curl -X GET "https://api.foxreach.io/api/v1/campaigns/cmp_abc123" \
-H "X-API-Key: otr_your_key"
from foxreach import FoxReach
client = FoxReach(api_key="otr_your_key")
campaign = client.campaigns.get("cmp_xyz789")
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const campaign = await client.campaigns.get("cmp_xyz789");
{
"data": {
"id": "cmp_abc123",
"name": "Q1 Outreach",
"status": "active",
"timezone": "America/New_York",
"sendingDays": [1, 2, 3, 4, 5],
"sendingStartHour": 9,
"sendingEndHour": 17,
"dailyLimit": 50,
"sentToday": 12,
"context": null,
"totalLeads": 500,
"totalSent": 234,
"totalDelivered": 230,
"totalBounced": 4,
"totalReplied": 18,
"totalOpened": 87,
"createdAt": "2025-01-10T08:00:00",
"updatedAt": "2025-01-15T10:30:00",
"startedAt": "2025-01-10T09:00:00",
"completedAt": null,
"sequences": [
{
"id": "csq_001",
"campaignId": "cmp_abc123",
"stepNumber": 1,
"name": "Initial outreach",
"subject": "Quick question about {{company}}",
"body": "Hi {{firstName}},\n\nI noticed...",
"delayDays": 0,
"delayHours": 0,
"sendOnlyIfNoReply": true,
"createdAt": "2025-01-10T08:00:00",
"updatedAt": "2025-01-10T08:00:00"
},
{
"id": "csq_002",
"campaignId": "cmp_abc123",
"stepNumber": 2,
"name": "Follow-up",
"subject": "Re: Quick question about {{company}}",
"body": "Hi {{firstName}},\n\nJust following up...",
"delayDays": 3,
"delayHours": 0,
"sendOnlyIfNoReply": true,
"createdAt": "2025-01-10T08:05:00",
"updatedAt": "2025-01-10T08:05:00"
}
]
}
}
Campaigns
Get Campaign
Retrieve a single campaign with its sequence steps.
GET
/
api
/
v1
/
campaigns
/
{campaign_id}
curl -X GET "https://api.foxreach.io/api/v1/campaigns/cmp_abc123" \
-H "X-API-Key: otr_your_key"
from foxreach import FoxReach
client = FoxReach(api_key="otr_your_key")
campaign = client.campaigns.get("cmp_xyz789")
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const campaign = await client.campaigns.get("cmp_xyz789");
{
"data": {
"id": "cmp_abc123",
"name": "Q1 Outreach",
"status": "active",
"timezone": "America/New_York",
"sendingDays": [1, 2, 3, 4, 5],
"sendingStartHour": 9,
"sendingEndHour": 17,
"dailyLimit": 50,
"sentToday": 12,
"context": null,
"totalLeads": 500,
"totalSent": 234,
"totalDelivered": 230,
"totalBounced": 4,
"totalReplied": 18,
"totalOpened": 87,
"createdAt": "2025-01-10T08:00:00",
"updatedAt": "2025-01-15T10:30:00",
"startedAt": "2025-01-10T09:00:00",
"completedAt": null,
"sequences": [
{
"id": "csq_001",
"campaignId": "cmp_abc123",
"stepNumber": 1,
"name": "Initial outreach",
"subject": "Quick question about {{company}}",
"body": "Hi {{firstName}},\n\nI noticed...",
"delayDays": 0,
"delayHours": 0,
"sendOnlyIfNoReply": true,
"createdAt": "2025-01-10T08:00:00",
"updatedAt": "2025-01-10T08:00:00"
},
{
"id": "csq_002",
"campaignId": "cmp_abc123",
"stepNumber": 2,
"name": "Follow-up",
"subject": "Re: Quick question about {{company}}",
"body": "Hi {{firstName}},\n\nJust following up...",
"delayDays": 3,
"delayHours": 0,
"sendOnlyIfNoReply": true,
"createdAt": "2025-01-10T08:05:00",
"updatedAt": "2025-01-10T08:05:00"
}
]
}
}
Path Parameters
string
required
The unique identifier of the campaign.
Response
Returns the campaign object with an additionalsequences array containing the email sequence steps.
object
Campaign object with sequences.
Show Sequence step object
Show Sequence step object
string
Sequence step identifier.
string
Parent campaign ID.
integer
Step order (1, 2, 3…).
string
Step name.
string
Email subject line.
string
Email body (supports variables like
{{firstName}}).integer
Days to wait after previous step.
integer
Hours to wait after previous step.
boolean
Skip if lead has replied.
string
ISO 8601 timestamp.
string
ISO 8601 timestamp.
curl -X GET "https://api.foxreach.io/api/v1/campaigns/cmp_abc123" \
-H "X-API-Key: otr_your_key"
from foxreach import FoxReach
client = FoxReach(api_key="otr_your_key")
campaign = client.campaigns.get("cmp_xyz789")
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const campaign = await client.campaigns.get("cmp_xyz789");
{
"data": {
"id": "cmp_abc123",
"name": "Q1 Outreach",
"status": "active",
"timezone": "America/New_York",
"sendingDays": [1, 2, 3, 4, 5],
"sendingStartHour": 9,
"sendingEndHour": 17,
"dailyLimit": 50,
"sentToday": 12,
"context": null,
"totalLeads": 500,
"totalSent": 234,
"totalDelivered": 230,
"totalBounced": 4,
"totalReplied": 18,
"totalOpened": 87,
"createdAt": "2025-01-10T08:00:00",
"updatedAt": "2025-01-15T10:30:00",
"startedAt": "2025-01-10T09:00:00",
"completedAt": null,
"sequences": [
{
"id": "csq_001",
"campaignId": "cmp_abc123",
"stepNumber": 1,
"name": "Initial outreach",
"subject": "Quick question about {{company}}",
"body": "Hi {{firstName}},\n\nI noticed...",
"delayDays": 0,
"delayHours": 0,
"sendOnlyIfNoReply": true,
"createdAt": "2025-01-10T08:00:00",
"updatedAt": "2025-01-10T08:00:00"
},
{
"id": "csq_002",
"campaignId": "cmp_abc123",
"stepNumber": 2,
"name": "Follow-up",
"subject": "Re: Quick question about {{company}}",
"body": "Hi {{firstName}},\n\nJust following up...",
"delayDays": 3,
"delayHours": 0,
"sendOnlyIfNoReply": true,
"createdAt": "2025-01-10T08:05:00",
"updatedAt": "2025-01-10T08:05:00"
}
]
}
}
Rate Limit
- 100 requests per minute, per API key. Fixed 60-second window.
- Every response includes
X-RateLimit-Limit,X-RateLimit-Remaining, andX-RateLimit-Reset(unix epoch seconds). - A
429response includes aRetry-Afterheader (seconds until the bucket resets).
Retry-After, exponential backoff, monitoring X-RateLimit-Remaining), see Rate Limiting.⌘I