# Units · Content Delivery API

> Content Delivery API reference for units: POST /units/{id}/open.

> Markdown version of https://kanorio.com/en/developers/delivery-api/units. Append `.md` to any developer docs URL for this format. Index: https://kanorio.com/llms.txt · MCP: https://app.kanorio.com/api/mcp

Base URL: `https://{site}/api/v1` · [Errors](https://kanorio.com/en/developers/basics/errors) · [Pagination](https://kanorio.com/en/developers/basics/pagination)

### Open a free-preview unit anonymously (isPreview only)

`POST /units/{id}/open`

- Stability: beta
- Authentication: none

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | — |

**Request body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `mode` | "read" \| "download" | no | — |

**Response** (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `mode` | "read" \| "download" | yes | — |
| `url` | string | yes | Signed URL of the original file (download, or playback when there is no streaming version). |
| `expiresIn` | integer | yes | Seconds. Videos: 1.5 × duration + 10 minutes, between 15 minutes and 4 hours; other files: 600. |
| `title` | string \| null | yes | — |
| `fileName` | string | yes | — |
| `mimeType` | string \| null | yes | — |
| `allowDownload` | boolean | yes | — |
| `renditions` | object[] | no | Playback sources: original, plus hls (adaptive-streaming master manifest on a signed path, play this one when present), thumbnails (progress-bar storyboard VTT) and poster for transcoded videos. Same validity as expiresIn. |
| `renditions[].kind` | "original" \| "mp4" \| "hls" \| "poster" \| "thumbnails" | yes | — |
| `renditions[].url` | string | yes | — |
| `renditions[].mimeType` | string | yes | — |
| `renditions[].width` | integer | no | — |
| `renditions[].height` | integer | no | — |
| `renditions[].bytes` | integer | no | — |
| `poster` | string \| null | no | — |
| `thumbnails` | string \| null | no | — |
| `streaming` | "none" \| "partial" \| "ready" | no | partial: only the lowest quality is in the manifest yet; ready: all qualities. |

**Errors**

| Code | Status | When |
| --- | --- | --- |
| `UNIT_NOT_FOUND` | 404 | — |
| `NOT_PREVIEW` | 403 | — |

```bash
curl -X POST "https://{site}/api/v1/units/{id}/open" \
  -H "Content-Type: application/json" \
  -d '{}'
```
