curl -X PATCH "https://api.foxreach.io/api/v1/campaigns/cmp_abc123" \
-H "X-API-Key: otr_your_key" \
-H "Content-Type: application/json" \
-d '{
"dailyLimit": 75,
"sendingEndHour": 18
}'
from foxreach import FoxReach
from foxreach.types import CampaignUpdate
client = FoxReach(api_key="otr_your_key")
campaign = client.campaigns.update(
"cmp_xyz789",
CampaignUpdate(
daily_limit=200,
sending_end_hour=19,
),
)
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const campaign = await client.campaigns.update("cmp_xyz789", {
dailyLimit: 200,
sendingEndHour: 19,
});
{
"data": {
"id": "cmp_abc123",
"name": "Q1 Outreach",
"status": "draft",
"dailyLimit": 75,
"sendingEndHour": 18,
"..."
}
}
Campaigns
Update Campaign
Update campaign settings. Cannot edit while the campaign is active.
PATCH
/
api
/
v1
/
campaigns
/
{campaign_id}
curl -X PATCH "https://api.foxreach.io/api/v1/campaigns/cmp_abc123" \
-H "X-API-Key: otr_your_key" \
-H "Content-Type: application/json" \
-d '{
"dailyLimit": 75,
"sendingEndHour": 18
}'
from foxreach import FoxReach
from foxreach.types import CampaignUpdate
client = FoxReach(api_key="otr_your_key")
campaign = client.campaigns.update(
"cmp_xyz789",
CampaignUpdate(
daily_limit=200,
sending_end_hour=19,
),
)
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const campaign = await client.campaigns.update("cmp_xyz789", {
dailyLimit: 200,
sendingEndHour: 19,
});
{
"data": {
"id": "cmp_abc123",
"name": "Q1 Outreach",
"status": "draft",
"dailyLimit": 75,
"sendingEndHour": 18,
"..."
}
}
Path Parameters
string
required
The unique identifier of the campaign.
Request Body
All fields are optional. Only include the fields you want to update.string
Campaign name.
string
Sending timezone.
array
Days of the week to send.
integer
Start hour.
integer
End hour.
integer
Maximum emails per day.
string
AI context for draft replies.
curl -X PATCH "https://api.foxreach.io/api/v1/campaigns/cmp_abc123" \
-H "X-API-Key: otr_your_key" \
-H "Content-Type: application/json" \
-d '{
"dailyLimit": 75,
"sendingEndHour": 18
}'
from foxreach import FoxReach
from foxreach.types import CampaignUpdate
client = FoxReach(api_key="otr_your_key")
campaign = client.campaigns.update(
"cmp_xyz789",
CampaignUpdate(
daily_limit=200,
sending_end_hour=19,
),
)
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const campaign = await client.campaigns.update("cmp_xyz789", {
dailyLimit: 200,
sendingEndHour: 19,
});
{
"data": {
"id": "cmp_abc123",
"name": "Q1 Outreach",
"status": "draft",
"dailyLimit": 75,
"sendingEndHour": 18,
"..."
}
}
Errors
| Status | Description |
|---|---|
400 | Cannot edit active campaign. Pause it first. |
404 | Campaign not found |
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.