Skip to main content

Recording

Each recording has 3 states. Start, stop, and finish. So you will receive 3 events in the meeting observer and the retrieve recording response. You can distinguish them by the duration and links.download fields.

  1. At start, both are null
  2. At stop, duration is set, but download is null
  3. At finish, both are set
Example Observer message: start recording
{
"type": "recording_update",
"recording": {
"id": "67daad3af71a86c897058e33",
"created_at": 1742384442,
"duration": null,
"links": {
"self": "https://api.eyeson.team/recordings/67daad3af71a86c897058e33",
"download": null
},
"user": {
"id": "67daad29fe13f2745410bc88",
"name": "APIdoc",
"avatar": null,
"guest": false,
"joined_at": "2025-03-19T11:40:27.734Z"
},
"room": {
"id": "API",
"name": "API magic",
"ready": true,
"started_at": "2025-03-19T11:40:25.499Z",
"shutdown": false,
"guest_token": "epYFNNduQtISh9MkoalvmCeN"
}
}
}
Example Observer message: stop recording
{
"type": "recording_update",
"recording": {
"id": "67daad3af71a86c897058e33",
"created_at": 1742384443,
"duration": 56,
"links": {
"self": "https://api.eyeson.team/recordings/67daad3af71a86c897058e33",
"download": null
},
"user": {
"id": "67daad29fe13f2745410bc88",
"name": "APIdoc",
"avatar": null,
"guest": false,
"joined_at": "2025-03-19T11:40:27.734Z"
},
"room": {
"id": "API",
"name": "API magic",
"ready": true,
"started_at": "2025-03-19T11:40:25.499Z",
"shutdown": false,
"guest_token": "epYFNNduQtISh9MkoalvmCeN"
}
}
}
Example Observer message: finish
{
"type": "recording_update",
"recording": {
"id": "67daad3af71a86c897058e33",
"created_at": 1742384443,
"duration": 56,
"links": {
"self": "https://api.eyeson.team/recordings/67daad3af71a86c897058e33",
"download": "https://fs.eyeson.com/meetings/67daad29fe13f2745410bc87/67daad3af71a86c897058e33.webm?..."
},
"user": {
"id": "67daad29fe13f2745410bc88",
"name": "APIdoc",
"avatar": null,
"guest": false,
"joined_at": "2025-03-19T11:40:27.734Z"
},
"room": {
"id": "API",
"name": "API magic",
"ready": true,
"started_at": "2025-03-19T11:40:25.499Z",
"shutdown": false,
"guest_token": "epYFNNduQtISh9MkoalvmCeN"
}
}
}
warning

Depending on the host server it might take some time to recieve a download link - bigger files take longer.

Start recording

Recordings are temporarily saved in Eyesons cloud storage and can be downloaded from there.

POST /rooms/`ACCESS_KEY`/recording
RESPONSES 201 CREATED, 404 NOT FOUND, 405 METHOD NOT ALLOWED, 406 NOT ACCEPTABLE, 410 GONE
NO RESPONSE - only HTTP status
Req/Res Example: Start Recording
Request
curl -X POST "https://api.eyeson.team/rooms/$ACCESS_KEY/recording"
Response
no response

Stop recording

DELETE /rooms/`ACCESS_KEY`/recording
RESPONSES 200 OK, 404 NOT FOUND, 410 GONE
Req/Res Example: Stop Recording
Request
curl -X DELETE "https://api.eyeson.team/rooms/$ACCESS_KEY/recording"
Response
no response
warning

Recordings are stored for up to 14 days. Afterwards they get destroyed.

Retrieve recording

GET /recordings/`RECORDING_ID`
HEADERS Authorization
RESPONSES 200 OK, 404 NOT FOUND
Req/Res Example: Start Recording
Request
curl -H "Authorization: $API_KEY" "https://api.eyeson.team/recordings/$RECORDING_ID"
Response
{
"id": "67daad3af71a86c897058e33",
"created_at": 1742384443,
"duration": 56,
"links": {
"self": "https://api.eyeson.team/recordings/67daad3af71a86c897058e33",
"download": "https://fs.eyeson.com/meetings/67daad29fe13f2745410bc87/67daad3af71a86c897058e33.webm?..."
},
"user": {
"id": "67daad29fe13f2745410bc88",
"name": "APIdoc",
"avatar": null,
"guest": false,
"joined_at": "2025-03-19T11:40:27.734Z"
},
"room": {
"id": "API",
"name": "API magic",
"ready": false,
"started_at": "2025-03-19T11:40:25.499Z",
"shutdown": true,
"guest_token": "epYFNNduQtISh9MkoalvmCeN"
}
}
warning

