No Storage | Developer Documentation
No Storage
Updated: Dec 1, 2025
“No Storage” is a custom configuration of Cloud API local storage, where the data in-transit is kept for up to an hour in Meta data centers and the data is not persisted at rest (that is to say, not in Meta data centers nor in AWS In-Country stores).

Limitations
When the No Storage feature is enabled, message content is not stored at rest for 30 days as is typical with Cloud API. This introduces the following limitations, which can put a small fraction of your total messaging volume at risk of non-delivery.
Enable No Storage
Request syntax (v21.0 or newer)
Enabling the feature is done before registration by calling the POST /<BUSINESS_PHONE_NUMBER_ID>/settings endpoint.
curl 'https://graph.facebook.com/<API_VERSION>/<BUSINESS_PHONE_NUMBER_ID>/settings' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-d '
{
"storage_configuration": {
"status": "NO_STORAGE_ENABLED",
"retention_minutes": 60
}
}'
Currently, only the
60 value is allowed for the retention_minutes parameter, as it is the only retention duration we are supporting.Request syntax (v20.0 or older)
Enabling the feature is done within the POST /<BUSINESS_PHONE_NUMBER_ID>/register registration request.
curl 'https://graph.facebook.com/<API_VERSION>/<BUSINESS_PHONE_NUMBER_ID>/settings' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-d '
{
"messaging_product": "whatsapp",
"pin": "123456",
"tier": "test",
"meta_store_retention_minutes": 60
}'
meta_store_retention_minutes cannot be used alongside with data_localization_region.Disable No Storage
To disable No Storage, you must de-register the bsuiness phone number using the POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID>/deregister endpoint, then register the number again without the
meta_store_retention_minutes parameter.Example deregister syntax
curl -X POST 'https://graph.facebook.com/<API_VERSION>/<BUSINESS_PHONE_NUMBER_ID>/deregister' \
-H 'Authorization: Bearer <ACCESS_TOKEN>'
Override outgoing media TTL
The default 1-hour TTL for No Storage-enabled business phone numbers also applies to media uploaded on the number. If you want to override the default 1-hour TTL, you can include the new
ttl_minutes parameter when uploading media.Example syntax
curl 'https://graph.facebook.com/<API_VERSION>/<BUSINESS_PHONE_NUMBER_ID>/media' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-d '
{
"messaging_product": "whatsapp",
"file": "file=<FILE_NAME>;type=<FILE_MIME_TYPE>",
"ttl_minutes": "120"
}'
ttl_minutes range is from 1 hour (60) to 30 days (43200).The API currently does not return the expiration date of the media in the response API.Error webhooks
Retry receipt failures
In the case of WhatsApp client decryption failures, we will stop attempting to deliver an undelivared message from a No Storage-enabled number once the TTL is reached. In these cases, a status messages webhook is triggered with error code
131036:Example payload
{
"object": "whatsapp_business_account",
"entry": [{
"id": "102290129340398",
"changes": [{
"field": "messages",
"value": {
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "15550783881",
"phone_number_id": "106540352242922"
},
"statuses": [{
"id": "wamid.HBgMNDQ3ODI1MDYzOTQxFQIAERgSN0MzMTg0Nzk2RkMwOEQ5NTQ2AA==",
"status": "failed",
"timestamp": "1712597457",
"recipient_id": "16505551234",
"errors": [{
"code": 131036,
"title": "Message failed to be delivered on at least one of the user's device",
"message": "Message failed to be delivered on at least one of the user's device",
"error_data": {
"details": "Message payload not found"
}
}]
}]
}
}]
}]
}
Notes:
Failure to deliver webhooks
By default, Cloud API retries for up to 7 days to deliver incoming messages webhooks. For No Storage-enabled business phone numbers, if we fail to deliver an incoming message webhook, we will drop it and instead send an errors messages webhook with error code
131035:{
"object": "whatsapp_business_account",
"entry": [{
"id": "102290129340398",
"changes": [{
"field": "messages",
"value": {
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "15550783881",
"phone_number_id": "106540352242922"
},
"errors": [{
"code": 131035,
"title": "Webhook could not be delivered within data retention limit",
"message": "Webhook could not be delivered within data retention limit",
"error_data": {
"details": "Webhook could not be delivered within data retention limit"
}
}]
}
}]
}]
}
No comments to display
No comments to display