Skip to main content
A campaign groups the content for one launch or distribution effort: its title and lifecycle state, the platforms and connected accounts it targets, the jobs that produced its media, and its scheduled posts. The dashboard and content autopilot use the same campaigns you create through the API. Creating a campaign record does not require a connected social account and does not publish anything. Only title is required. Fields such as connectedAccountIds, platforms, scheduledAt, remixJobIds, and playbookId may all be omitted.
A connected-account id exists only after a workspace owner authorizes the social account in the dashboard; the API never accepts social passwords. List connected accounts with GET /v1/publish/destinations. Without one, create the campaign without account ids, or run Content Autopilot with destinations: [] to generate without publishing.

Create a campaign

Only title is required. Content autopilot runs create campaigns too, through their build_campaign step, and those appear in the same list.

List and inspect

The detail response includes posts: the campaign’s posts, scheduled or already published, with the same status the dashboard shows. Page through GET /v1/campaigns with cursor and nextCursor (see Pagination).

Pause, resume, or complete

Valid lifecycle states are draft, scheduled, active, paused, and completed. Campaign metadata and lifecycle changes are free; generation and rendering performed by an autopilot are priced separately and quoted before a run starts.

Relationship to autopilot

POST /v1/autopilot-runs returns a durable run. During distribution, the build_campaign step writes a campaign and exposes its campaignId in the run step output. Use GET /v1/campaigns/{campaignId} to inspect the resulting campaign and scheduled posts. The same operations are available through MCP as campaigns_create, campaigns_list, campaigns_get, and campaigns_update.

How campaign copy is written

For each Brand and piece of content, Content Autopilot picks a saved writing and distribution strategy and combines it with the workspace’s brand identity, the Brand’s voice, your campaign brief and truthfulness rules. Unattended runs use only strategies that are safe without review; strategies that need evidence or a human check are never applied automatically. The run output records which strategy and version were used. If strategies are temporarily unavailable, the run keeps the Brand and truthfulness rules and does not substitute a made-up strategy.

Reddit campaigns

The multi-week organic Reddit workflow is a separate resource because it owns account-readiness, subreddit discovery, governor caps, lead scanning, and comment-reply policy:
The call compiles the campaign plan into a versioned, governed plan and creates the campaign together with the agent that runs it (workflow: "reddit_campaign"). The response includes the plan as marketingManifest, with marketingCampaignId and marketingLibraryVersion. Idempotency-Key is required. The same key and body return the same campaign and agent; the same key with a different body returns 409 conflict. If the plan cannot be validated and stored, the call returns 503 upstream_unavailable and creates nothing. The account must be a connected Reddit account in the same workspace. These safety rules cannot be turned off: campaign posts remain review-first, affiliation must be disclosed, fabricated identities or engagement are prohibited, and automatic replies—when enabled—apply only to comments on your own posts. Use GET /v1/reddit-campaigns, GET /v1/reddit-campaigns/{campaignId}, and PATCH /v1/reddit-campaigns/{campaignId} to inspect or control it. MCP exposes the same operations with the reddit_campaigns_* tool names.