sayintel
Endpoint

Mark message sent

POST/api/public/v1/messages/{message_id}/sentwrite

Record that a drafted message was ALREADY sent by some other route (a hand-send, an export, a push made outside sayintel): stamps sent_at = now and writes the same bookkeeping as approving it in the app — message_audit_log entry, approved-lead ledger row, needs_human cleared, exemplar promotion. It deliberately does NOT push anything to HeyReach: the premise is that the send already happened, so pushing would double-send. Use push_approved (send scope) to actually send, or approve_fits_and_clean_drafts (send scope) to approve-and-push. Idempotent unless force=true.

Request

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

Try it out

Try it outPOST/api/public/v1/messages/{message_id}/sentwrite

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
message_idpathstringyes—

Body

NameInTypeRequiredDescription
forcebodybooleanno—

Response

{
  "ok": true,
  "tool": "mark_message_sent",
  "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 mark_message_sent. MCP setup.