> ## Documentation Index
> Fetch the complete documentation index at: https://wiz-myvocal.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Complete an upload

> Complete the uploaded parts and analyze the audio.

<ParamField header="accessKey" type="string" required>MyVocal API key.</ParamField>
<ParamField path="uploadId" type="string" required>The upload id.</ParamField>

<ParamField body="parts" type="object[]" required>
  All uploaded parts with their object-storage ETags.

  <Expandable title="properties">
    <ParamField body="partNumber" type="number" required>One-based part number.</ParamField>
    <ParamField body="etag" type="string" required>ETag returned by the storage PUT.</ParamField>
  </Expandable>
</ParamField>

```json theme={null}
{"parts":[{"partNumber":1,"etag":"<ETag from the storage PUT>"}]}
```

Read `data.state` before submitting a transcription. A `READY` upload includes `media`
and `media.audioTracks`; use the selected track's `index` as `audioTrackIndex` when
multiple tracks exist. A `FAILED` upload reports `errorCode`; invalid audio can return
`MEDIA_UNREADABLE`. HTTP 200 alone does not prove the file is ready.

You can also [read the upload](/api-reference/stt/getUpload) to retrieve its current state.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.