Storage and Playback Overview
Once you've started creating recordings and transcripts, you'll likely want to display them to your users.
Video Playback
The quickest way to display videos in your application is to stream recordings directly from Recall's S3 storage using the video URLs provided by Recall's API. This eliminates the need to download, store, and re-host large video files on your own infrastructure.
Direct streaming
When you retrieve a recording using the API, the response will include a temporary S3 URL in the media_shortcuts.video_mixed.data.download_url
field. These URLs point directly to the recorded content and can be used as video sources in your web application:
<video controls width="800" height="600">
<source src="https://recallai-production-bot-data.s3.amazonaws.com/..." type="video/mp4">
</video>
Handling URL expiration
The S3 URLs are signed and expire after 6 hours for security reasons. Rather than caching these URLs, you should fetch fresh ones each time a user needs to access a recording:
- When a user requests to view a recording: Make an API call to retrieve the recording data
- Extract the current
download_url
from themedia_shortcuts.video_mixed.data
field - Use this URL immediately as the video source in your HTML
This pattern ensures users always receive valid, non-expired URLs while keeping your application lightweight.
For a more detailed implementation, you can reference this sample application.
Storage Duration
By default, all media associated with a recording is retained forever. This applies for all accounts created after June 12, 2025.
Recall supports specifying custom retention for the recordings captured by a bot via the recording_config.retention
field in Create Bot request. Two retention types are supported:
- Timed
Allows you to specify a custom retention duration in hours via the requiredhours
property (e.g., hours: 72 for 3 days). The recording will expire after the specified number of hours from creation.{ "type": "timed", "hours": <NUMBER_OF_HOURS_TO_RETAIN> }
- Forever
The recording will never expire and will be retained indefinitely unless explicitly deleted.{ "type": "forever" }
Pricing
Recall provides 7 days of free recording retention. After that, additional retention is charged at:
$0.05 per hour of recording retained for 30 days
(Equivalent to $0.0000694 per hour of recording retained)
For e.g If you retain a 1-hour recording for 30 additional days, the total cost is:
$0.0000694 × 1 recording hour × 720 hours (30 days) = $0.05
If you have any questions regarding pricing, please reach out to us via [email protected] or through Slack for more information.
Media Expiration
Recording data can be deleted at any point by calling Delete Bot Media or Delete Recording. After data has been deleted, it is permanently removed from Recall servers and cannot be recovered.
Custom metadata and the meeting URL are not deleted upon media expiration/deletion for a bot.
Recording Media
Media refers to:
- Recording
- Transcript
- Speaker timeline
- Participant metadata (who joined, left, timestamps)
- Meeting metadata (e.g. Meeting title)
- Video files, audio files, and any other media
- Bot screenshots
- Debug data
Note: Deleting bot media through the API does not delete logs. Log files will be automatically deleted after the 7 day retention period.
The media expiration date for a given recording can be found in the expires_at
field of the Recording:
{
"id": "a5437136-4b69-429a-9e0c-cd388fd8fee6",
"expires_at": "2024-12-27T00:07:47.409813Z",
...
}
The recording.deleted
Webhook
recording.deleted
WebhookWhen a recording reaches its expiration date and is deleted, you will receive a recording.deleted
Status Change Webhook to notify you of this.
Security
Zero Data Retention
If you have strict data privacy concerns, you may want to ensure that no recording data is ever stored on Recall's servers at any point. You can accomplish this by setting the recording_config.retention
field to be null
in your Create Bot request. This will ensure that no data is retained at any point.
When zero data retention is configured, the only way to access meeting data will be to stream it in real time while the meeting is occurring.
Note that retaining zero data will make debugging any issues or failures associated with the bot more difficult since no backup data is stored in Recall.
Encryption
Bot data is encrypted at rest in our database for additional security. For additional information on how data is secured, please visit our security portal.
Transcription Partners
Gladia
For customers using Gladia through Recall's account (and not their own Gladia API key), there is zero-data retention on Gladia's servers.
Updated 2 days ago