Recordings

Recordings capture user flows from the Aiqaramba Recorder browser extension. Each recording contains rrweb DOM events (clicks, typing, scrolling, navigation) and optionally tab video with audio. Recordings can be converted into tests for automated replay.

GET /api/v1/recordings

List recordings

Parameters

ParameterTypeInRequiredDescription
limitintegerqueryNoMaximum recordings to return.
cursoruuidqueryNoContinue below this recording ID.
project_iduuidqueryNoRestrict recordings to one project.
statusstringqueryNoRestrict recordings to one processing status.
source_typestringqueryNoRestrict recordings to one source.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/recordings" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Tenant recordings.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
recordingsobject[]
recordings[].iduuid
recordings[].tenant_iduuid
recordings[].project_iduuid
recordings[].user_iduuid
recordings[].namestring
recordings[].source_typestringValues: extension, upload, posthog.
recordings[].statusstringValues: uploading, processing, ready, failed.
recordings[].started_atdate-time
recordings[].ended_atdate-time
recordings[].duration_msinteger
recordings[].event_countinteger
recordings[].has_videoboolean
recordings[].has_audioboolean
recordings[].video_mime_typestring
recordings[].video_bytesinteger
recordings[].navigationsobject[]
recordings[].uploaded_video_iduuid
recordings[].test_iduuid
recordings[].draft_test_plan_iduuid
recordings[].error_messagestring
recordings[].external_refstring
recordings[].agent_iduuid
recordings[].created_atdate-time
recordings[].updated_atdate-time
next_cursoruuid
POST /api/v1/recordings

Create a recording

Stores rrweb events and returns a direct video upload URL when video is expected.

Request Body (application/json)

FieldTypeRequiredDescription
namestringNoRecording name
started_atdate-timeYesWhen the recording started (ISO 8601)
ended_atdate-timeNoWhen the recording ended
duration_msintegerNoRecording duration in milliseconds
event_countintegerNoNumber of rrweb events captured
eventsjsonYesArray of rrweb event objects
navigationsjsonNoArray of navigation events with url and timestamp_ms
project_iduuidNoAssociate recording with a project
has_videobooleanNoWhether video will be uploaded separately
has_audiobooleanNoWhether the video includes audio
audio_narrationstringNoBase64 data URL containing microphone narration.

Example Request

curl
curl -X POST "http://app.aiqaramba.com/api/v1/recordings" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "started_at": "2026-01-01T12:00:00Z",
    "events": {}
  }'

Status Codes

CodeDescription
201Recording created.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
500The server could not complete the request.
507The tenant does not have enough storage quota.

Response Fields (201)

FieldTypeDescription
iduuid
statusstringValues: uploading, processing.
video_upload_urluri
GET /api/v1/recordings/{id}

Get a recording

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesRecording ID.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/recordings/<id>" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Recording found.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
iduuid
tenant_iduuid
project_iduuid
user_iduuid
namestring
source_typestringValues: extension, upload, posthog.
statusstringValues: uploading, processing, ready, failed.
started_atdate-time
ended_atdate-time
duration_msinteger
event_countinteger
has_videoboolean
has_audioboolean
video_mime_typestring
video_bytesinteger
navigationsobject[]
uploaded_video_iduuid
test_iduuid
draft_test_plan_iduuid
error_messagestring
external_refstring
agent_iduuid
created_atdate-time
updated_atdate-time
DELETE /api/v1/recordings/{id}

Delete a recording

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesRecording ID.

Example Request

curl
curl -X DELETE "http://app.aiqaramba.com/api/v1/recordings/<id>" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
204Recording deleted.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.
GET /api/v1/recordings/{id}/events

Stream recording events

Streams the decompressed rrweb JSON event array.

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesRecording ID.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/recordings/<id>/events" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Decompressed rrweb event JSON.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.
POST /api/v1/recordings/{id}/reproduce

Reproduce a recording

Runs an existing generated test or queues test generation from stored events.

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesRecording ID.

Request Body (application/json)

FieldTypeRequiredDescription
finding_iduuidNoFinding to ground the generated test in; the test prompt then ends with a Verify: line asserting the behavior the finding reports as broken

Example Request

curl
curl -X POST "http://app.aiqaramba.com/api/v1/recordings/<id>/reproduce" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "finding_id": "<uuid>"
  }'

Status Codes

CodeDescription
202Reproduction queued.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
402The tenant has exhausted its run allowance.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (202)

FieldTypeDescription
queuedboolean
recording_iduuid
test_iduuid
agent_iduuid
POST /api/v1/recordings/{id}/video-complete

Confirm recording video upload

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesRecording ID.
skip_videobooleanqueryNoProcess events without a video object.

Example Request

curl
curl -X POST "http://app.aiqaramba.com/api/v1/recordings/<id>/video-complete" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Processing started.
401Authentication is missing or invalid.
404The requested resource does not exist.
409The request conflicts with the current resource state.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
statusstringValues: processing.