---
url: /api/kiln/interfaces/Recording.md
---
[Kiln API](../../index.md) / [kiln](../index.md) / Recording

# Interface: Recording

A recorded session. JSON; save it under recordings/ and replay it with `replay()` or `kiln replay`.

## Properties

| Property | Type | Description |
| ------ | ------ | ------ |
|  `kiln` | `"recording"` | - |
|  `version` | `1` | - |
|  `config` | `object` | The loop config the session ran with. Replays build the app with the same values. |
| `config.seed` | `number` | - |
| `config.fixedHz` | `number` | - |
| `config.maxFrameDt` | `number` | - |
| `config.maxFixedSteps` | `number` | - |
| `config.mode` | `"2d"` | `"3d"` | - |
|  `frames` | `number` | Frames recorded. Frame 1 is the first frame after Startup. |
|  `dt` | `number`\[] | Each frame's delta in seconds (clamped by maxFrameDt), dt\[0] for frame 1. |
|  `exact` | `number`\[] | Frames that ran exactly one fixed step (the debug panel's "Step 1 frame"). |
|  `input` | [`ScriptEvent`](../type-aliases/ScriptEvent.md)\[] | What the game saw from the input plugin, as an input script relative to boot. |
|  `start?` | `Record`<`string`, `unknown`> | Outside state the session started with, by plugin ('save': the game's stored saves and settings). |
|  `channels` | [`ChannelEvent`](ChannelEvent.md)\[] | Side-channel events: 'ui-click' (DOM HUD buttons), 'asset' (a load finished). |
|  `checkEvery` | `number` | Checkpoint spacing in frames and rounding (decimals) for the state hashes. |
|  `checkPrecision` | `number` | - |
|  `checks` | `object`\[] | State hash (entities and Rng) after the frame's Late phase, every checkEvery frames. |
|  `final?` | [`Snapshot`](Snapshot.md) | Entities and resources when the recording was taken (precision 4). |
|  `error?` | `object` | The error that stopped the session, if one did. |
| `error.frame` | `number` | - |
| `error.message` | `string` | - |
| `error.code?` | `string` | - |
|  `notes` | `string`\[] | Things a reader should know (hot swaps mid-session). |
|  `recordedAt?` | `string` | - |
