Call recording API#
- API v1: Base endpoint
/ocs/v2.php/apps/spreed/api/v1
: since Nextcloud 26
Start call recording#
- Required capability:
recording-v1
- Method:
POST
- Endpoint:
/recording/{token}
- Data:
Field | Type | Description |
---|---|---|
status | int | Type of call recording (see Constants - Call recording status) |
- Response:
- Status code:
200 OK
400 Bad Request
Message:status
. When the status to start is invalid.400 Bad Request
Message:config
. Need to enable the configrecording
.400 Bad Request
Message:recording
. Already have a recording in progress.400 Bad Request
Message:call
. Call is not activated.401 Unauthorized
When the participant is a guest.403 Forbidden
When the user is not a moderator/owner.412 Precondition Failed
When the lobby is active and the user is not a moderator.
- Status code:
Stop call recording#
- Required capability:
recording-v1
- Method:
DELETE
-
Endpoint:
/recording/{token}
-
Response:
- Status code:
200 OK
400 Bad Request
Message:config
. Need to enable the configrecording
.400 Bad Request
Message:call
. Call is not activated.401 Unauthorized
When the participant is a guest.403 Forbidden
When the user is not a moderator/owner.412 Precondition Failed
When the lobby is active and the user is not a moderator.
- Status code:
Store call recording#
- Required capability:
recording-v1
- Method:
POST
-
Endpoint:
/recording/{token}/store
-
Header:
field | type | Description |
---|---|---|
TALK_RECORDING_RANDOM |
string | Random string that needs to be concatenated with room token to generate the checksum using the recording_servers['secret'] . |
TALK_RECORDING_CHECKSUM |
string | The checksum generated with TALK_RECORDING_RANDOM . |
- Data:
field | type | Description |
---|---|---|
file |
string | File with the recording in a multipart/form-data request. |
owner |
string | The person that started the recording. |
- Response:
- Status code:
200 OK
400 Bad Request
Error:invalid_file
: File in block list or invalid400 Bad Request
Error:empty_file
: Invalid file extension400 Bad Request
Error:file_mimetype
: Invalid mimetype400 Bad Request
Error:file_name
. :nvalid file name400 Bad Request
Error:file_extension
: Invalid file extension400 Bad Request
Error:owner_participant
: Owner is not to be a participant of room400 Bad Request
Error:owner_invalid
: Owner invalid400 Bad Request
Error:owner_permission
: Owner have not permission to store record file401 Unauthorized
When the validation as recording server failed404 Not Found
Room not found429 Too Many Request
Brute force protection
- Status code:
Dismiss store call recording notification#
- Required capability:
recording-v1
- Method:
DELETE
- Endpoint:
/recording/{token}/notification
- Data:
field | type | Description |
---|---|---|
timestamp |
string | Timestamp in seconds and UTC time zone that notification was created. |
- Response:
- Status code:
200 OK
403 Forbidden
When the user is not a moderator/owner.404 Not Found
Room not found
- Status code:
Share store call recording#
- Required capability:
recording-v1
- Method:
POST
- Endpoint:
/recording/{token}/share-chat
- Data:
field | type | Description |
---|---|---|
timestamp |
string | Timestamp in seconds and UTC time zone that notification was created. |
fileId |
integer | File id of recording to share at the room. |
- Response:
- Status code:
200 OK
400 Bad Request
Error:file
: Shared file is invalid400 Bad Request
Error:system
: Internal system error403 Forbidden
When the user is not a moderator/owne404 Not Found
Room not found
- Status code:
Recording server requests#
- Required capability:
recording-v1
- Method:
POST
-
Endpoint:
/recording/backend
-
Header:
field | type | Description |
---|---|---|
TALK_RECORDING_RANDOM |
string | Random string that needs to be concatenated with request body to generate the checksum using the secret configured for the backend. |
TALK_RECORDING_CHECKSUM |
string | The checksum generated with TALK_RECORDING_RANDOM . |
-
Data:
- Body as a JSON encoded string; format depends on the request type, see below.
-
Response:
- Status code:
200 OK
400 Bad Request
: When the body data does not match the expected format.403 Forbidden
: When the request validation failed.
- Status code:
Started call recording#
-
Data format:
json { "type": "started", "started": { "token": "the-token-of-the-room", "status": "the-type-of-recording (see [Constants - Call recording status](constants.md#call-recording-status))", "actor": { "type": "the-type-of-the-actor", "id": "the-id-of-the-actor", }, }, }
-
Response:
- (Additional) Status code:
404 Not Found
: When the room is not found.
- (Additional) Status code:
Stopped call recording#
-
Data format:
json { "type": "stopped", "stopped": { "token": "the-token-of-the-room", "actor": { "type": "the-type-of-the-actor", "id": "the-id-of-the-actor", }, }, }
actor
is optional
-
Response:
- (Additional) Status code:
404 Not Found
: When the room is not found.
- (Additional) Status code:
Failed call recording#
-
Data format:
json { "type": "failed", "failed": { "token": "the-token-of-the-room", }, }
-
Response:
- (Additional) Status code:
404 Not Found
: When the room is not found.
- (Additional) Status code: