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.