Skip to content
Start here

Start recording participant audio tracks

client.RealtimeKit.Recordings.StartTrackRecording(ctx, appID, params) (*RecordingStartTrackRecordingResponse, error)
POST/accounts/{account_id}/realtime/kit/{app_id}/recordings/track

Starts track recording for a meeting. Track recording currently records separate participant audio tracks as WebM files in the RealtimeKit bucket. Video track recording is in development. For more information, refer to Track recording.

Security

API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
Accepted Permissions (at least one required)
Realtime AdminRealtime
ParametersExpand Collapse
appID string

The app identifier tag.

maxLength32
params RecordingStartTrackRecordingParams
AccountID param.Field[string]

Path param: The account identifier tag.

maxLength32
MeetingID param.Field[string]

Body param: ID of the meeting to record.

formatuuid
Layers param.Field[map[string, RecordingStartTrackRecordingParamsLayers]]Optional

Body param: Optional audio layer configuration. If omitted, RealtimeKit records all participant audio using the default file name prefix.

FileNamePrefix stringOptional

A file name prefix to apply for files generated from this layer

MediaKind RecordingStartTrackRecordingParamsLayersMediaKindOptional

Media kind to record. Track recording currently supports audio only.

UserIDs param.Field[[]string]Optional

Body param: Optional list of participant user IDs to record. Selective track recording (user_ids) is in early beta contact support to use this feature.

ReturnsExpand Collapse
type RecordingStartTrackRecordingResponse struct{…}
Success bool

Success status of the operation

Data RecordingStartTrackRecordingResponseDataOptional

Data returned by the operation

Recording RecordingStartTrackRecordingResponseDataRecording
ID string

ID of the recording

formatuuid
AudioDownloadURL string

If the audio_config is passed, the URL for downloading the audio recording is returned.

formaturi
DownloadURL string

URL where the recording can be downloaded.

formaturi
DownloadURLExpiry Time

Timestamp when the download URL expires.

formatdate-time
FileSize float64

File size of the recording, in bytes.

InvokedTime Time

Timestamp when this recording was invoked.

formatdate-time
OutputFileName string

File name of the recording.

SessionID string

ID of the meeting session this recording is for.

formatuuid
StartedTime Time

Timestamp when this recording actually started after being invoked. Usually a few seconds after invoked_time.

formatdate-time
Status RecordingStartTrackRecordingResponseDataRecordingStatus

Current status of the recording.

One of the following:
const RecordingStartTrackRecordingResponseDataRecordingStatusInvoked RecordingStartTrackRecordingResponseDataRecordingStatus = "INVOKED"
const RecordingStartTrackRecordingResponseDataRecordingStatusRecording RecordingStartTrackRecordingResponseDataRecordingStatus = "RECORDING"
const RecordingStartTrackRecordingResponseDataRecordingStatusUploading RecordingStartTrackRecordingResponseDataRecordingStatus = "UPLOADING"
const RecordingStartTrackRecordingResponseDataRecordingStatusUploaded RecordingStartTrackRecordingResponseDataRecordingStatus = "UPLOADED"
const RecordingStartTrackRecordingResponseDataRecordingStatusErrored RecordingStartTrackRecordingResponseDataRecordingStatus = "ERRORED"
const RecordingStartTrackRecordingResponseDataRecordingStatusPaused RecordingStartTrackRecordingResponseDataRecordingStatus = "PAUSED"
StoppedTime Time

Timestamp when this recording was stopped. Optional; is present only when the recording has actually been stopped.

formatdate-time
RecordingDuration int64Optional

Total recording time in seconds.

Start recording participant audio tracks

package main

import (
  "context"
  "fmt"

  "github.com/stainless-sdks/cloudflare-go"
  "github.com/stainless-sdks/cloudflare-go/option"
  "github.com/stainless-sdks/cloudflare-go/realtime_kit"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  response, err := client.RealtimeKit.Recordings.StartTrackRecording(
    context.TODO(),
    "app_id",
    realtime_kit.RecordingStartTrackRecordingParams{
      AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
      MeetingID: cloudflare.F("97440c6a-140b-40a9-9499-b23fd7a3868a"),
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response.Success)
}
{
  "success": true,
  "data": {
    "recording": {
      "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "audio_download_url": "https://example.com",
      "download_url": "https://example.com",
      "download_url_expiry": "2019-12-27T18:11:19.117Z",
      "file_size": 0,
      "invoked_time": "2019-12-27T18:11:19.117Z",
      "output_file_name": "output_file_name",
      "session_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "started_time": "2019-12-27T18:11:19.117Z",
      "status": "INVOKED",
      "stopped_time": "2019-12-27T18:11:19.117Z",
      "recording_duration": 0
    }
  }
}
Returns Examples
{
  "success": true,
  "data": {
    "recording": {
      "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "audio_download_url": "https://example.com",
      "download_url": "https://example.com",
      "download_url_expiry": "2019-12-27T18:11:19.117Z",
      "file_size": 0,
      "invoked_time": "2019-12-27T18:11:19.117Z",
      "output_file_name": "output_file_name",
      "session_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "started_time": "2019-12-27T18:11:19.117Z",
      "status": "INVOKED",
      "stopped_time": "2019-12-27T18:11:19.117Z",
      "recording_duration": 0
    }
  }
}