# Open video

> **TL;DR** — For videos with no rights to protect, such as short fitness clips, Wandura offers a lighter path: your server lists videos with an app's key, and your app plays plain MP4 links with any standard player. No tickets, no Player SDK licence, no encryption, and no app code to identify the app. Links live **1 hour**; refresh your list every **45 minutes**.

> **Available once your organisation's space is set up.** Larger fitness partners can get their own space instead, with HLS for clips of 30 seconds or more: [Your own video space](https://docs.wandura.ai/v1/developers/concepts/own-space).

> **Warning:** Do not use this path for drama films or anything with rights to protect. Anyone holding an open video link can play or download it until it expires.

## When to use it
| Open video | Standard model |
|---|---|
| Workout, how-to or demo clips with no rights to protect | Drama films and series |
| Content you are happy to see shared | Anything sold, licensed per film or behind a paywall |

All models compared: [Architecture](https://docs.wandura.ai/v1/developers/architecture#compare-the-two-models).

## How it works
```mermaid
sequenceDiagram
  participant App as Your app
  participant Srv as Your server
  participant W as Wandura API
  participant CDN as Video CDN
  Srv->>W: GET /api/delivery/v1/videos (app key, videos:read)
  W-->>Srv: a page of videos with signed MP4 links
  Srv-->>App: links from your server's cache
  App->>CDN: play the MP4 link directly
  CDN-->>App: video
```

1. **Register each app and create its key.** On partner.wandura.ai → **Developers** → **Apps**, add each app (name, iOS bundle ID, Android package name), then create a key with **Stream open video (fitness…)** bound to that app. One key per app: the app's identity is inside the signature of every link, and data usage is attributed by it.
2. **List** with `GET /api/delivery/v1/videos`, walking every page, on your server.
3. **Play** each link exactly as received, with AVPlayer, ExoPlayer or an HTML `<video>`.
4. **Refresh** before `refresh_before` (45 minutes after the response). Apps take links from your server when they need them and never store them.

The sweep, with code that never replaces your list with a partial one: [Open video sync](https://docs.wandura.ai/v1/developers/guides/open-video-sync).

## The two endpoints
| Endpoint | Use it to |
|---|---|
| [`GET /api/delivery/v1/videos`](https://docs.wandura.ai/v1/developers/reference/videos-list) | Get the whole catalogue, page by page. The main one. |
| [`GET /api/delivery/v1/videos/{id}`](https://docs.wandura.ai/v1/developers/reference/videos-get) | Get a fresh link for one video you already know. Same row shape. |

**Recommended:** list on your server, cache, serve links from the cache. If you call the single-video endpoint once per play instead, your playback depends on Wandura being reachable at that moment (a cached list keeps playing for 45 minutes), and your request count grows with your audience. Wandura blocks neither: the single-video endpoint has its own rate limit, so heavy use of it never throttles the list. Limits: [Canonical API behaviour](https://docs.wandura.ai/v1/developers/reference/behaviour#rate-limits).

## Rules for links
1. **Links live 1 hour; refresh by `refresh_before`.** Do not compute your own margin from `expires_at`.
2. **The app never stores links.** A stored link fails later with `403`, visible only on the viewer's device.
3. **Never edit a URL**, the query string included: the signature covers it.
4. **One key per app.** Links fetched with app A's key and played by app B are attributed to A, and that cannot be corrected.
5. **A link is permission to watch, not ownership.** Do not publish links.
6. **`429` and `503` mean retry**, not "wrong".

One hour is Wandura's safety choice, not a technical limit; if a 45-minute refresh is awkward for you, say so.

## What changes compared with films
- No tickets, no device values, no Player SDK licence.
- Usage is reported per app from the link itself; Wandura does not count individual plays. Record views in your app if you need them.
- Access is per organisation: your keys see only the collections granted to you, once published.
- Revoking one app's key stops new lists for that app only; links already handed out expire within the hour.

## Related
- [Open video sync](https://docs.wandura.ai/v1/developers/guides/open-video-sync)
- [List open videos](https://docs.wandura.ai/v1/developers/reference/videos-list), [Get one open video](https://docs.wandura.ai/v1/developers/reference/videos-get)
