{"eid":"convex","name":"Convex","domain":"convex.dev","resolved_by":"domain","topics":["storage"],"n_records":1,"best_vorder":6,"review":null,"aliases":["Convex","convex.dev"],"records":[{"rid":"storage/convex","card":{"rid":"storage/convex","eid":"convex","topic":"storage","slug":"convex","provider":"Convex","url":"https://www.convex.dev","domain":"convex.dev","category":"paas","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":"rest,cli","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":3,"usd_month":null,"usd_per_tb_month":null,"summary":"1 GB file storage on Free; 1 GB/month file egress; 0.5 GB database; 40 deployments","duplicate_of":null,"n_unknown":8},"record":{"topic":"storage","slug":"convex","provider":"Convex","url":"https://www.convex.dev","category":"paas","free_tier":{"stated":"1 GB file storage on Free; 1 GB/month file egress; 0.5 GB database; 40 deployments","unit":"GB","metered_on":"stored-bytes","source_url":"https://docs.convex.dev/production/state/limits","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not stated","source_url":"https://docs.convex.dev/production/state/limits","notes":"not stated"},"retention":{"stated":"not stated","source_url":"https://docs.convex.dev/production/state/limits","notes":"not stated"},"egress":{"terms":"1 GB/month data egress total on Free (serving user files, accessing files in functions, backups) — equal to the storage size, so a full store can be fetched exactly once per month.","metered":false,"free_allowance":"1 GB per month"},"interface":["rest","cli"],"interface_detail":"rest","tooling":"Convex client SDKs (JS/Python/Rust), HTTP actions, `npx convex` CLI, `storage.getUrl()` bearer URLs — 'anyone with the URL can access the file' (public, no auth)","chaining":"Free/Starter is per TEAM; 40 deployments per team on Free. But file storage is 1 GB total per team, not per deployment — so deployments do not multiply storage. Multiple teams/accounts is the only axis. Upload URLs are one-time and short-lived, which makes external tools awkward.","limits":[],"limits_note":"1 GB storage AND 1 GB egress; HTTP action responses capped at 100 MiB so you cannot proxy large files; file URLs are unrevocable except by deleting the file.","identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"Free has hard resource caps (Starter can exceed with usage-based billing). Well-behaved, no data loss reported; 100 MiB response cap breaks large-file serving via custom routes.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://docs.convex.dev/production/state/limits","date":"2026-10-21","proved":"'File Storage | Storage: Free: 1 GB total', 'Data egress: Free: 1 GB/month total'"},{"url":"https://docs.convex.dev/production/state/limits","date":"2026-10-21","proved":"'Deployments | 40' on Free/Starter (per team)"},{"url":"https://docs.convex.dev/file-storage/overview","date":"2026-10-21","proved":"'anyone with the URL can access the file without another app-level authorization check'"}],"verdict":"fails-quota","verified_at":"2026-10-21T00:00:00.000Z","notes":"1 GB file storage on Free; 1 GB/month file egress; 0.5 GB database; 40 deployments","extras":{"dead_end":{"failure_class":"egress","why":"1 GB file storage on Free; 1 GB/month file egress; 0.5 GB database; 40 deployments","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":1.0,"unit":"GB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.per_object_cap.notes","not-extracted"],["$.per_object_cap.stated","not-extracted"],["$.retention.notes","not-extracted"],["$.retention.stated","not-extracted"]],"history":[],"drift":[]}]}