sayintel
Endpoint

Update icp

POST/api/public/v1/campaigns/{campaign_id}/icpwrite

Change a campaign's ICP. Merges top-level keys by default (pass mode='replace' to overwrite the whole object). Use this when the wrong people are being qualified or parked - target_titles and company_size are the two fields that decide it. IMPORTANT: this does NOT re-judge speakers who were already qualified; existing verdicts stand until the campaign is re-qualified, and the response tells you how many are affected.

Request

curl -X POST "https://sayintel.com/api/public/v1/campaigns/<campaign_id>/icp" \
  -H "Authorization: Bearer $SAYINTEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"icp": <icp>}'

Try it out

Try it outPOST/api/public/v1/campaigns/{campaign_id}/icpwrite

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.

Path parameters

NameInTypeRequiredDescription
campaign_idpathstringyes—

Body

NameInTypeRequiredDescription
icpbodyunknownyes—
modebodystringmerge | replaceno—

Response

{
  "ok": true,
  "tool": "update_icp",
  "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.
  • Same capability over MCP as the tool update_icp. MCP setup.