sayintel
Endpoint

Push approved

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

Push every send-ready, not-yet-pushed sequence in a campaign to its wired HeyReach campaign (optionally narrowed to speaker_ids). Only already-approved sequences go: all three slots drafted, QA-evaluated and cleared, not flagged needs_human/needs_redo, LinkedIn URL present, freshness guard passed. Messages are marked sent only after HeyReach confirms, and a human still arms the HeyReach campaign itself. Pass dry_run=true to see how many sequences would go, without pushing. Requires the 'send' token scope.

Request

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

Try it out

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

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
speaker_idsbodyarrayno
dry_runbodybooleannoWhen true nothing is written, started, or spent. The tool returns only cost_preview so an agent can estimate credits first.
idempotency_keybodystringnoOptional retry guard. Reusing the same key with the same arguments replays the first result instead of running the action twice; reusing it with different arguments is rejected.

Response

{
  "ok": true,
  "tool": "push_approved",
  "kind": "send",
  "data": { ... },
  "error": null
}

Notes

  • Scope required: send. 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 push_approved. MCP setup.