---
title: RateTable
description: The pinned rate table, and everything it says about itself.
---

```python
@final
class RateTable
```

The pinned rate table, and everything it says about itself.

The rates are exact decimal **strings** for the same reason the money types are: they
are figures like `0.0000276944` and an f64 round trip through Python would make a
report irreconcilable against the page it came from.

## Constructor

`RateTable` declares no `__new__` or `__init__`, so it is not constructed directly: an instance comes back from another call in this package.

## Properties

### `bills_vcpu_and_memory_separately`

```python
bills_vcpu_and_memory_separately: bool
```

True: vCPU and memory are two line items, as the pricing page prices them.

### `free_tier`

```python
free_tier: bool
```

False: no published MicroVMs free tier. The Lambda one is Functions-only.

### `gb_second`

```python
gb_second: str
```

### `minimum_billing_increment_sec`

```python
minimum_billing_increment_sec: float | None
```

`None` means **not published**, not one second. Nothing rounds a duration up,
because inventing an increment would overcharge every short exec.

### `minimum_retention_seconds`

```python
minimum_retention_seconds: float
```

Snapshot storage bills at least this long however briefly the snapshot exists.

### `per_request`

```python
per_request: str
```

Zero: MicroVMs bills per second with no per-request charge.

### `region`

```python
region: str
```

### `retrieved`

```python
retrieved: str
```

ISO 8601, matching the Python's `retrieved.isoformat()` so the two are diffable.

### `snapshot_read_gb`

```python
snapshot_read_gb: str
```

### `snapshot_write_gb`

```python
snapshot_write_gb: str
```

### `source_url`

```python
source_url: str
```

### `storage_gb_month`

```python
storage_gb_month: str
```

Per GB-month. The one derived figure: the API quotes per GB-hour and this is that
times 730.

### `vcpu_second`

```python
vcpu_second: str
```

## Methods

### `age_days`

```python
def age_days() -> int
```

How many days ago these rates were read, against today UTC.

### `pinned`

```python
@staticmethod
def pinned() -> RateTable
```

us-east-1, read 2026-08-07, as recorded in `docs/PLATFORM.md`.

There is deliberately no constructor taking rates. The core's `RateTable` has
private rate fields and exactly two doors — this one and `from_catalog`, which
refuses a catalog whose ARM compute line is missing rather than substituting the
x86 one (COST-9, 17.9% higher). A binding constructor taking five numbers would
reopen precisely that.

### `staleness`

```python
def staleness() -> str | None
```

The staleness warning, or `None` when the table is fresh.

## Special methods

### `__repr__`

```python
def __repr__() -> str
```

## Provenance

This page is generated from `bindings/microvms-py/microvms.pyi` by Griffe 2.3.0, run from `site/scripts/gen-reference.mjs` on every `pnpm run sync`, so an edit made here is overwritten by the next run.

To change the page, change the doc comment in the binding's Rust source, then regenerate the declarations with `mise run stubs`. `mise run stubs:check` fails when the committed file no longer matches the source.