Endpoint
Draft from signal
POST/api/public/v1/campaigns/{campaign_id}/signals/{signal_id}/draftwrite
Write an opener from one signal (a discovered_posts id from list_signals). For a person with a draft it rewrites message 1 through the same path as request_rewrite (hard-fail QA gate, cost cap, audit), anchored on their own post; for a person with no draft yet it selects them and nudges the run. Spends model calls. Writes a draft only: nothing is approved or sent.
Request
curl -X POST "https://sayintel.com/api/public/v1/campaigns/<campaign_id>/signals/<signal_id>/draft" \
-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}/signals/{signal_id}/draftwrite
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| campaign_id | path | string | yes | — |
| signal_id | path | string | yes | — |
Response
{
"ok": true,
"tool": "draft_from_signal",
"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 draft_from_signal. MCP setup.