Approve fits and clean drafts
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
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.
Path parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| campaign_id | path | string | yes | — |
Body
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| speaker_ids | body | array | no | Approve only these speakers. Omit to approve every fit in the campaign — an explicit choice, not a default to fall into. |
| 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. |
| idempotency_key | body | string | no | Optional 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.