---
title: 'New recording storage tiers, billed monthly on the 1st'
description: >-
  Recording storage now comes in 100 MB (free), 1 GB, 4 GB and 50 GB, renewed
  from the wallet on the 1st, with retention up to 60 days.
summary: >-
  Storage tiers are now 100 MB (free) / 1 GB / 4 GB / 50 GB, billed monthly on
  the 1st. The storage API moves from tier_gb to tier_mb.
date: 2026-09-23T00:00:00.000Z
type: changelog
---


## What changed

Recording storage has four sizes. Each size sets how much a workspace can hold and how long recordings are kept.

| Size | Price | Recordings kept |
|---|---|---|
| 100 MB | Free (every workspace) | 24 hours |
| 1 GB | KES 599 / month | 3 days |
| 4 GB | KES 1,999 / month | 14 days |
| 50 GB | KES 9,999 / month | 60 days |

- **Billed monthly on the 1st.** Paid sizes renew from the wallet on the 1st of each month.
- **Upgrades apply immediately**, charged for the rest of the current month.
- **Downgrades take effect on the 1st.** Nothing is refunded.
- **Over the size, the oldest recordings go first.** When a workspace holds more than its size allows, the oldest recordings are deleted until it fits.

Current prices are always at [/pricing](/pricing#recordings).

## API changes

`PUT /v1/storage/tier` now takes the size in MB:

```json
{ "tier_mb": 1024 }
```

Allowed values are `100`, `1024`, `4096` and `51200`. Anything else returns `400 storage.tier_invalid`. The response adds `retention_hours`, `paid_through`, `next_tier_mb` (a downgrade waiting for the 1st) and `past_due_since`.

`GET /v1/storage/pricing` rows add `storage_mb` and `retention_hours`. `storage_gb` is now a decimal, so the free size reads `0.1`.

The [`storage.tier_changed`](/developers/webhooks/storage-tier-changed) webhook now carries `from_tier_mb`, `to_tier_mb`, `charge_minor` and a `reason`.