Direct URLs to downloads expire after one hour. Better use the recording identifier and fetch a valid resource link on demand.

Retrieve list of all recordings of a certain room

GET /rooms/`ROOM_ID`/recordings
HEADERS Authorization
RESPONSES 200 OK, 403 UNAUTHORIZED, 404 NOT FOUND
REMOMMENDED started_at
Req/Res Example: Retrieve Recordings
Request
curl -X POST -H "Authorization: $API_KEY" -d "started_at=$(date -u -Iseconds --date="-7 hours")" "https://api.eyeson.team/$ROOM_ID/recordings" #recordings from the last 7 hours
Response
{
"0": {
"id": "67dbd91360fcb88bbf8826d5",
"created_at": "3/20/2025, 10:00:03 AM",
"duration": "7",
"links": {
"self": "https://api.eyeson.team/recordings/67dbd91360fcb88bbf8826d5",
"download": "https://fs.eyeson.com/meetings/67dbd8e2fe13f2745410bcf0/67dbd91360fcb88bbf8826d5.webm?..."
},
"user": {
"id": "67dbd8e2fe13f2745410bcf1",
"name": "Recording Tester",
"avatar": null,
"guest": "false",
"joined_at": "2025-03-20T08:59:16.676Z"
},
"room": {
"id": "67dbd8e2fe13f2745410bcef",
"name": "Recording Room",
"ready": "true",
"started_at": "2025-03-20T08:59:14.427Z",
"shutdown": "false",
"guest_token": "gQ7vErrLlIlzch4pji8fBM8L"
}
},
"1": {
"id": "67dbd901e322de094090dbf6",
"created_at": "3/20/2025, 9:59:46 AM",
"duration": "16",
"links": {
"self": "https://api.eyeson.team/recordings/67dbd901e322de094090dbf6",
"download": "https://fs.eyeson.com/meetings/67dbd8e2fe13f2745410bcf0/67dbd901e322de094090dbf6.webm?..."
},
"user": {
"id": "67dbd8e2fe13f2745410bcf1",
"name": "Recording Tester",
"avatar": null,
"guest": "false",
"joined_at": "2025-03-20T08:59:16.676Z"
},
"room": {
"id": "67dbd8e2fe13f2745410bcef",
"name": "Recording Room",
"ready": "true",
"started_at": "2025-03-20T08:59:14.427Z",
"shutdown": "false",
"guest_token": "gQ7vErrLlIlzch4pji8fBM8L"
}
},
"2": {
"id": "67dbd8edf71a86c897058e93",
"created_at": "3/20/2025, 9:59:26 AM",
"duration": "19",
"links": {
"self": "https://api.eyeson.team/recordings/67dbd8edf71a86c897058e93",
"download": "https://fs.eyeson.com/meetings/67dbd8e2fe13f2745410bcf0/67dbd8edf71a86c897058e93.webm?..."
},
"user": {
"id": "67dbd8e2fe13f2745410bcf1",
"name": "Recording Tester",
"avatar": null,
"guest": "false",
"joined_at": "2025-03-20T08:59:16.676Z"
},
"room": {
"id": "67dbd8e2fe13f2745410bcef",
"name": "Recording Room",
"ready": "true",
"started_at": "2025-03-20T08:59:14.427Z",
"shutdown": "false",
"guest_token": "gQ7vErrLlIlzch4pji8fBM8L"
}
}
}
info

Newest recordings are on top of the list.

page

Type: INTEGER (optional)
Fetch next set of recordings (limit is 25)

started_at

Type: ISO8601 Timestamp (optional)
Filter for recordings, where the room instance was running at the current timestamp.

Delete recording

DELETE /recordings/`RECORDING_ID`
HEADERS Authorization
RESPONSES 200 OK, 404 NOT FOUND
Req/Res Example: Delete Recording
Request
curl -X DELETE -H "Authorization: $API_KEY" "https://api.eyeson.team/recordings/$RECORDING_ID"
Response
No Response