# Sign a multipart upload part
`POST https://octopus.livepush.io/streams/{stream_id}/videos/uploadurl/multipart/part/signed`
Returns a pre-signed URL for one part. Call once per part, then keep each response `ETag` for the finish call.

Requires a token with the `streams.videos.write` scope.
- **Tag:** Videos
- **Operation ID:** `signMultipartVideoUploadPart`
- **Authentication:** Bearer token required
- **Docs:** https://developers.livepush.io/videos/sign-a-multipart-upload-part/

### Path parameters

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


### Request body

`application/json` (required)

- `partNumber` (integer) **required** — 1-based index of the part being uploaded.
- `uploadId` (string) **required** — Upload session ID returned when the session was started.
- `Key` (string) **required** — Object key for the upload.
- `zone` (string) **required**


```json
{
  "partNumber": 3,
  "uploadId": "string",
  "Key": "string",
  "zone": "eu-central"
}
```


### Example request

```bash
curl -X POST 'https://octopus.livepush.io/streams/st_xxxxxxxxxxxxx/videos/uploadurl/multipart/part/signed' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "partNumber": 3,
    "uploadId": "string",
    "Key": "string",
    "zone": "eu-central"
  }'
```


### Responses


#### 200 — Sign a multipart upload part.

- `Key` (string)
- `uploadId` (string)
- `partNumber` (integer)
- `uploadUrl` (string) — Pre-signed URL to PUT this part to. Keep the ETag from the storage response — the finish call needs it.


```json
{
  "Key": "string",
  "uploadId": "string",
  "partNumber": 3,
  "uploadUrl": "string"
}
```


#### 401 — Response


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

