Write a reply

Write an outbound message into an existing thread. Saved as a draft by default; with send: true it is queued and the launcher sends it after the suppression check and the send gate. A refused message comes back as blocked with the reason. Cannot start a conversation.

POSThttps://app.trygtm.com/api/v1/conversations/{conversation_id}/messages
Scope
write
MCP tool
draft_reply

Path parameters

conversation_idstringrequired
The thread to reply on.

Headers

Idempotency-Keystringoptional
A key unique to this write, up to 255 characters. A retry carrying the same key returns the first response instead of running again. Kept for 24 hours.

Body

bodystringrequired
The message text.
subjectstringoptional
Email only. Defaults to the thread's subject.
sendbooleanoptionaldefault: false
Release it for sending instead of saving a draft.

Request

curl -X POST https://app.trygtm.com/api/v1/conversations/8f2a91c4-6d1e-4c0a-9a57-2f3b1c7e9d10/messages \
  -H "Authorization: Bearer $TRYGTM_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "Tuesday at 10 works. I'll send an invite."
  }'

Response

{
  "data": {
    "id": "aa11bb22-cc33-4d44-8e55-ff6677889900",
    "conversation_id": "0f1e2d3c-4b5a-4697-8877-665544332211",
    "direction": "outbound",
    "channel": "email",
    "kind": "message",
    "status": "drafted",
    "subject": "Re: routing software",
    "body": "Tuesday at 10 works. I'll send an invite.",
    "gate_result": null,
    "error": null,
    "created_at": "2026-09-18T10:15:00.000Z",
    "updated_at": "2026-09-18T10:15:00.000Z"
  }
}

Was this page helpful?