POST
/
api
/
recording
/
send
Send Recording
curl --request POST \
  --url https://app.replay.sale/api/recording/send \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "userUniqueIdentifier": "user-123",
  "userName": "John Doe",
  "recordingPresignedUrl": "https://storage.example.com/audio.mp3?signature=...",
  "storeRecording": true
}'
{
  "status": "accepted"
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
userUniqueIdentifier
string
required

Unique identifier for the external user. Used for user resolution:

Existing User: If a user with the same userUniqueIdentifier exists for the company, their record is used New User: If no matching user exists, an Integration user is automatically created with the provided userName and userUniqueIdentifier, associated with the company's Integration team

Minimum length: 1
Example:

"user-123"

userName
string
required

Name of the user who created the recording. Used when creating new Integration users if the userUniqueIdentifier doesn't exist.

Minimum length: 1
Example:

"John Doe"

recordingPresignedUrl
string<uri>
required

Presigned URL used to transcribe the audio/video file. If permanent, Replay will use this URL to allow the user to listen to audio playback when viewing their analysis. If temporary, Replay will only use this for audio transcription.

Example:

"https://storage.example.com/audio.mp3?signature=..."

storeRecording
boolean
required

Whether to store the audio file in Replay's GCS storage.

true: Downloads the file and stores it in GCS before processing

  • File remains accessible for future playback
  • Original presigned URL can expire after initial download
  • Recommended for temporary presigned URLs

false: Sends the presigned URL directly to Deepgram without storing

  • No file stored in Replay's infrastructure
  • Presigned URL must remain valid for entire processing duration
  • ⚠️ Audio playback depends on URL permanence (permanent URLs work, temporary URLs won't have playback)
Example:

true

Response

Recording accepted for processing. The API returns immediately with a 200 status code and processes the recording asynchronously in the background. You will receive webhook notifications when processing completes or fails (if webhook URL is configured).

status
enum<string>
required

Indicates the recording was accepted for processing

Available options:
accepted
Example:

"accepted"