> 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.

# Workspaces

> Use MeetStream workspaces as environments: workspace-scoped API keys, per-workspace bots and usage, and team access from the dashboard.

Your MeetStream account is organized into **workspaces** — each with its own API keys, bots, webhooks, and usage. That makes workspaces the natural unit for separating environments and teams.

## What's scoped per workspace

* **API keys** — keys are scoped to the workspace they're created in ([app.meetstream.ai/api-key](https://app.meetstream.ai/api-key)); a key from one workspace can't touch another's bots. Live and test keys are visually distinct (`ms_live_sk_...` / `ms_test_sk_...`).
* **Bots and their artifacts** — the All Bots view, recordings, and transcripts.
* **Webhook endpoints** — [workspace webhook endpoints](/guides/webhooks/workspace-webhooks) deliver events for that workspace's bots.
* **Usage** — the [Usage view](/guides/features/usage-and-retention) reports per-workspace consumption, with per-bot API-key attribution.

The workspace switcher lives in the dashboard sidebar, and the **Team** page manages who has access.

## Using workspaces as environments

The pattern that keeps staging accidents out of production:

1. One workspace per environment (e.g. `Staging`, `Production`).
2. Separate API keys per workspace, injected via your secret manager — never share keys across environments.
3. Separate [workspace webhook endpoints](/guides/webhooks/workspace-webhooks) per environment, so staging events never hit production handlers.
4. Within a workspace, use [`custom_attributes`](/guides/features/custom-attributes) for finer-grained routing (per customer, per job).

## Rotating and revoking keys

Keys are created and revoked on the [API Keys page](https://app.meetstream.ai/api-key). Revocation is immediate — create the replacement key first, roll it out, then revoke the old one.

![API Keys page: workspace-scoped keys with creation dates and revoke controls](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/meetstream-ai-573402.docs.buildwithfern.com/2c58ab0296707567dd0afe9a5a6ce043c2cd13a6a422dd4732842c73cb645cae/docs/assets/images/dashboard/dashboard-api-keys.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260819%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260819T104721Z&X-Amz-Expires=604800&X-Amz-Signature=b08d0b4023d8607c152d2e82cc3d68714686c414f308124ea55ffa4d7d4abb68&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)