curl --location 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/exports/ie_.../download' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"exportId": "ie_...",
"format": "wav",
"state": "PROCESSING",
"mimeType": null,
"url": null,
"expiresAt": null,
"assetVersion": null,
"rangeSupported": false,
"renewalAttemptLimit": 1,
"requestId": "..."
}
}
{
"code": 1,
"message": "success",
"data": {
"exportId": "ie_...",
"format": "wav",
"state": "READY",
"mimeType": "audio/wav",
"url": "https://<storage-host>/...",
"expiresAt": "2027-01-15T16:20:00",
"assetVersion": "1",
"rangeSupported": true,
"renewalAttemptLimit": 1,
"requestId": "..."
}
}
Interpretation
Download an export
Poll an export and get a temporary download URL once it is ready.
GET
/
sound_clone
/
api
/
v1
/
interpretation
/
exports
/
{exportId}
/
download
curl --location 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/exports/ie_.../download' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"exportId": "ie_...",
"format": "wav",
"state": "PROCESSING",
"mimeType": null,
"url": null,
"expiresAt": null,
"assetVersion": null,
"rangeSupported": false,
"renewalAttemptLimit": 1,
"requestId": "..."
}
}
{
"code": 1,
"message": "success",
"data": {
"exportId": "ie_...",
"format": "wav",
"state": "READY",
"mimeType": "audio/wav",
"url": "https://<storage-host>/...",
"expiresAt": "2027-01-15T16:20:00",
"assetVersion": "1",
"rangeSupported": true,
"renewalAttemptLimit": 1,
"requestId": "..."
}
}
This endpoint both reports progress and, once the export is
READY, returns the temporary download URL for the file.
Header
string
required
API key for authentication.
Path
string
required
The export identifier from the create-export call.
Response
string
The export identifier.
string
The export format.
string
PROCESSING, RETRY or READY. Only READY has a download URL.string | null
The media type, once available.
string | null
The temporary download URL.
null while the export is still being processed.string | null
When the URL stops working.
null while processing.string | null
The stored asset version, or
null — notably while the export is still processing.boolean
Whether the URL supports range requests.
number
How many renewal attempts one failed request may use before the authorization error is surfaced. Currently
1: renew once, then report the error instead of retrying without bound.curl --location 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/exports/ie_.../download' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"exportId": "ie_...",
"format": "wav",
"state": "PROCESSING",
"mimeType": null,
"url": null,
"expiresAt": null,
"assetVersion": null,
"rangeSupported": false,
"renewalAttemptLimit": 1,
"requestId": "..."
}
}
{
"code": 1,
"message": "success",
"data": {
"exportId": "ie_...",
"format": "wav",
"state": "READY",
"mimeType": "audio/wav",
"url": "https://<storage-host>/...",
"expiresAt": "2027-01-15T16:20:00",
"assetVersion": "1",
"rangeSupported": true,
"renewalAttemptLimit": 1,
"requestId": "..."
}
}
Poll the same
exportId while the state is PROCESSING or RETRY. Neither is a terminal failure, and neither has a URL yet. Only when the state is READY should you download the bytes — and if the URL has expired by then, call this endpoint again for a fresh one. A non-empty url field is not by itself proof of success: check state and verify that the transfer actually produced media bytes.Common errors
code = 47113: the export is recovering; keep polling.code = 47117: the export does not exist, or is not owned by your account.code = 47127: object storage is unavailable — retry.
