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

# POST /practice-simulation-attempts/{id}/recording-chunks

`POST /practice-simulation-attempts/{id}/recording-chunks`

## 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-chunks`
- Auth: none declared

Stores one chunk of the attempt's replay recording (rrweb events). The body may be sent with Content-Encoding: gzip. Re-sending a seq replaces that chunk. Only the person doing the attempt may upload, while it runs and for two minutes after it ends.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `seq` integer, required
  - `events` PracticeRecordingEvent[], required
    - `timestamp` number, required
    - `type` number, required

## Response `204`

The chunk was stored

## Other responses

- `400`: Invalid request
- `403`: Forbidden
- `404`: Not found
- `409`: Not allowed in the current state
- `413`: The chunk is over 2 MB (code "chunk_too_large"), or would take the recording over 50 MB (code "recording_too_large")
- `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-chunks/post.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)
