> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.meetstream.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.meetstream.ai/_mcp/server.

# Usage & Retention

> Understand MeetStream usage and retention: what accrues bot hours, the Usage dashboard with per-bot cost breakdown, retention windows, data deletion, and the timeouts that protect your spend.

## What accrues usage

Usage accrues on **meeting time** — the time a bot spends in a call. A few consequences worth designing around:

* A bot lingering in an empty meeting keeps accruing recording minutes. The `everyone_left_timeout` and `voice_inactivity_timeout` knobs exist exactly for this — see [Automatic Leave Configuration](/guides/features/automatic-leave-configuration).
* `in_call_recording_timeout` (default 4 hours, max 5 hours) is the hard stop so a stuck recording can't run for days against your credits.
* [`bot_detection`](/guides/features/automatic-leave-configuration) auto-leaves when another notetaker is present, so you stop paying for meeting time you don't want. It has no separate charge.
* Duplicate-create replays don't double-charge: an `Idempotency-Key` replay (507) or `deduplication_key` replay (200) returns the original bot, and **only the original successful create charges credits**.

Current per-hour pricing lives on [meetstream.ai/pricing](https://meetstream.ai/pricing).

## The Usage dashboard

[app.meetstream.ai/usage](https://app.meetstream.ai/usage) shows bot hours, meetings recorded, and average meeting length, with daily/weekly/monthly granularity, CSV and PDF export, and a per-bot breakdown that includes each session's duration, metadata (API key label, bot ID), and cost:

![Usage view in the MeetStream dashboard: bot hours chart and per-bot cost breakdown](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/meetstream-ai-573402.docs.buildwithfern.com/195a51a4e8f6d07c92358d690010400662ee63fc7dc91ebd9d65882c7d5d035f/docs/assets/images/dashboard/dashboard-usage.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260814%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260814T180018Z&X-Amz-Expires=604800&X-Amz-Signature=678549c2af73e894653e723dabcbf9b053f8d792783658920f18afc4c2685002&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

Because every row carries the API key label and any `custom_attributes` you set at create time, you can attribute usage per environment, per customer, or per feature — set `custom_attributes` on `create_bot` and filter the [List Bots endpoint](/api-reference/api-endpoints/bot-endpoints/list-bots) with `custom_attr[...]` params the same way.

## Retention

Recording media is retained according to `recording_config.retention`:

```json
{
  "recording_config": {
    "retention": { "type": "timed", "hours": 24 }
  }
}
```

* Default retention is **24 hours** (CLI: `--retention-hours`). Longer retention accrues storage charges at \$0.20/GB.
* When retention expires — or you call `DELETE /bots/{bot_id}/delete` — a `data_deletion` webhook fires, the bot's status becomes `MediaExpired`, and artifact endpoints return 404/410 from then on.
* The delete response reports how many objects were removed.

If you want recordings to live in infrastructure you control (and set your own lifecycle rules), use [Custom Storage (BYO S3)](/guides/features/custom-storage-configurations) — MeetStream writes audio, video, transcripts, and metadata straight into your bucket, including S3-compatible stores like Cloudflare R2 and MinIO.

## Presigned URL lifetimes

Artifact download links are presigned and expire — re-request the endpoint for fresh links rather than storing URLs:

| Artifact                                    | Link valid for |
| ------------------------------------------- | -------------- |
| Mixed audio (`get_audio`)                   | 1 hour         |
| Video (`get_video`)                         | 10 minutes     |
| Per-participant audio/video streams         | 10 minutes     |
| Transcription downloads (`/transcriptions`) | 1 hour         |

## Next steps

* [Automatic Leave Configuration](/guides/features/automatic-leave-configuration) — the spend-protection timeouts in detail
* [Custom Storage Configurations](/guides/features/custom-storage-configurations)
* [Deduplication & Idempotency Keys](/guides/features/deduplication-idempotency-keys)