Read current storage tier + usage breakdown
Authorization
bearerAuth Long-lived ES256 JWT minted from the dashboard (https://app.sautikit.com/developers/api-keys). Signed by the
platform keyring. Carries workspace_id and scopes claims;
revoked via the platform deny-list.
In: header
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/storage/tier"{ "tier_mb": 100, "size_mb": 0, "log_retention": "3d", "retention_hours": 72, "paid_through": "2019-08-24T14:15:22Z", "next_tier_mb": 100, "past_due_since": "2019-08-24T14:15:22Z", "used_bytes": 0, "breakdown": { "recordings_bytes": 0, "logs_bytes": 0, "other_bytes": 0, "desk_mail_bytes": 0 }, "price_minor": 0, "currency": "string", "updated_at": "2019-08-24T14:15:22Z"}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ], "resolution": "string", "reason": "invalid_characters", "suggested_e164": "+254727524723" }}Live storage-tier pricing matrix GET
Returns the currently effective storage pricing matrix — one row per `(tier_mb, currency)`. Prices are read live, so the values here always match what a workspace is actually billed rather than a hard-coded fallback. `egress_gb` is reserved (0 today; metered egress is not surfaced yet).
Switch the workspace storage tier PUT
Storage tiers are billed monthly from the wallet on the 1st. - **Upgrade**: applies immediately. The wallet is charged the new tier's price for the rest of the current month, less the unused rest of the current tier if this month is already paid. Emits `storage.tier_changed`. - **Downgrade**: if this month is paid, it is scheduled for the 1st (`next_tier_mb`) and you keep the larger size until then. Not refunded. When it applies, recordings over the new size are deleted, oldest first. - **Same tier**: cancels a scheduled downgrade; otherwise a no-op. `Idempotency-Key` dedupes the wallet debit on retries. The 200 body also carries `charge` (`net_minor`, `vat_minor`, `gross_minor`, `vat_applied`, `vat_rate_bps`, `currency`; null when nothing was debited) and `wallet_balance_after_minor`.