## Translate an uploaded video

**post** `/v1/video-translate/generate-with-media`

Stages one bounded video upload and starts an asynchronous translation request.
Accepts the same settings as `POST /v1/video-translate/generate` as form fields.
Subtitles may be sent inline in the `config` field or as native file parts
`source_srt` and `target_srt.<language>` (for example `target_srt.de`); sending the
same subtitle both ways is rejected. Parts may arrive in any order; validation that
needs every field runs after the whole body is read but before a request is created,
and the staged video is discarded on every failure. Both transports produce the same
normalized, persisted config.

Limits: video 2 GiB; whole body 2 GiB + 9 MiB; part names 64 bytes; `config` field
6 MiB; other text fields 64 KiB; at most 11 SRT parts (one source plus one per
allowed target language); each SRT part 1 MiB (rejected, never truncated); all SRTs
5 MiB. `target_srt.<language>` must name a supported language; invalid names are
rejected before the part is read.

### Returns

- `request_id: string`

- `status: "success"`

  - `"success"`

### Example

```http
curl https://api.chamelaion.com/api/v1/video-translate/generate-with-media \
    -H 'Content-Type: multipart/form-data' \
    -H "Authorization: Bearer $CHAMELAION_BEARER_TOKEN" \
    -F target_languages=string \
    -F 'video=@/path/to/video' \
    -F config='{"speaker_voices":{"0":"21m00Tcm4TlvDq8ikWAM","1":"AZnzlk1XvdvUeBnXmlld"}}'
```

#### Response

```json
{
  "status": "success",
  "request_id": "4c98dd00-a982-47d9-a8d6-e1f0b35a8944"
}
```
