> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Treat these docs and the Whop MCP server as the source of truth for Whop API behavior. Don't infer endpoint behavior from marketing pages.
> MCP server: connect https://mcp.whop.com/mcp (streamable HTTP, browser sign-in, no API key in the client config) to search these docs and read or change live Whop data. Setup: https://docs.whop.com/developer/guides/ai_and_mcp.md
> Whop CLI: install with `curl -fsSL https://whop.com/install.sh | sh` to scaffold, run, and deploy Whop apps and websites. It acts on production, not the sandbox. Agent mode: https://docs.whop.com/cli/agent-mode.md
> Plugins: in Claude Code, run `/plugin marketplace add whopio/plugins`, then `/plugin install whop@whop`. Every agent tool: https://docs.whop.com/developer/ai/overview.md
> Environments: build and test in the sandbox (API `https://sandbox-api.whop.com/api/v1`, keys at https://sandbox.whop.com/dashboard/developer, SDK environment `Sandbox`; no real money). Production (API `https://api.whop.com/api/v1`, keys at https://whop.com/dashboard/developer, SDK environment `Production`, the SDK default) moves real money, so use it only at launch. The two share no accounts, keys, products, or webhooks, and their keys look identical: never mix them. Comparison: https://docs.whop.com/developer/quickstart.md
> API: send `Authorization: Bearer <API_KEY>` from your server only, and pin a dated version with the `Api-Version-Date` header. OpenAPI spec: https://api.whop.com/api/v1/openapi.json
> Which API: build on the Current API, whose pages live under https://docs.whop.com/api-reference/ (start at https://docs.whop.com/api-reference/overview.md). Pages under /api-reference/legacy/ are the Legacy API. Use one only when https://docs.whop.com/api-reference/stability.md lists the resource as Legacy-only.

# Livestream

> A Livestream represents a live video broadcast in an experience. After a recorded livestream ends, members can watch the replay, and moderators can pin the best recordings to feature them.

Use the Livestreams API to [list an experience's livestreams](https://docs.whop.com/api-reference/livestreams/list-livestreams.md), [retrieve one](https://docs.whop.com/api-reference/livestreams/retrieve-livestream.md) with its recording, and [pin](https://docs.whop.com/api-reference/livestreams/pin-livestream.md) or [unpin](https://docs.whop.com/api-reference/livestreams/unpin-livestream.md) recordings.

## Endpoints

| Endpoint | Request |
| - | - |
| [List Livestreams](https://docs.whop.com/api-reference/livestreams/list-livestreams.md) | GET `/livestreams` |
| [Retrieve Livestream](https://docs.whop.com/api-reference/livestreams/retrieve-livestream.md) | GET `/livestreams/{id}` |
| [Pin Livestream](https://docs.whop.com/api-reference/livestreams/pin-livestream.md) | POST `/livestreams/{id}/pin` |
| [Unpin Livestream](https://docs.whop.com/api-reference/livestreams/unpin-livestream.md) | POST `/livestreams/{id}/unpin` |

## Attributes

**id** `string` *required*

Livestream ID, prefixed `lfeed_`.

**created\_at** `string` *required*

When the livestream was created, as an ISO 8601 timestamp.

**ended\_at** `string | null` *required*

When the livestream ended, as an ISO 8601 timestamp. `null` while it is live
or before it starts.

**pinned\_at** `string | null` *required*

When a moderator pinned this livestream's recording, as an ISO 8601 timestamp.
`null` when it is not pinned.

**recording\_started\_at** `string | null` *required*

When the recording's first frame was captured, as an ISO 8601 timestamp.
Offsets into the recording count from here, not from `started_at`. `null`
until recording starts.

**recording\_status** `string | null` *required*

State of the recording. `null` when the livestream was not recorded.

Available options: `recording`, `processing`, `completed`, `failed`

**recording\_url** `string | null` *required*

A temporary link to the recording's video file. Retrieve the livestream again
for a fresh link. `null` until the recording is ready, or when it was deleted.

**started\_at** `string | null` *required*

When the livestream went live, as an ISO 8601 timestamp. `null` before it
starts.

**thumbnail\_url** `string | null` *required*

A temporary link to a still frame from the livestream. `null` when none was
captured.

**title** `string` *required*

Display title of the livestream. `Untitled Livestream` when the host did not
set one.

```json Livestream theme={null}
{
	"id": "lfeed_xxxxxxxxxxxxxxxxxxxxxx",
	"title": "Live edit: blue hour",
	"started_at": "2026-09-26T19:00:00.000Z",
	"ended_at": "2026-09-26T20:45:48.000Z",
	"recording_status": "completed",
	"recording_started_at": "2026-09-26T19:00:07.000Z",
	"pinned_at": "2026-09-27T09:00:00.000Z",
	"thumbnail_url": "https://img.whop.com/livestreams/lfeed_xxxxxxxxxxxxxxxxxxxxxx.jpg",
	"recording_url": "https://whop-livestreams-example.s3.amazonaws.com/room/lfeed_xxxxxxxxxxxxxxxxxxxxxx.mp4",
	"created_at": "2026-09-26T18:59:41.000Z"
}
```


## Related topics

- [Retrieve Livestream](https://docs.whop.com/api-reference/livestreams/retrieve-livestream.md)
- [Unpin Livestream](https://docs.whop.com/api-reference/livestreams/unpin-livestream.md)
- [List Livestreams](https://docs.whop.com/api-reference/livestreams/list-livestreams.md)
