> ## Documentation Index
> Fetch the complete documentation index at: https://whatsapp-docs.kap.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Time to live

# Time-to-live

Updated: Oct 31, 2025

If we are unable to deliver a message to a WhatsApp user, we will retry the delivery for a period of time known as a time-to-live (“TTL”), or the message validity period.

You can customize the default TTL for authentication and utility templates sent via Cloud API, and for marketing templates sent via Marketing Messages Lite API (“MM Lite API”).

We encourage you to set a TTL for all of your authentication templates, preferably equal to or less than your code expiration time, to ensure your customers only get a message when a code is still usable.

## Defaults, Min/Max Values, and Compatibility Table

|                        | Authentication                                                                       | Utility                | Marketing                        |
| ---------------------- | ------------------------------------------------------------------------------------ | ---------------------- | -------------------------------- |
| **Default TTL**        | 10 minutes<br />30 days for authentication templates created before October 23, 2024 | 30 days                | 30 days                          |
| **Compatibility**      | Cloud API + On-Premise API                                                           | Cloud API only         | Marketing Messages (MM) Lite API |
| **Customizable range** | 30 seconds to 15 minutes                                                             | 30 seconds to 12 hours | 12 hours to 30 days              |

## Customize the TTL

To set a custom TTL on an authentication, utility, or marketing template, include and set the value of the `message_send_ttl_seconds` property in the `POST /&lt;PHONE_NUMBER_ID&gt;/message_templates` call.

You can change the TTL on a previously configured template using this method, as well.

TTL can be customized in 1 second increments.

### Valid `message_send_ttl_seconds` property values

Authentication templates: `30` to `900` seconds (30 secs to 15 mins)
Utility templates: `30` to `43200` seconds (30 secs to 12 hours)
Marketing templates: `43200` to `2592000` (12 hours to 30 days)

For authentication and utility templates, you can set the `message_send_ttl_seconds` property value to `-1`, which will set a custom TTL of 30 days.

### Example request

```
curl 'https://graph.facebook.com/v21.0/102290129340398/message_templates' \
      -H 'Authorization: Bearer EAAJB...' \
      -H 'Content-Type: application/json' \
      -d '
      {
        "name": "test_template",
        "language": "en_US",
        "category": "MARKETING",
        // Configure your TTL in seconds below
        "message_send_ttl_seconds": "120",
        "components": [\
          {\
            "type": "BODY",\
            "text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",\
            "example": {\
              "body_text": [\
                [\
                  "the end of August","25OFF","25%"\
                ]\
              ]\
            }\
          },\
          {\
            "type": "FOOTER",\
            "text": "Use the buttons below to manage your marketing subscriptions"\
          },\
        ]
      }'
```

### Sample Response

```
\{
  "id": "572279198452421",
  "status": "PENDING",
  "category": "MARKETING"
}
```

### When TTL is exceeded: Dropped messages

Messages that are unable to be delivered within the default or customized TTL are dropped.

If you do not receive a [delivered message webhook](https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/reference/messages/status) before the TTL is exceeded, assume the message was dropped.

If you send a message that [fails to deliver](https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/reference/messages/status), there could be a minor delay before you receive the webhook, so you may wish to build in a small buffer before assuming the message was dropped.

Did you find this page helpful?

![Thumbs up icon](https://static.xx.fbcdn.net/rsrc.php/yR/r/OEXJ0_DJeZv.svg)

![Thumbs down icon](https://static.xx.fbcdn.net/rsrc.php/yb/r/qKPgNVNeatU.svg)

ON THIS PAGE

Defaults, Min/Max Values, and Compatibility Table

Customize the TTL

Valid message\_send\_ttl\_seconds property values

Example request

Sample Response

When TTL is exceeded: Dropped messages

***
