---
deprecated: true
search:
  tags:
    - Videos
    - PUT
seo:
  description: >-
    Creates a new video record and returns a presigned URL for… Reference for
    the PUT /api/v1/{team_slug}/{app_slug}/videos endpoint in the Management
    API.
sidebar:
  label: Generate video upload URL
  badge: PUT
title: Generate video upload URL
type: openapi-operation
---
Creates a new video record and returns a presigned URL for uploading the video file to R2 storage. The URL expires after 20 minutes.
Deprecated: use POST /api/v2/&#123;team_slug&#125;/&#123;app_slug&#125;/dam/videos instead.

`PUT /api/v1/{team_slug}/{app_slug}/videos`

**Deprecated.**

**Request body** (`application/json`, required)

Video payload

- `content_type` (string, required)
- `description` (string)
- `filename` (string, required)
- `size_bytes` (integer, required)
- `title` (string, required)
- `video_variants` (internal_pkg_webserver_v1.VideoVariant[])

Request body example:

```json
{
  "content_type": "string",
  "description": "string",
  "filename": "string",
  "size_bytes": 0,
  "title": "string",
  "video_variants": [
    {
      "format": "string",
      "height": 0,
      "width": 0
    }
  ]
}
```

**Responses**

- `200` — Presigned URL generated successfully
- `400` — Invalid request
- `401` — Unauthorized access
- `500` — Internal server error

Response example, 200:

```json
{
  "data": {
    "constraints": {
      "allowed_types": [
        "string"
      ],
      "max_size_bytes": 0
    },
    "expires_at": 0,
    "id": "string",
    "path": "string",
    "upload_url": "string"
  },
  "details": [
    "string"
  ],
  "success": true
}
```
