mail

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

Edit an auto-reply.

All mail endpoints

All developer docs →

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 a…
end_timestringYesWhen the auto-reply stops. null to run until switched off.

Errors this endpoint can return

401 · 403 · 404 · 422 · 429 · 503