---
title: "GET /practice-simulation-attempts/{id}/recording"
method: GET
path: "/practice-simulation-attempts/{id}/recording"
tags: ["Practice simulations"]
---

# GET /practice-simulation-attempts/{id}/recording

`GET /practice-simulation-attempts/{id}/recording`

## Request

- Base URL: `https://api.rulebase.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.rulebase.co/practice-simulation-attempts/{id}/recording`
- Auth: none declared

The attempt's replay recording as signed chunk URLs (valid 15 minutes) in seq order. Each URL returns that chunk's events as a JSON array. Recordings are kept 90 days.

## Path parameters

- `id` string, uuid, required

## Response `200`

The recording

- PracticeAttemptRecording
  - `status` 'none' | 'available', required
  - `started_at` number, nullable, required
  - `ended_at` number, nullable, required
  - `duration_ms` number, nullable, required
  - `chunks` object[], required
    - `seq` integer, required
    - `url` string, required
    - `first_timestamp` number, required
    - `last_timestamp` number, required
    - `event_count` integer, required

## Other responses

- `400`: Invalid request
- `403`: Forbidden
- `404`: Not found
- `409`: Not allowed in the current state
- `502`: The practice world failed
- `503`: Practice simulations are unavailable

## Changes

- **2026-10-19** `2fa4f4a32040`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rulebase/apis/rulebase-api2/changes/practice-simulation-attempts/:id/recording/get.md)

---

[API](https://skmtc.dev/rulebase/apis/rulebase-api2.md) · [All operations](https://skmtc.dev/rulebase/apis/rulebase-api2/llms.txt) · [OpenAPI document](https://skmtc.dev/rulebase/apis/rulebase-api2/revisions/eb27ab823c55?raw)
