Skip to content

Templates · Published 2026-09-28 · AgentiSend team

Password reset

Send the link a person follows to choose a new password after asking for one.

Send the link a person follows to choose a new password after asking for one.

Variables

Every placeholder is required. A send that omits one is refused with that name, rather than going out with a blank.

  • first_name (string, required). The account holder’s first name.
  • account_email (string, required). The address the account signs in with.
  • product_name (string, required). Your product, as the person knows it.
  • reset_url (string, required). An https link carrying a single-use token.
  • expires_minutes (number, required). How long the link stays valid, in minutes.

Rendered with the example values

These values are samples. They are not an account on AgentiSend.

Subject: Reset your Acme password

<p>Hi Ada,</p>
<p>Someone asked to reset the password for ada@example.com on Acme.</p>
<p><a href="https://app.example.com/reset?token=7f3c9a">Choose a new password</a></p>
<p>The link works once and expires in 30 minutes.</p>
<p>If you did not ask for this, ignore this email. Your password stays as it is.</p>
Hi Ada,

Someone asked to reset the password for ada@example.com on Acme.

Choose a new password (https://app.example.com/reset?token=7f3c9a)

The link works once and expires in 30 minutes.

If you did not ask for this, ignore this email. Your password stays as it is.

Create the draft

POST /templates and the create_template tool take this body. The draft does not send until it is published.

{
  "name": "Password reset",
  "subject": "Reset your {{product_name}} password",
  "content": {
    "mode": "markdown",
    "source": "Hi {{first_name}},\n\nSomeone asked to reset the password for {{account_email}} on {{product_name}}.\n\n[Choose a new password]({{reset_url}})\n\nThe link works once and expires in {{expires_minutes}} minutes.\n\nIf you did not ask for this, ignore this email. Your password stays as it is."
  },
  "variables": [
    {
      "name": "first_name",
      "type": "string",
      "required": true
    },
    {
      "name": "account_email",
      "type": "string",
      "required": true
    },
    {
      "name": "product_name",
      "type": "string",
      "required": true
    },
    {
      "name": "reset_url",
      "type": "string",
      "required": true
    },
    {
      "name": "expires_minutes",
      "type": "number",
      "required": true
    }
  ]
}

Publish it

Call publish_template with the id POST /templates returned. Publishing again makes the next version. A version that already went out does not change.

{
  "name": "publish_template",
  "arguments": {
    "template_id": "<the id POST /templates returned>"
  }
}

Send it

Create the draft with the body above, publish it, then send with template_id and template_values. The rules are in Templates. The three calls, including a render that does not send, are in How do I send an email from a template. The next starter is Welcome.