curl --location 'https://api.myvocal.ai/sound_clone/api/v1/music/projects/mup_...' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"projectId": "mup_...",
"parentProjectId": null,
"name": "Coast Road",
"projectStatus": "READY",
"arrangementVersion": 1,
"activeQuote": null,
"activeJob": { "jobId": "muj_...", "jobType": "SONG", "status": "READY", "displayStage": "FINALIZING_LIBRARY_ITEM", "terminal": true },
"readyAsset": { "assetId": "ma_...", "durationMillis": "90000", "sampleRateHz": 44100, "mimeType": "audio/mpeg" },
"lastFailure": null,
"createdAt": "2027-01-15T15:50:02",
"updatedAt": "2027-01-15T15:56:40",
"requestId": "..."
}
}
Create and generate
Get a music project
Read the current state of a Text-to-Music project, including its arrangement, quote and ready asset.
GET
/
sound_clone
/
api
/
v1
/
music
/
projects
/
{projectId}
curl --location 'https://api.myvocal.ai/sound_clone/api/v1/music/projects/mup_...' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"projectId": "mup_...",
"parentProjectId": null,
"name": "Coast Road",
"projectStatus": "READY",
"arrangementVersion": 1,
"activeQuote": null,
"activeJob": { "jobId": "muj_...", "jobType": "SONG", "status": "READY", "displayStage": "FINALIZING_LIBRARY_ITEM", "terminal": true },
"readyAsset": { "assetId": "ma_...", "durationMillis": "90000", "sampleRateHz": 44100, "mimeType": "audio/mpeg" },
"lastFailure": null,
"createdAt": "2027-01-15T15:50:02",
"updatedAt": "2027-01-15T15:56:40",
"requestId": "..."
}
}
Text to Music · Workflow: Text-to-Music quickstart · Polling: Async jobs and retries
This is the main polling endpoint for Text-to-Music.
Header
Your API key. See Authentication.
Path
Response
ARRANGEMENT_GENERATING, ARRANGEMENT_READY, GENERATING, READY or DELETED. ARRANGEMENT_READY means the arrangement is done — not that the song exists.{ quoteId, arrangementVersion, planKey, ratePerMinute, rateVersion, durationSec, quotedCharacters, expiresAt }. quotedCharacters is a string.{ jobId, jobType, status, attemptCount, createdAt, updatedAt, displayStage, terminal }. attemptCount is a decimal string for an ARRANGEMENT job (for example "0") and null for a SONG job.Present when the song is downloadable:
{ assetId, durationMillis, sampleRateHz, mimeType }. durationMillis is a string.curl --location 'https://api.myvocal.ai/sound_clone/api/v1/music/projects/mup_...' \
--header 'accessKey: <your_api_key>'
{
"code": 1,
"message": "success",
"data": {
"projectId": "mup_...",
"parentProjectId": null,
"name": "Coast Road",
"projectStatus": "READY",
"arrangementVersion": 1,
"activeQuote": null,
"activeJob": { "jobId": "muj_...", "jobType": "SONG", "status": "READY", "displayStage": "FINALIZING_LIBRARY_ITEM", "terminal": true },
"readyAsset": { "assetId": "ma_...", "durationMillis": "90000", "sampleRateHz": 44100, "mimeType": "audio/mpeg" },
"lastFailure": null,
"createdAt": "2027-01-15T15:50:02",
"updatedAt": "2027-01-15T15:56:40",
"requestId": "..."
}
}
Common errors
code = 47009: the project does not exist or does not belong to your account. The API never distinguishes the two.
