Campaigns API
Overview
Section titled “Overview”Campaigns are the core resource in GhostFlow. Each campaign represents a traffic flow with cloaking rules, landing pages, and offer rotation.
Authentication
Section titled “Authentication”All endpoints require either a JWT token or an API key (gf_...) in the Authorization header:
Authorization: Bearer gf_your_api_key_hereEndpoints
Section titled “Endpoints”| Method | Path | Scope | Description |
|---|---|---|---|
| GET | /api/v1/campaigns | read:campaigns | List all campaigns |
| POST | /api/v1/campaigns | write:campaigns | Create a new campaign |
| GET | /api/v1/campaigns/{id} | read:campaigns | Get campaign details |
| PATCH | /api/v1/campaigns/{id} | write:campaigns | Update a campaign |
| DELETE | /api/v1/campaigns/{id} | write:campaigns | Delete a campaign |
| POST | /api/v1/campaigns/{id}/activate | write:campaigns | Activate campaign |
| POST | /api/v1/campaigns/{id}/pause | write:campaigns | Pause campaign |
| POST | /api/v1/campaigns/{id}/deactivate | write:campaigns | Deactivate campaign |
| POST | /api/v1/campaigns/{id}/archive | write:campaigns | Archive campaign |
| POST | /api/v1/campaigns/{id}/duplicate | write:campaigns | Duplicate campaign |
| GET | /api/v1/campaigns/{id}/tracking-url | read:campaigns | Get tracking URL |
| Method | Path | Scope | Description |
|---|---|---|---|
| GET | /api/v1/campaigns/{id}/flows | read:campaigns | List flows |
| POST | /api/v1/campaigns/{id}/flows | write:campaigns | Create flow |
| PATCH | /api/v1/campaigns/{id}/flows/{flow_id} | write:campaigns | Update flow |
| DELETE | /api/v1/campaigns/{id}/flows/{flow_id} | write:campaigns | Delete flow |
A/B Tests
Section titled “A/B Tests”| Method | Path | Scope | Description |
|---|---|---|---|
| GET | /api/v1/campaigns/{id}/ab-tests | read:campaigns | List A/B tests |
| POST | /api/v1/campaigns/{id}/ab-tests | write:campaigns | Create A/B test |
| POST | /api/v1/campaigns/{id}/ab-tests/{test_id}/start | write:campaigns | Start test |
| POST | /api/v1/campaigns/{id}/ab-tests/{test_id}/pause | write:campaigns | Pause test |
| POST | /api/v1/campaigns/{id}/ab-tests/{test_id}/complete | write:campaigns | Complete test |
| GET | /api/v1/campaigns/{id}/ab-tests/{test_id}/results | read:campaigns | Get results |
Examples
Section titled “Examples”Create a Campaign
Section titled “Create a Campaign”curl -X POST https://devcore.getghostflow.io/api/v1/campaigns \ -H "Authorization: Bearer gf_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "name": "Facebook Traffic US", "description": "US traffic from Facebook Ads", "tags": ["facebook", "us", "tier1"], "costModel": "cpc", "trackingDomain": "trk.example.com" }'const response = await fetch('https://devcore.getghostflow.io/api/v1/campaigns', { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ name: 'Facebook Traffic US', description: 'US traffic from Facebook Ads', tags: ['facebook', 'us', 'tier1'], costModel: 'cpc', trackingDomain: 'trk.example.com', }),});const campaign = await response.json();import requests
resp = requests.post( "https://devcore.getghostflow.io/api/v1/campaigns", headers={"Authorization": f"Bearer {api_key}"}, json={ "name": "Facebook Traffic US", "description": "US traffic from Facebook Ads", "tags": ["facebook", "us", "tier1"], "costModel": "cpc", "trackingDomain": "trk.example.com", },)campaign = resp.json()Response 201 Created:
{ "id": "019d4e56-3d6f-7be2-a77e-e1c96251b1ee", "userId": "019d4e56-3d6f-7be2-a77e-000000000001", "name": "Facebook Traffic US", "description": "US traffic from Facebook Ads", "status": "draft", "campaignType": "standard", "costModel": "cpc", "tags": ["facebook", "us", "tier1"], "trackingUrl": "https://trk.example.com/c/019d4e56", "flows": [], "createdAt": "2025-06-01T12:00:00Z", "updatedAt": "2025-06-01T12:00:00Z"}List Campaigns
Section titled “List Campaigns”curl https://devcore.getghostflow.io/api/v1/campaigns \ -H "Authorization: Bearer gf_your_api_key"const response = await fetch('https://devcore.getghostflow.io/api/v1/campaigns', { headers: { 'Authorization': `Bearer ${API_KEY}` },});const campaigns = await response.json();resp = requests.get( "https://devcore.getghostflow.io/api/v1/campaigns", headers={"Authorization": f"Bearer {api_key}"},)campaigns = resp.json()Activate a Campaign
Section titled “Activate a Campaign”curl -X POST https://devcore.getghostflow.io/api/v1/campaigns/{id}/activate \ -H "Authorization: Bearer gf_your_api_key"