sayintel
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. On an account that has clients you MUST say who the conference is for: pass client_id (one of the ids whoami returns under clients), or own_company: true for the account's own company. Exactly one of the two; with neither, the call is refused and the error lists the account's clients by id and name. A client's conference takes pitch, positioning, audience and sender from that client only, never from the account profile or another client. An account with no clients needs neither argument and seeds ICP, style memory and sender defaults from the user's profile, as before. Pass who to set this conference's audience in plain words. Scraping runs asynchronously via cron; poll get_run_status to follow progress. Pass dry_run=true to get cost_preview without creating anything (the client check still runs). Returns { campaign_id, client_id, warning, run_started, cost_preview }; warning is non-null when the conference has no pitch yet (for a client: the client has no one-liner), in which case the run parks before research until one is added.

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

NameInTypeRequiredDescription
namebodystringno—
pitchbodystringno—
ctabodystringno—
your_namebodystringno—
your_rolebodystringno—
tonebodystringno—
conference_urlbodystringno—
client_idbodystringnoThe client this conference is for. Required on an account with clients unless own_company is true. Must be one of the account's own clients (see whoami).
own_companybodybooleannotrue = this conference is for the account's own company, not a client. The explicit alternative to client_id on an account with clients.
whobodystringnoWho to go after at this conference, in plain words. Becomes its audience.
auto_startbodybooleanno—
dry_runbodybooleannoWhen 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.