# Media Service

## Upload a video file

Creates a new video upload. Returns an upload URL where the video file should be uploaded via PUT request.

**Upload Process:**

1. Call this endpoint to create a video upload and receive an `upload_url` and `id`
2. Upload your video file to the `upload_url` using a PUT request with the video file (ReadStream) as the body

**Note:** The `upload_url` is a temporary signed URL that expires after a short period.

## Request

#### Request Body

- **field_id**  
  string  
  Field ID within the form where this media belongs

- **form_id**  
  string  
  Unique ID for the form. Find in your form URL. For example, in the URL "https://mysite.typeform.com/to/u6nXL7" the form_id is `u6nXL7`.

- **language**  
  string  
  Language code for the media content (ISO 639-1 format). Used for automatic transcription and captioning.

## Responses

#### Status

- **201**  
  Video upload created successfully

#### Schema

- **id**  
  string  
  Unique identifier for the created media file

- **upload_url**  
  string  
  Temporary signed URL where the media file should be uploaded using a PUT request. This URL expires after a short period (typically 24 hours).

#### Example

```json
{
  "id": "video_abc123def456",
  "upload_url": "https://storage.googleapis.com/mux-input-prod/signed-upload-url?signature=xyz..."
}
```

#### Status

- **400**  
  Bad request - invalid input

#### Schema

- **code**  
  string  
  Error code identifying the type of error

- **details**  
  object  
  Additional error details specific to the error type

- **message**  
  string  
  Human-readable error message
