Campaigns
Create, stop, and monitor distribution campaigns.
List Campaigns
GET /v1/campaigns
GET /v1/campaigns?brandId=brand_abc123&status=all
X-API-Key: dist_YOUR_KEYGet Campaign
GET /v1/campaigns/:campaignId
X-API-Key: dist_YOUR_KEYCreate Campaign
POST /v1/campaigns
Content-Type: application/json
X-API-Key: dist_YOUR_KEY
{
"name": "Q2 Sales Outreach",
"workflowSlug": "sales-email-cold-outreach-apex-v4",
"brandUrls": ["https://acme.com"],
"featureInputs": {
"target_audience": "CTOs at SaaS startups, 10-200 employees",
"target_outcome": "Book sales demos",
"value_for_target": "Enterprise analytics at startup pricing"
},
"maxBudgetDailyUsd": "10"
}The campaign starts running immediately after creation.
Required Fields
| Field | Type | Description |
|---|---|---|
name | string | Campaign name |
workflowSlug | string | Workflow to execute |
brandUrls | string[] | Brand URLs (one or more) |
Optional Fields
| Field | Type | Description |
|---|---|---|
featureInputs | object | Key-value inputs for the feature |
maxBudgetDailyUsd | string | Daily budget cap in USD |
maxBudgetWeeklyUsd | string | Weekly budget cap |
maxBudgetMonthlyUsd | string | Monthly budget cap |
maxBudgetTotalUsd | string | Total lifetime budget cap |
Stop Campaign
POST /v1/campaigns/:campaignId/stop
X-API-Key: dist_YOUR_KEYCampaign Stats
GET /v1/campaigns/:campaignId/stats
X-API-Key: dist_YOUR_KEY{
"campaignId": "camp_abc123",
"totalCostInUsdCents": "423",
"leadsServed": 150,
"emailsSent": 247,
"emailsDelivered": 231,
"emailsOpened": 54,
"emailsReplied": 12,
"repliesInterested": 5,
"repliesMeetingBooked": 3,
"costBreakdown": [
{ "costName": "llm-email-generation", "totalCostInUsdCents": "200" },
{ "costName": "apollo-enrichment", "totalCostInUsdCents": "150" }
]
}Batch Campaign Stats
GET /v1/campaigns/stats
GET /v1/campaigns/stats?brandId=brand_abc123
X-API-Key: dist_YOUR_KEYReturns stats for all campaigns (or filtered by brand) in a single call.
TypeScript Client
const { campaigns } = await client.listCampaigns({ brandId: "brand_abc" });
const { campaign } = await client.createCampaign({
name: "Q2 Outreach",
workflowSlug: "sales-email-cold-outreach-apex-v4",
brandUrls: ["https://acme.com"],
maxBudgetDailyUsd: "10",
});
const stats = await client.getCampaignStats("camp_abc123");
await client.stopCampaign("camp_abc123");