Schedule a message

Release an unsent draft to leave at a chosen time, one minute to 60 days out, optionally with new words. The launcher sends it then, behind the send gate. A queued or sent message answers 409.

POSThttps://app.trygtm.com/api/v1/messages/{message_id}/schedule
Scope
write

Path parameters

message_idstringrequired
The draft's id, from read_conversation.

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

send_atstringrequired
When to send, as an ISO 8601 time with an offset, from one minute to 60 days from now.
bodystringoptional
Replacement text.
subjectstringoptional
Replacement subject. Email only.

Request

curl -X POST https://app.trygtm.com/api/v1/messages/8f2a91c4-6d1e-4c0a-9a57-2f3b1c7e9d10/schedule \
  -H "Authorization: Bearer $TRYGTM_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "send_at": "…"
  }'

Response

{
  "data": {
    "id": "aa11bb22-cc33-4d44-8e55-ff6677889900",
    "conversation_id": "0f1e2d3c-4b5a-4697-8877-665544332211",
    "direction": "outbound",
    "channel": "email",
    "kind": "message",
    "status": "queued",
    "subject": "Re: routing software",
    "body": "Tuesday at 10 works. I'll send an invite.",
    "gate_result": null,
    "error": null,
    "scheduled_for": "2026-09-19T14:00:00.000Z",
    "created_at": "2026-09-18T10:15:00.000Z",
    "updated_at": "2026-09-18T10:16:00.000Z",
    "outcome": "Scheduled. The launcher sends it at that time, after the suppression check and the send gate."
  }
}

Was this page helpful?