Endpoint
Create campaign
POST/api/public/v1/campaignswrite
Create a new outbound campaign, optionally attach a conference URL (public https only) and auto-start the pipeline. Seeds ICP, style memory, and sender defaults from the user's profile. Scraping runs asynchronously via cron; poll get_run_status to follow progress. Pass dry_run=true to get cost_preview without creating anything. Returns { campaign_id, run_started, cost_preview }.
Request
curl -X POST "https://sayintel.com/api/public/v1/campaigns" \
-H "Authorization: Bearer $SAYINTEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'Try it out
Try it outPOST/api/public/v1/campaignswrite
Sent as a bearer token to this site only, and kept in this tab's session storage. It is never written to disk or sent anywhere else.
Paste an API key to run.
Body
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| name | body | string | no | — |
| pitch | body | string | no | — |
| cta | body | string | no | — |
| your_name | body | string | no | — |
| your_role | body | string | no | — |
| tone | body | string | no | — |
| conference_url | body | string | no | — |
| auto_start | body | boolean | no | — |
| dry_run | body | boolean | no | When true nothing is written, started, or spent. The tool returns only cost_preview so an agent can estimate credits first. |
Response
{
"ok": true,
"tool": "create_campaign",
"kind": "write",
"data": { ... },
"error": null
}Notes
- Scope required: write. How scopes work.
- Accepts Idempotency-Key. A retry with the same key replays the first result instead of repeating the work.
- Accepts dry_run: true and always returns cost_preview before spending anything.
- Same capability over MCP as the tool create_campaign. MCP setup.