WhatsApp Cloud
facebook.com · Storage · 2 records · JSON
- WhatsApp Cloud API — Media (upload / media_id) Storagefails: quotainstitutionno cardRper-object-cap
- whatsapp cloud api media as archive Storagefails: quotaemail?card?R
WhatsApp Cloud API — Media (upload / media_id) Storage
fails: quotainstitutionno cardRper-object-cap
| Free tier | Per-file caps only, no storage quota: documents 100 MB, images 5 MB, video 16 MB, audio 16 MB, stickers 500 KB (as listed on the reference page). Files persist 30 days. unit MB; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | Per-file caps only, no storage quota: documents 100 MB (100000000 bytes) |
| Retention | 'All media files sent through this API are encrypted and persist for 30 days, unless they are deleted earlier.' Media IDs also expire at 30 days (7 days for IDs arriving in webhooks) (30 days) |
| Egress | Download is free of per-GB charge but doubly gated: media URLs EXPIRE AFTER 5 MINUTES and must be re-fetched via the media ID using a Bearer token. There is no public URL at any point. |
| Identity | institution derived from the record's prose, not from an identity field, and no signup was executed: ION — the disqualifier. 'All media files sent through this API are encrypted and persist for 30 days, unless they are deleted earlier.' Media IDs also expire at 30 days (7 days for I |
| Limits |
HARD 30-DAY DELETION — the disqualifier. 'All media files sent through this API are encrypted and persist for 30 days, unless they are deleted earlier.' Media IDs also expire at 30 days (7 days for IDs arriving in webhooks). Media URLs live 5 minutes. |
| Binding | per-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota |
| Interface | rest, graph, rclone rest |
| Tooling | Graph API; official SDKs (facebook-business, whatsapp-cloud-api wrappers). No rclone backend. Wrappers exist but cannot beat the 30-day deletion. |
| Composes with | Does not multiply — retention, not count, is the wall. Unlimited phone numbers x 30 days each is still a 30-day window, i.e. a cache, not storage. |
| Reliability | Deterministic deletion, not a fair-use throttle: on day 31 the bytes are gone and only an error remains. Would silently destroy a 20 TiB archive. |
| Notes | Per-file caps only, no storage quota: documents 100 MB, images 5 MB, video 16 MB, audio 16 MB, stickers 500 KB (as listed on the reference page). Files persist 30 days. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | developers.facebook.com/docs/whatsapp/cloud-api/reference/me | read live: 'All media files sent through this API are encrypted and persist for 30 days, unless they are deleted earlier.'; 'Media IDs returned by the API expire after 30 days. Media IDs in webhooks expire after 7 days.'; 'Media URLs expire after 5 minutes' |
| 2026-10-21 | developers.facebook.com/docs/whatsapp/cloud-api/reference/me | read live: size table 'Text .txt text/plain 100 MB', 'AAC .aac 16 MB', etc. |
| 2026-10-21 | graph.facebook.com/v21.0/123456/media | probe: GET -> 400 (anonymous call refused; token mandatory) |
More fields (1)
{
"dead_end": {
"failure_class": "quota",
"why": "Per-file caps only, no storage quota: documents 100 MB, images 5 MB, video 16 MB, audio 16 MB, stickers 500 KB (as listed on the reference page). Files persist 30 days.",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (4)
$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted
whatsapp cloud api media as archive Storage
fails: quotaemail?card?R
| Free tier | 30-day hard deletion plus 5-minute media URLs; the bytes are unrecoverable on day 31. Any 'WhatsApp as free storage' claim found in the wild is wrong about this. unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | 30-day hard deletion plus 5-minute media URLs; the bytes are unrecoverable on day 31. Any 'WhatsApp as free storage' claim found in the wild is wrong about this. |
| Notes | 30-day hard deletion plus 5-minute media URLs; the bytes are unrecoverable on day 31. Any 'WhatsApp as free storage' claim found in the wild is wrong about this. |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | developers.facebook.com/docs/whatsapp/cloud-api/reference/me | 30-day hard deletion plus 5-minute media URLs the bytes are unrecoverable on day 31. Any 'WhatsApp as free storage' claim found in the wild is wrong about this. |
More fields (1)
{
"dead_end": {
"failure_class": "quota",
"why": "30-day hard deletion plus 5-minute media URLs; the bytes are unrecoverable on day 31. Any 'WhatsApp as free storage' claim found in the wild is wrong about this.",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded