sayintel
Endpoint

Approve fits and clean drafts

POST/api/public/v1/campaigns/{campaign_id}/fits/approvesend

SENDS. Selects the ICP fits and approves their QA-passed drafts — and approving is what arms outbound: it clears needs_human, and a complete QA-cleared sequence on a campaign with HeyReach auto-push active is pushed to HeyReach immediately, which puts a real LinkedIn message in front of a real person. Never approves an unscored or failing draft, and approval is NOT reversible by un-approving (the needs_human flag stays cleared). Pass speaker_ids to approve a specific set; omitting it approves the ENTIRE campaign. Pass dry_run=true first to see how many drafts and speakers would be approved and whether this campaign's auto-push is armed. Requires the 'send' token scope.

Request

curl -X POST "https://sayintel.com/api/public/v1/campaigns/<campaign_id>/fits/approve" \
  -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}/fits/approvesend

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_idsbodyarraynoApprove only these speakers. Omit to approve every fit in the campaign — an explicit choice, not a default to fall into.
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": "approve_fits_and_clean_drafts",
  "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 approve_fits_and_clean_drafts. MCP setup.