# Idempotent sends: the SendOptions argument
```python
import resend
params: resend.Emails.SendParams = {
"from": "[SENDER]",
"to": ["[RECIPIENT]"],
"subject": "Welcome",
"html": "<strong>it works!</strong>",
}
options: resend.Emails.SendOptions = {
"idempotency_key": "welcome-user/[USER-ID]",
}
resend.Emails.send(params, options)
```
## The rules, from the docs
- Include a key on any send you might retry, so the same request processed twice
still sends once.
- The key must be unique per API request. Namespace it by the business event:
`welcome-user/[USER-ID]`, not a constant.
- Keys expire after 24 hours. A retry three days later is a new send.
- Maximum length is 256 characters.
## Checklist
- The option name is `idempotency_key` (snake_case) in Python, `idempotencyKey`
in Node. Mixing the cases silently drops the key in the Python SDK.
- It is the second positional argument to `resend.Emails.send`, not part of
the params dict.
- On retry-after-timeout, reuse the SAME key. Generating a fresh key per
attempt is the most common way to defeat idempotency.