> ## 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.

# Improve a Cover voice

> Upload more recordings to improve a custom AI Cover voice. The result is reported to your callback URL.

<sub>**Voice cloning** · Workflow: [How to use voices](/guides/voice-quickstart)</sub>

The result is delivered to your `callbackUrl`; see [Cover callbacks](/callback) (`EDIT_COVER_SPEAKER`).

<Note>
  The interactive playground on this page cannot send file uploads. This is a limitation of the documentation playground, not of the API. Send the `multipart/form-data` request to `https://api.myvocal.ai/sound_clone/api/v1/voices/vc/{voiceId}` from your own code or an HTTP tool, as in the request example.
</Note>

### Header

<ParamField header="accessKey" type="string" required>
  Your API key. See [Authentication](/api-reference/authentication).
</ParamField>

### Body

<ParamField path="id" type="string" required>
  Your voiceId
</ParamField>

<ParamField body="callbackUrl" type="string" required>
  To receive the audio returned after processing is completed.
</ParamField>

<ParamField body="files" type="Files" required>
  <p>Please provide mp3/wav/m4a files.</p>
  <p>A single file cannot exceed 10MB, and up to 25 files can be uploaded.</p>
  <p>Please ensure that the total effective duration of the audio (including the parts with human voice, excluding the silent parts) is longer than 1 minute.</p>
</ParamField>

### Response

<ResponseField name="code" type="number">
  Indicates whether the call was successful. 1 if successful.
</ResponseField>

<ResponseField name="message" type="string">
  When an exception occurs, specific exception information will be provided in the message.
</ResponseField>

<ResponseField name="data" type="object">
  Includes specific data.

  <Expandable title="Toggle object">
    <ResponseField name="webhookId" type="string">
      When the request is successfully sent, a webhookId will be synchronously returned. The same information will also be called back in the callbackUrl, which is used to correlate the request and the response.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash Example Request theme={null}
  curl --location 'https://api.myvocal.ai/sound_clone/api/v1/voices/vc/123' \
  --header 'accessKey: xxx' \
  --form 'files=@"xxx/xxx.mp3"' \
  --form 'callbackUrl="111"'
  ```
</RequestExample>

<ResponseExample>
  ```json 200（success） theme={null}
  {
      "code": 1,
      "message": "Success",
      "data": {
          "webhookId": "1701406584rkzy91"
      }
  }
  ```

  ```json 200（fail） theme={null}
  {
    "code": -1,
    "message": "error msg",
  }
  ```
</ResponseExample>


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