docs/Privacy & Data/R2 Storage & Pricing

R2 Storage & Pricing

Immutable JSONL on Cloudflare R2. $0 egress. Plan-based retention.

How data is stored

Every push writes an immutable JSONL blob to Cloudflare R2. Nothing is overwritten — each version lives at its own key forever, until it falls outside your retention window.

grids/<handle>/<slug>/v1.jsonl    ← never mutated
grids/<handle>/<slug>/v2.jsonl
grids/<handle>/<slug>/v3.jsonl    ← "current" pointer

$0 egress

Cloudflare R2 has no egress fees. Reading a grid — whether it's your agent pulling 5 million rows or the embed rendering a table — costs the same in egress as doing nothing. You only pay for storage and ingest operations.

Retention and storage by plan

PlanRetentionStorage limit
Free7 days100 MB
Builder30 days100 GB
Agent365 days1 TB

Note: Retention applies to the JSONL blob in R2. The grid metadata (title, schema, version list) persists in D1 after a blob expires — you can see the version history even if the raw file is gone.

Verifying storage via the API

# Check your current workspace usage
curl https://instadash.io/api/workspace \
  -H "Authorization: Bearer sk_live_…"
# → { "storage_used_bytes": 1234567, "storage_limit_bytes": 107374182400, … }