---
title: "Upload one phone video with a single-use QR capability"
description: "Authorization: Bearer contains the QR capability. The computer reviews and prepares the video; this endpoint never sends messages."
---

> Documentation Index
> Fetch the complete documentation index at: https://developer.channelautomations.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Channel Automation API › LiveChat

`POST /api/livechat/video/phone-handoffs/upload`

Authorization: Bearer contains the QR capability. The computer reviews and prepares the video; this endpoint never sends messages.

## Authentication

- `BearerAuth`, http, header `Authorization`, format `JWT`

## Request body

_Required._

- `video` (`post/api/livechat/video/phone-handoffs/upload.video`; string, required)
  - format `binary`

## Example request

```text
{
  "video": "<video>"
}
```

## Code samples

### cURL

```bash
curl --request POST \
  --url https://api.channelautomation.com/api/livechat/video/phone-handoffs/upload \
  --header 'Authorization: Bearer <token>' \
  --form 'video=@<video>;type=application/octet-stream'
```

### TypeScript

```typescript
import { readFile } from 'node:fs/promises';

const formData = new FormData();
formData.append('video', new Blob([await readFile('<video>')]), '<video>');

const url = 'https://api.channelautomation.com/api/livechat/video/phone-handoffs/upload';
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}, body: formData};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.channelautomation.com/api/livechat/video/phone-handoffs/upload"

files = [
    ("video", ("<video>", open("<video>", "rb"), "application/octet-stream"))
]
headers = {"Authorization": "Bearer <token>"}

response = requests.post(url, files=files, headers=headers)

print(response.text)
```

## Responses

### 200

Video uploaded to the computer's draft

### 400

Choose one video file

### 401

Invalid capability

### 404

Unknown capability

### 409

Capability already used or cancelled

### 410

QR code expired

### 413

Video exceeds 50 MiB

### 429

Too many requests

### 503

Upload unavailable; generate a new QR code


Source: https://developer.channelautomations.com/api/post-api-livechat-video-phone-handoffs-upload/index.md
