Skip to main content
POST
/
api
/
v1
/
campaigns
curl -X POST "https://api.foxreach.io/api/v1/campaigns" \
  -H "X-API-Key: otr_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Q2 SaaS Outreach",
    "timezone": "America/New_York",
    "sendingDays": [1, 2, 3, 4, 5],
    "sendingStartHour": 9,
    "sendingEndHour": 17,
    "dailyLimit": 30
  }'
{
  "data": {
    "id": "cmp_new123",
    "name": "Q2 SaaS Outreach",
    "status": "draft",
    "timezone": "America/New_York",
    "sendingDays": [1, 2, 3, 4, 5],
    "sendingStartHour": 9,
    "sendingEndHour": 17,
    "dailyLimit": 30,
    "sentToday": 0,
    "context": null,
    "totalLeads": 0,
    "totalSent": 0,
    "totalDelivered": 0,
    "totalBounced": 0,
    "totalReplied": 0,
    "totalOpened": 0,
    "createdAt": "2025-01-15T10:00:00",
    "updatedAt": "2025-01-15T10:00:00",
    "startedAt": null,
    "completedAt": null
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.foxreach.io/llms.txt

Use this file to discover all available pages before exploring further.

Request Body

name
string
required
Campaign name.
timezone
string
default:"UTC"
Sending timezone (e.g., America/New_York, Europe/London).
sendingDays
array
default:"[1,2,3,4,5]"
Days of the week to send emails (1=Monday, 7=Sunday).
sendingStartHour
integer
default:"9"
Hour to start sending (0-23).
sendingEndHour
integer
default:"17"
Hour to stop sending (0-23).
dailyLimit
integer
default:"50"
Maximum emails to send per day.
context
string
AI context for generating draft replies to campaign responses.

Response

Returns the created campaign with 201 status code. New campaigns start in draft status.
curl -X POST "https://api.foxreach.io/api/v1/campaigns" \
  -H "X-API-Key: otr_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Q2 SaaS Outreach",
    "timezone": "America/New_York",
    "sendingDays": [1, 2, 3, 4, 5],
    "sendingStartHour": 9,
    "sendingEndHour": 17,
    "dailyLimit": 30
  }'
{
  "data": {
    "id": "cmp_new123",
    "name": "Q2 SaaS Outreach",
    "status": "draft",
    "timezone": "America/New_York",
    "sendingDays": [1, 2, 3, 4, 5],
    "sendingStartHour": 9,
    "sendingEndHour": 17,
    "dailyLimit": 30,
    "sentToday": 0,
    "context": null,
    "totalLeads": 0,
    "totalSent": 0,
    "totalDelivered": 0,
    "totalBounced": 0,
    "totalReplied": 0,
    "totalOpened": 0,
    "createdAt": "2025-01-15T10:00:00",
    "updatedAt": "2025-01-15T10:00:00",
    "startedAt": null,
    "completedAt": null
  }
}
After creating a campaign, you’ll need to add sequence steps and leads through the dashboard before starting it.

Rate Limit

  • 100 requests per minute, per API key. Fixed 60-second window.
  • Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (unix epoch seconds).
  • A 429 response includes a Retry-After header (seconds until the bucket resets).
For client-side patterns (Retry-After, exponential backoff, monitoring X-RateLimit-Remaining), see Rate Limiting.