# Register an uploaded video
`POST https://octopus.livepush.io/streams/{stream_id}/videos`
Registers an object already written to storage as a video in the library. This is the final step of an upload: request a URL, PUT the bytes, then call this.

Requires a token with the `streams.videos.write` scope.
- **Tag:** Videos
- **Operation ID:** `registerUploadedVideo`
- **Authentication:** Bearer token required
- **Docs:** https://developers.livepush.io/videos/register-an-uploaded-video/

### Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `stream_id` | string | yes | Unique identifier of the stream. |


### Request body

`application/json` (required)

- `id` (string) **required** — Video identifier allocated when the upload URL was created.
- `Key` (string) **required** — Object key in the storage bucket.
- `label` (string) **required**
- `uploadName` (string) **required** — Original filename.
- `uploadUrl` (string) **required**
- `zone` (string) **required** — Storage zone the object was written to.
- `size` (integer) **required** — Size in bytes.
- `mediaInfo` (VideoItemMediaInfo)
  - `hasAudioTrack` (boolean)
  - `duration` (number)
  - `width` (integer)
  - `height` (integer)
  - `fps` (number)
  - `codecs` (VideoItemMediaInfoCodec[])
    - `type` (VideoCodecType)
    - `codec` (string)
  - `tracks` (object[])
- `encoding_preset` (string) — Encoding preset to transcode with.


```json
{
  "id": "vd_xxxxxxxxxxxx",
  "Key": "string",
  "label": "Sunday service — 12 Jan",
  "uploadName": "service-12-jan.mp4",
  "uploadUrl": "string",
  "zone": "eu-central",
  "size": 734003200,
  "mediaInfo": {
    "hasAudioTrack": false,
    "duration": 0,
    "width": 0,
    "height": 0,
    "fps": 0,
    "codecs": [
      {
        "type": "video",
        "codec": "string"
      }
    ],
    "tracks": [
      {}
    ]
  },
  "encoding_preset": "string"
}
```


### Example request

```bash
curl -X POST 'https://octopus.livepush.io/streams/st_xxxxxxxxxxxxx/videos' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "vd_xxxxxxxxxxxx",
    "Key": "string",
    "label": "Sunday service — 12 Jan",
    "uploadName": "service-12-jan.mp4",
    "uploadUrl": "string",
    "zone": "eu-central",
    "size": 734003200,
    "mediaInfo": {
      "hasAudioTrack": false,
      "duration": 0,
      "width": 0,
      "height": 0,
      "fps": 0,
      "codecs": [
        {
          "type": "video",
          "codec": "string"
        }
      ],
      "tracks": [
        {}
      ]
    },
    "encoding_preset": "string"
  }'
```


### Responses


#### 200 — Register an uploaded video.

- `id` (string)
- `label` (string)
- `uploadName` (string)
- `size` (number)
- `mediaInfo` (VideoItemMediaInfo)
  - `hasAudioTrack` (boolean)
  - `duration` (number)
  - `width` (integer)
  - `height` (integer)
  - `fps` (number)
  - `codecs` (VideoItemMediaInfoCodec[])
    - `type` (VideoCodecType)
    - `codec` (string)
  - `tracks` (object[])
- `resourceGroup` (string) — ID of the video folder this video sits in, or absent when it is at the top level of the library. Named resourceGroup for compatibility — see VideoFolder.
- `zone` (string)
- `description` (string)
- `createdAt` (string<date-time>)
- `isDisabled` (boolean)
- `tags` (string[])
- `mediaInfoEncoded` (VideoItemMediaInfo)
  - `hasAudioTrack` (boolean)
  - `duration` (number)
  - `width` (integer)
  - `height` (integer)
  - `fps` (number)
  - `codecs` (VideoItemMediaInfoCodec[])
    - `type` (VideoCodecType)
    - `codec` (string)
  - `tracks` (object[])


```json
{
  "id": "vd_xxxxxxxxx",
  "label": "string",
  "uploadName": "string",
  "size": 0,
  "mediaInfo": {
    "hasAudioTrack": false,
    "duration": 0,
    "width": 0,
    "height": 0,
    "fps": 0,
    "codecs": [
      {
        "type": "video",
        "codec": "string"
      }
    ],
    "tracks": [
      {}
    ]
  },
  "resourceGroup": "grp_xxxxxxxxxxxx",
  "zone": "string",
  "description": "string",
  "createdAt": "2026-01-31T09:00:00.000Z",
  "isDisabled": false,
  "tags": [
    "string"
  ],
  "mediaInfoEncoded": {
    "hasAudioTrack": false,
    "duration": 0,
    "width": 0,
    "height": 0,
    "fps": 0,
    "codecs": [
      {
        "type": "video",
        "codec": "string"
      }
    ],
    "tracks": [
      {}
    ]
  }
}
```


#### 401 — Response


#### 404 — Not found for this account.

