Base URL
https://app.dmu.email/api/v1
Authentication
Bearer dmk_… API key
Rate limit
120 requests a minute per key

Update a saved reply

PUT/saved-replies/{id}

Replaces a saved reply. Send all of it, as when creating one: an optional field you leave out is cleared.

Needs the permissiontemplates:update

Path parameters

idstringrequired
The saved reply.

Body

namestringrequired
How people find it.
bodyHtmlstringrequired
The text, as HTML.
descriptionstringoptional
A line about when to use it.
subjectstringoptional
A subject it sets.
mailboxIdstringoptional
Only for this mailbox.
teamIdstringoptional
Only for this team.

Returns

idstring
The saved reply.
namestring
How people find it.
descriptionstring or null
A line about when to use it.
subjectstring or null
A subject it sets, if any.
bodyHtmlstring
The text.
mailboxIdstring or null
The one mailbox it’s for, if it’s limited to one.
teamIdstring or null
The one team it’s for, if it’s limited to one.

Errors

400invalid_template
There’s no name or no bodyHtml, or something else is wrong.
401invalid_key
The key is wrong, expired or revoked. With no Authorization header at all, the code is missing_credentials.
403missing_scope
The key doesn’t have templates:update. The X-Required-Scope header names what’s missing.
404not_found
There’s no such saved reply, or the key’s owner can’t see it.
429rate_limited
More than 120 requests a minute from this key. Wait for Retry-After seconds.
curl https://app.dmu.email/api/v1/saved-replies/4ad0b5e6 \
  -X PUT \
  -H "Authorization: Bearer dmk_7f3a9c2e1b4d_Xq8v…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Delivery booked",
    "description": "When a delivery date is confirmed",
    "bodyHtml": "<p>Your delivery is booked for {date}.</p>",
    "mailboxId": null
  }'

Response

200 OK

{
  "data": {
    "id": "4ad0b5e6",
    "name": "Delivery booked",
    "description": "When a delivery date is confirmed",
    "subject": null,
    "bodyHtml": "<p>Your delivery is booked for {date}.</p>",
    "mailboxId": null,
    "teamId": null
  }
}

Every response wraps its result in data. A page of threads adds nextCursor, which is null on the last page.