CLI Campaigns
Manage campaigns that live inside a graph8 repository. You can list summaries, retrieve full detail (including all documents), fetch a single campaign document, create a new campaign, apply partial updates, and launch a campaign — all scoped to a repo_id.
List Campaigns
GET /repos/{repo_id}/campaigns
Returns a paginated array of campaign summaries for the given repository.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
repo_id | string | The repository ID |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number (1-indexed) |
limit | integer | 50 | Items per page |
Example
curl "https://be.graph8.com/api/v1/repos/repo_abc123/campaigns?page=1&limit=50" \ -H "Authorization: Bearer $API_KEY"Response
[ { "id": "camp_001", "name": "Q3 Outbound Push", "category": "Outbound", "brief": "Drive pipeline for the Q3 push.", "core_concept": "Land-and-expand via champions", "primary_hook": "Cut your CAC by 40%", "target_persona": "VP Sales at Series B SaaS", "goal": "50 meetings booked" }]Get Campaign
GET /repos/{repo_id}/campaigns/{campaign_id}
Returns full campaign detail, including all associated documents.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
repo_id | string | The repository ID |
campaign_id | string | The campaign ID |
Example
curl "https://be.graph8.com/api/v1/repos/repo_abc123/campaigns/camp_001" \ -H "Authorization: Bearer $API_KEY"Response
{ "id": "camp_001", "name": "Q3 Outbound Push", "category": "Outbound", "brief": "Drive pipeline for the Q3 push.", "core_concept": "Land-and-expand via champions", "primary_hook": "Cut your CAC by 40%", "target_persona": "VP Sales at Series B SaaS", "goal": "50 meetings booked", "documents": [ { "id": "doc_001", "title": "Outreach Sequence", "content": "..." } ]}Get Campaign Document
GET /repos/{repo_id}/campaigns/{campaign_id}/documents/{document_id}
Returns a single campaign document with its full content.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
repo_id | string | The repository ID |
campaign_id | string | The campaign ID |
document_id | string | The document ID |
Example
curl "https://be.graph8.com/api/v1/repos/repo_abc123/campaigns/camp_001/documents/doc_001" \ -H "Authorization: Bearer $API_KEY"Response
{ "id": "doc_001", "title": "Outreach Sequence", "content": "Full document content here..."}Create Campaign
POST /repos/{repo_id}/campaigns
Create a new campaign in the given repository.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
repo_id | string | The repository ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Campaign name |
category | string | No | Campaign category (default: "Outbound") |
brief | string | No | Short campaign brief |
core_concept | string | No | Core strategic concept |
primary_hook | string | No | The primary hook or value proposition |
target_persona | string | No | Description of the target persona |
goal | string | No | Campaign goal or success metric |
Example
curl -X POST "https://be.graph8.com/api/v1/repos/repo_abc123/campaigns" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Q3 Outbound Push", "category": "Outbound", "brief": "Drive pipeline for the Q3 push.", "core_concept": "Land-and-expand via champions", "primary_hook": "Cut your CAC by 40%", "target_persona": "VP Sales at Series B SaaS", "goal": "50 meetings booked" }'Response
{ "id": "camp_001", "name": "Q3 Outbound Push", "category": "Outbound", "brief": "Drive pipeline for the Q3 push.", "core_concept": "Land-and-expand via champions", "primary_hook": "Cut your CAC by 40%", "target_persona": "VP Sales at Series B SaaS", "goal": "50 meetings booked"}Update Campaign
PATCH /repos/{repo_id}/campaigns/{campaign_id}
Partially update a campaign. Only include the fields you want to change. Uses the same partial-update body as PATCH /campaigns/{id} on the GTM surface.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
repo_id | string | The repository ID |
campaign_id | string | The campaign ID |
Request Body
All fields are optional. Include only the fields to update.
| Field | Type | Description |
|---|---|---|
name | string | Campaign name |
category | string | Campaign category |
brief | string | Short campaign brief |
core_concept | string | Core strategic concept |
primary_hook | string | The primary hook or value proposition |
target_persona | string | Description of the target persona |
goal | string | Campaign goal or success metric |
Example
curl -X PATCH "https://be.graph8.com/api/v1/repos/repo_abc123/campaigns/camp_001" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "primary_hook": "Reduce churn by 25%", "goal": "60 meetings booked" }'Response
{ "id": "camp_001", "name": "Q3 Outbound Push", "primary_hook": "Reduce churn by 25%", "goal": "60 meetings booked"}Launch Campaign
POST /repos/{repo_id}/campaigns/{campaign_id}/launch
Launch a campaign. No request body required. Follows the same launch flow as POST /campaigns/{id}/launch on the GTM surface.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
repo_id | string | The repository ID |
campaign_id | string | The campaign ID |
Example
curl -X POST "https://be.graph8.com/api/v1/repos/repo_abc123/campaigns/camp_001/launch" \ -H "Authorization: Bearer $API_KEY"Response
{ "status": "launched"}