curl --location 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/uploads/iu_...' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"uploadId": "iu_...",
"projectId": "ip_...",
"state": "READY",
"declaredSize": "18432611",
"actualSize": "18432611",
"uploadedBytes": "18432611",
"partSizeBytes": 16777216,
"totalParts": 2,
"uploadedParts": [ { "partNumber": 1, "etag": "<etag-1>", "size": "16777216" } ],
"errorCode": null,
"sourceAssetId": "ia_...",
"sourceVersion": 1,
"durationMs": "90000",
"media": { "inputFormat": "mov,mp4,m4a,3gp,3g2,mj2", "containerName": "mov,mp4,m4a,3gp,3g2,mj2", "audioStreamCount": 1, "video": true },
"requestId": "..."
}
}
Interpretation
Get upload status
Check how many parts have been received and whether the source is ready.
GET
/
sound_clone
/
api
/
v1
/
interpretation
/
uploads
/
{uploadId}
curl --location 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/uploads/iu_...' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"uploadId": "iu_...",
"projectId": "ip_...",
"state": "READY",
"declaredSize": "18432611",
"actualSize": "18432611",
"uploadedBytes": "18432611",
"partSizeBytes": 16777216,
"totalParts": 2,
"uploadedParts": [ { "partNumber": 1, "etag": "<etag-1>", "size": "16777216" } ],
"errorCode": null,
"sourceAssetId": "ia_...",
"sourceVersion": 1,
"durationMs": "90000",
"media": { "inputFormat": "mov,mp4,m4a,3gp,3g2,mj2", "containerName": "mov,mp4,m4a,3gp,3g2,mj2", "audioStreamCount": 1, "video": true },
"requestId": "..."
}
}
Use this to resume an interrupted multipart upload and to wait for the probe to finish.
Header
string
required
API key for authentication.
Path
string
required
The upload session identifier.
Response
string
The upload session.
string
Project identifier.
string
CREATED, UPLOADING, COMPLETING, PROBING, READY, FAILED, SUPERSEDED, EXPIRED or ABORTED.string
The declared byte count, as a string.
string | null
The assembled byte count, as a string or
null.string
Bytes received so far, as a string.
number
Part size for this session.
number
Number of parts expected.
array
{ partNumber, etag, size } for each part the service has already accepted. size is a string.string | null
Set when the upload failed.
string | null
The created asset, once available.
number
The committed source version.
string | null
Detected duration, as a string.
object | null
{ inputFormat, containerName, audioStreamCount, video, width, height, rotationDegrees }.curl --location 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/uploads/iu_...' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"uploadId": "iu_...",
"projectId": "ip_...",
"state": "READY",
"declaredSize": "18432611",
"actualSize": "18432611",
"uploadedBytes": "18432611",
"partSizeBytes": 16777216,
"totalParts": 2,
"uploadedParts": [ { "partNumber": 1, "etag": "<etag-1>", "size": "16777216" } ],
"errorCode": null,
"sourceAssetId": "ia_...",
"sourceVersion": 1,
"durationMs": "90000",
"media": { "inputFormat": "mov,mp4,m4a,3gp,3g2,mj2", "containerName": "mov,mp4,m4a,3gp,3g2,mj2", "audioStreamCount": 1, "video": true },
"requestId": "..."
}
}
COMPLETING and PROBING do not mean the source can be used for generation yet. Only READY does. Poll while the state is CREATED, UPLOADING, COMPLETING or PROBING.Common errors
code = 47124: the upload session does not exist or is not owned by your account.code = 47125: the assembled file exceeded the limit or had no content.code = 47127: object storage was unavailable.
