mail

PATCH /v1/mail/services/{mailServiceId}/responders/{responderId}

Edit an auto-reply.

All mail endpoints

Authentication

Send an API key as a bearer token. The key must carry the mail.manage permission; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X PATCH https://api.zinndigital.com/v1/mail/services/{mailServiceId}/responders/{responderId} \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "content": <string> }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Changes the message and its schedule. **The address is not part of this body** — an auto-reply belongs to a mailbox, and the address is *which mailbox you are editing* rather than a property of the reply. ⭐ This used to say *"the mail backend has no rename verb"*. That was **false** and was the stated premise of a decision to offer no rename at all; measured against the live upstream hosting API on 2026-08-16, a mailbox renames **in place**, same id, contents intact. Use `renameMailbox` to change an address, or a forwarder to give a mailbox a second one. The responder is returned **as the backend reports it back after the write**, not as it was sent: the mail backend answers an applied update and an ignored one with the same empty body, so echoing the request would be a fabricated success (D9256). Requires `mail.manage`.

Parameters

NameTypeRequiredWhat it is
mailServiceId (path)UuidYesEmail service ID (UUIDv7).
responderId (path)stringYesThe **mail backend's** identifier for the responder, as returned by the list — not a UUID of ours. A responder has no model here, so there is no id of ours to use.

Request body

NameTypeRequiredWhat it is
subjectstringNo
contentstringYes
start_timestringNoRFC 3339. `null` clears the schedule.
end_timestringNoRFC 3339, and must be after `start_time` when both are given.

Response

NameTypeRequiredWhat it is
idstringYesThe mail backend's identifier - the handle `DELETE` needs.
localstringYesThe part before the `@`.
addressstringYesThe mailbox this replies for.
subjectstringYes
contentstringYesThe reply body.
start_timestringYesWhen the auto-reply starts. `null` when unscheduled (it replies from now on). ⭐ This used to be declared **"Opaque - do not parse, compare or render as a date"** (#664), out of…
end_timestringYesWhen the auto-reply stops. `null` to run until switched off.

Errors this endpoint can return

401 · 403 · 404 · 422 · 429 · 503