{"eid":"facebook","name":"WhatsApp Cloud","domain":"facebook.com","resolved_by":"domain","topics":["storage"],"n_records":2,"best_vorder":6,"review":null,"aliases":["WhatsApp Cloud","WhatsApp Cloud API — Media (upload / media_id)","facebook.com","whatsapp cloud api media as archive"],"records":[{"rid":"storage/whatsapp-cloud-api-media","card":{"rid":"storage/whatsapp-cloud-api-media","eid":"facebook","topic":"storage","slug":"whatsapp-cloud-api-media","provider":"WhatsApp Cloud API — Media (upload / media_id)","url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","domain":"facebook.com","category":"messaging","tier":null,"verdict":"fails-quota","vorder":6,"grp":"rejected","confidence":"reported","binding":"per-object-cap","identity_kind":"institution","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":1,"country":null,"crypto":null,"interfaces":"rest,graph,rclone","egress_metered":0,"per_object_bytes":100000000,"retention_days":30,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":3,"usd_month":null,"usd_per_tb_month":null,"summary":"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 persi...","duplicate_of":null,"n_unknown":4},"record":{"topic":"storage","slug":"whatsapp-cloud-api-media","provider":"WhatsApp Cloud API — Media (upload / media_id)","url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","category":"messaging","free_tier":{"stated":"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","source_url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"Per-file caps only, no storage quota: documents 100 MB","bytes":100000000,"source_url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","notes":"not stated"},"retention":{"stated":"'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)","days":30,"source_url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","notes":"not stated"},"egress":{"terms":"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.","metered":false},"interface":["rest","graph","rclone"],"interface_detail":"rest","tooling":"Graph API; official SDKs (facebook-business, whatsapp-cloud-api wrappers). No rclone backend. Wrappers exist but cannot beat the 30-day deletion.","chaining":"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.","limits":[{"kind":"retention-clamped","value":"expire at 30 days","source":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media"},{"kind":"per-object-cap","value":"Per-file caps only, no storage quota: documents 100 MB","source":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media"}],"limits_note":"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.","identity_cost":{"kind":"institution","detail":"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","country":null},"reliability_note":"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.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","date":"2026-10-21","proved":"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'"},{"url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","date":"2026-10-21","proved":"read live: size table 'Text .txt text/plain 100 MB', 'AAC .aac 16 MB', etc."},{"url":"https://graph.facebook.com/v21.0/123456/media","date":"2026-10-21","proved":"probe: GET -> 400 (anonymous call refused; token mandatory)"}],"verdict":"fails-quota","verified_at":"2026-10-21T00:00:00.000Z","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.","extras":{"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"}},"binding":"per-object-cap","binding_note":"the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":100.0,"unit":"MB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[0].value","kind":"limit:retention-clamped","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"},{"path":"$.limits[1].value","kind":"limit:per-object-cap","num":100.0,"unit":"MB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.per_object_cap.notes","not-extracted"],["$.retention.notes","not-extracted"]],"history":[],"drift":[]},{"rid":"storage/whatsapp-cloud-api-media-as-archive","card":{"rid":"storage/whatsapp-cloud-api-media-as-archive","eid":"facebook","topic":"storage","slug":"whatsapp-cloud-api-media-as-archive","provider":"whatsapp cloud api media as archive","url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","domain":"facebook.com","category":"rejected-provider","tier":null,"verdict":"fails-quota","vorder":6,"grp":"rejected","confidence":"reported","binding":"none","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":null,"egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":1,"usd_month":null,"usd_per_tb_month":null,"summary":"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 t...","duplicate_of":null,"n_unknown":15},"record":{"topic":"storage","slug":"whatsapp-cloud-api-media-as-archive","provider":"whatsapp cloud api media as archive","url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","category":"rejected-provider","free_tier":{"stated":"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","source_url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not recorded","bytes":null,"source_url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","notes":"not recorded"},"retention":{"stated":"not recorded","days":null,"source_url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","notes":null},"egress":{"terms":"not recorded","metered":false},"interface":["unknown"],"interface_detail":null,"tooling":"not recorded","chaining":"not recorded","limits":[],"limits_note":null,"identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"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.","confidence":"reported","confidence_note":null,"evidence":[{"url":"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media","date":"2026-10-21","proved":"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."}],"verdict":"fails-quota","verified_at":"2026-10-21T00:00:00.000Z","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.","extras":{"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"}},"binding":"none","binding_note":"no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.chaining","not-recorded"],["$.confidence_note","withheld"],["$.egress.terms","not-recorded"],["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.interface","interface-unknown"],["$.interface_detail","withheld"],["$.limits_note","process"],["$.per_object_cap.notes","not-recorded"],["$.per_object_cap.stated","not-recorded"],["$.retention.notes","process"],["$.retention.stated","not-recorded"],["$.tooling","not-recorded"]],"history":[],"drift":[]}]}