Suno API Pricing
Suno API API with VezAPI. Explore model capabilities, credit pricing, request parameters, and integration examples.
Suno API API documentation
Integrate Suno API with your VezAPI key. The operations below share the same authentication and account balance.
https://api.vezapi.comSend Authorization: Bearer YOUR_VEZAPI_KEY. Use a unique Idempotency-Key for each submission; reuse it only when checking the same request.
add-instrumental
/api/v1/jobs/createTaskModel IDs: ai-music-api/add-instrumental
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.upload_urlrequired | string | URL of the uploaded audio file. Required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `tags` are provided. |
input.modeloptional | string | The AI model version to use for generation. - Available options: - **`V6_WILD`**: Pushes creative boundaries for bolder, more distinctive musical expression. - **`V6_MINI`**: Lightweight and fast, balancing quality and speed for effortless creation. - **`V6`**: Greater musical expression with more natural vocals and richer details. Values: Default: |
input.titlerequired | string | Title of the generated music. Required. Will be displayed in the player interface and file name. |
input.negative_tagsrequired | string | Music styles or characteristics to exclude from the generated audio. Required. Used to avoid specific unwanted music elements.
|
input.tagsrequired | string | Music styles or tags to include in the generated music. Required. Defines the desired music style and characteristics.
|
input.vocal_genderoptional | string | Vocal gender preference. Optional. 'm' for male, 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. Values: |
input.style_weightoptional | number | Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places.
|
input.weirdness_constraintoptional | number | Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places.
|
input.audio_weightoptional | number | Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places.
|
input.lyricsoptional | string | Lyrics for the generated audio. Optional. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `tags` are provided.
|
input.varietyoptional | integer | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:
|
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/add-instrumental",
"input": {
"upload_url": "https://example.com/input.png",
"model": "V6",
"title": "Relaxing Piano",
"negative_tags": "heavy metal, fast drums",
"tags": "relaxing, piano, soothing"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). |
add-vocals
/api/v1/jobs/createTaskModel IDs: ai-music-api/add-vocals
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.promptoptional | string | Prompt for generating audio. Optional. - Used as lyrics only when `lyrics` is not provided. If `lyrics` is present, `prompt` is not used as lyrics. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters.
|
input.modeloptional | string | The AI model version to use for generation. - Available options: - **`V6_WILD`**: Pushes creative boundaries for bolder, more distinctive musical expression. - **`V6_MINI`**: Lightweight and fast, balancing quality and speed for effortless creation. - **`V6`**: Greater musical expression with more natural vocals and richer details. Values: Default: |
input.titlerequired | string | Music title. Required. Will be displayed in the player interface and file name. |
input.negative_tagsrequired | string | Excluded music styles. Required. Used to avoid including specific styles or elements in the generated music.
|
input.stylerequired | string | Music style. Required. Such as jazz, electronic, classical and other music types.
|
input.vocal_genderoptional | string | Vocal gender preference. Optional. 'm' for male, 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. Values: |
input.style_weightoptional | number | Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places.
|
input.weirdness_constraintoptional | number | Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places.
|
input.audio_weightoptional | number | Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places.
|
input.upload_urlrequired | string | URL of the uploaded audio file. Required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `style` are provided. |
input.lyricsoptional | string | Lyrics for the generated audio. Optional. - Takes priority over `prompt` as lyrics. If omitted, `prompt` is used as lyrics when provided. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `style` are provided.
|
input.varietyoptional | integer | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:
|
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/add-vocals",
"input": {
"prompt": "A calm and relaxing piano track.",
"model": "V6",
"title": "Relaxing Piano",
"negative_tags": "heavy metal, strong drum beats",
"style": "Jazz",
"upload_url": "https://example.com/input.png"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). |
boost-music-style
/api/v1/jobs/createTaskModel IDs: ai-music-api/boost-music-style
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.contentrequired | string | Style description. Please describe in concise and clear language the music style you expect to generate. Example: 'Pop, Mysterious' |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/boost-music-style",
"input": {
"content": "Pop, Mysterious"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID |
data.paramoptional | string | Request parameters |
data.resultoptional | string | The final generated music style text result. |
data.creditsConsumedoptional | number | Credits consumed, up to 5 digits, up to 2 decimal places |
data.creditsRemainingoptional | number | Credits remaining after this task |
data.successFlagoptional | string | Execution result: 0-pending, 1-success, 2-failed |
data.errorCodeoptional | integer | Error code - **400**: Validation Error - Failed, The request parameters failed validation checks. Values: |
data.errorMsgoptional | string | Error message |
data.createTimeoptional | integer | Creation time (Unix timestamp in milliseconds) |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
convert-to-wav
/api/v1/jobs/createTaskModel IDs: ai-music-api/convert-to-wav-format
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | Unique identifier of the music generation task. This should be a task_id returned from either the "Generate Music" or "Extend Music" endpoints. To convert a separated stem, use the task_id of the Vocal & Instrument Stem Separation task instead. |
input.audio_idrequired | string | Unique identifier of the specific audio track to convert. This ID is returned in the callBackUrl data after music generation completes. For a separated stem, use the stem's id from the separation result (origin_data[].id). |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/convert-to-wav-format",
"input": {
"task_id": "5c79****be8e",
"audio_id": "e231****-****-****-****-****8cadc7dc"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). If this track has already been converted, the request returns code 422 and data contains the existing taskId and audioWavUrl; no credits are charged. Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
cover-suno
/api/v1/jobs/createTaskModel IDs: ai-music-api/cover-generate
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | Original music task ID, should be the task_id returned by the music generation interface. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/cover-generate",
"input": {
"task_id": "73d6128b3523a0079df10da9471017c8"
}
}'Responses and errors
HTTP 200
Success
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
create-music-video
/api/v1/jobs/createTaskModel IDs: ai-music-api/create-music-video
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | Unique identifier of the music generation task. This should be a task_id returned from either the "Generate Music" or "Extend Music" endpoints. |
input.audio_idrequired | string | Unique identifier of the specific audio track to visualize. This ID is returned in the callBackUrl data after music generation completes. |
input.authoroptional | string | Artist or creator name to display as a signature on the video cover. Maximum 50 characters. This creates attribution for the music creator.
|
input.domain_nameoptional | string | Website or brand to display as a watermark at the bottom of the video. Maximum 50 characters. Useful for promotional branding or attribution.
|
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/create-music-video",
"input": {
"task_id": "taskId_774b9aa0422f",
"audio_id": "e231****-****-****-****-****8cadc7dc"
}
}'Responses and errors
HTTP 200
Success
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
extend-music
/api/v1/jobs/createTaskModel IDs: ai-music-api/extend
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.audio_idrequired | string | Unique identifier of the audio track to extend. Required for all extension requests. |
input.promptoptional | string | Lyrics for the extended audio. Optional. - Used as lyrics only when `lyrics` is not provided. If `lyrics` is present, `prompt` is not used as lyrics. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`audio_id`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`.
|
input.styleoptional | string | Music style specification for the extended audio. Optional. - Not required. Source audio (`audio_id`) is enough to generate. - Character limits by model: - **V6, V6_MINI, and V6_WILD**: Maximum 1000 characters - Should typically align with the original audio's style for best results.
|
input.titleoptional | string | Title for the extended music track. Optional. - Maximum 100 characters. - Displayed in player interfaces and filenames.
|
input.continue_atoptional | number | The time point (in seconds) from which to start extending the music. - Value range: greater than 0 and less than the total duration of the generated audio. - Specifies the position in the original track where the extension should begin. |
input.modelrequired | string | Required. Use V6, V6_MINI or V6_WILD. - **`V6_WILD`**: Pushes creative boundaries for bolder, more distinctive musical expression. - **`V6_MINI`**: Lightweight and fast, balancing quality and speed for effortless creation. - **`V6`**: Greater musical expression with more natural vocals and richer details. Values: |
input.negative_tagsoptional | string | Music styles or traits to exclude from the extended audio. Optional. Use to avoid specific undesired characteristics. |
input.vocal_genderoptional | string | Vocal gender preference. Optional. 'm' denotes a male voice, and 'f' denotes a female voice. In practice, this parameter only influences the probability and does not guarantee strict adherence to the gender instruction. This parameter is not required if `instrumental` is set to `true`. Values: |
input.style_weightoptional | number | Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.
|
input.weirdness_constraintoptional | number | Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.
|
input.audio_weightoptional | number | Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.
|
input.persona_idoptional | string | Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona]([see VezAPI documentation]) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice]([see VezAPI documentation]) endpoint. |
input.persona_modeloptional | string | Values: |
input.instrumentaloptional | boolean | Indicates whether it is an instrumental track. If true, passing the `lyrics`, `prompt`, and `vocal_gender` parameters is prohibited. Default: |
input.lyricsoptional | string | Lyrics for the extended audio. Optional. - Takes priority over `prompt` as lyrics. If omitted, `prompt` is used as lyrics when provided. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`audio_id`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`.
|
input.varietyoptional | integer | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:
|
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/extend",
"input": {
"audio_id": "e231****-****-****-****-****8cadc7dc",
"prompt": "Extend the music with more relaxing notes and a gentle bridge section",
"model": "V6"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). |
generate-lyrics
/api/v1/jobs/createTaskModel IDs: ai-music-api/generate-lyrics
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.promptrequired | string | Description of the desired lyrics content. Be specific about theme, mood, style, or story elements you want in the lyrics. More detailed prompts yield better results. The maximum word limit is 200 characters. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/generate-lyrics",
"input": {
"prompt": "A nostalgic song about childhood memories and growing up in a small town"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
generate-mashup
/api/v1/jobs/createTaskModel IDs: ai-music-api/mashup
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.upload_url_listrequired | array | Array of audio file URLs to mashup. Provide 2 audio URLs. Only the first 2 are used. Each URL must be publicly accessible.
|
input.promptoptional | string | A description of the desired audio content. Optional. - Used as lyrics only when `lyrics` is not provided. If `lyrics` is present, `prompt` is not used as lyrics. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters.
|
input.stylerequired | string | Music style specification for the generated audio. Required. - Character limits by model: - **V6, V6_MINI & V6_WILD**: Maximum 1000 characters - Common examples: Jazz, Classical, Electronic, Pop, Rock, Hip-hop, etc.
|
input.titlerequired | string | Title for the generated music track. Required. - Character limits by model: - **V6, V6_MINI & V6_WILD**: Maximum 100 characters - Will be displayed in player interfaces and filenames. |
input.modelrequired | string | Required. Use V6, V6_MINI or V6_WILD. - **`V6_WILD`**: Pushes creative boundaries for bolder, more distinctive musical expression. - **`V6_MINI`**: Lightweight and fast, balancing quality and speed for effortless creation. - **`V6`**: Greater musical expression with more natural vocals and richer details. Values: |
input.vocal_genderoptional | string | Vocal gender preference for the singing voice. Optional. Use 'm' for male and 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. Values: |
input.style_weightoptional | number | Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.
|
input.weirdness_constraintoptional | number | Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.
|
input.audio_weightoptional | number | Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.
|
input.durationoptional | integer | Default:
|
input.lyricsoptional | string | Lyrics for the mashup. Optional. - Takes priority over `prompt` as lyrics. If omitted, `prompt` is used as lyrics when provided. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters.
|
input.varietyoptional | integer | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:
|
input.persona_idoptional | string | Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona]([see VezAPI documentation]) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice]([see VezAPI documentation]) endpoint. |
input.persona_modeloptional | string | Values: Default: |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/mashup",
"input": {
"upload_url_list": [
"https://example.com/input.png",
"https://example.com/input.png"
],
"prompt": "A calm and relaxing piano track with soft melodies",
"style": "Jazz",
"title": "Relaxing Piano",
"model": "V6",
"duration": 20
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). |
generate-midi
/api/v1/jobs/createTaskModel IDs: ai-music-api/generate-midi-from-audio
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | Task ID from a completed vocal separation. This should be the task_id returned from the Vocal & Instrument Stem Separation endpoint. |
input.audio_idoptional | string | The id of a stem from the separation callback (vocal_removal_info.origin_data[].id). If omitted, MIDI is generated from all stems. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/generate-midi-from-audio",
"input": {
"task_id": "5c79****be8e"
}
}'Responses and errors
HTTP 200
MIDI generation task created successfully
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). |
msgoptional | string | Response message |
dataoptional | object | Response data containing task information |
data.taskIdoptional | string | Unique identifier for the MIDI generation task. Use this to query task status or receive callBackUrl results. |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
generate-music
/api/v1/jobs/createTaskModel IDs: ai-music-api/generate
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.promptoptional | string | A description of the desired audio content. Optional. - Custom mode (`custom_mode=true`): When provided, the prompt is used strictly as lyrics and sung in the generated track. Character limits by model: - Non-custom mode (`custom_mode=false`): When provided, the prompt serves as the core idea. Lyrics are generated automatically based on it and do not strictly match the input. Maximum 3000 characters. `prompt` is not required. In non-custom mode, provide at least one of `image_urls`, `video_urls`, `audio_urls`, `midi_urls`, `style`, or `lyrics`. In custom mode, provide at least one of `style`, `lyrics`, or `negative_tags`. Generation is rejected if all related inputs are empty. |
input.styleoptional | string | Music style specification for the generated audio. - Character limits by model: - **V6, V6_MINI, and V6_WILD**: Maximum 1000 characters - Common examples: Jazz, Classical, Electronic, Pop, Rock, Hip-hop, etc. |
input.titleoptional | string | Title for the generated music track. - Required in Custom Mode (`custom_mode: true`). - Max length: 80 characters. - Will be displayed in player interfaces and filenames. |
input.custom_moderequired | boolean | Determines whether advanced parameter customization is enabled. - If `true`: Allows detailed control - If `false`: Simplified mode |
input.instrumentalrequired | boolean | Whether to generate instrumental music (no vocals). See Parameter Details for the fields required in each mode. |
input.modelrequired | string | Required. Use V6, V6_MINI or V6_WILD. - **`V6_WILD`**: Pushes creative boundaries for bolder, more distinctive musical expression. - **`V6_MINI`**: Lightweight and fast, balancing quality and speed for effortless creation. - **`V6`**: Greater musical expression with more natural vocals and richer details. Values: |
input.negative_tagsoptional | string | Music styles or traits to exclude from the generated audio. Optional. Use to avoid specific styles. |
input.vocal_genderoptional | string | Vocal gender preference. Optional. Use `m` for male and `f` for female. This parameter is only effective when `custom_mode` is true. In practice, it only increases probability and cannot guarantee male/female voice instructions are followed. Values: |
input.style_weightoptional | number | Only available when Custom Mode (`custom_mode: true`) is enabled. Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.
|
input.weirdness_constraintoptional | number | Only available when Custom Mode (`custom_mode: true`) is enabled. Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.
|
input.audio_weightoptional | number | Only available when Custom Mode (`custom_mode: true`) is enabled. Relative weight of audio features. Optional. Range 0–1, up to 2 decimal places. - `audio_weight` is not supported when there are no vocals
|
input.persona_idoptional | string | Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona]([see VezAPI documentation]) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice]([see VezAPI documentation]) endpoint. |
input.persona_modeloptional | string | Values: |
input.durationoptional | number |
|
input.image_urlsoptional | array | Image references. Only effective when `custom_mode=false`. - Optional - Up to 5 images; each image must not exceed 10 MB - Supported formats: `jpeg`, `png`, `webp`, and `bmp`
|
input.varietyoptional | number | Only available when Custom Mode (`custom_mode: true`) is enabled. Controls the diversity and stylistic variation of generated results. Optional. Range 0–4, integer, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:
|
input.lyricsoptional | string | Lyrics for the generated audio. Optional. - V6: Maximum 5000 characters. - When `custom_mode=true`, `lyrics` is used as lyrics first; if `lyrics` is not provided, `prompt` is used as lyrics. - When `custom_mode=false`, `lyrics` is used as a lyrics attachment and can be used together with the audio description in `prompt`. |
input.audio_urlsoptional | array | Audio references. Only effective when `custom_mode=false`. - Optional - Audio duration must be between 6 seconds and 30 minutes; each audio file must not exceed 500 MB |
input.video_urlsoptional | array | Video references. Only effective when `custom_mode=false`. - Optional - Up to 1 video file; each file must not exceed 100 MB, duration must not exceed 241 seconds, with no minimum duration - Supported formats: mp4, mov, and webm
|
input.midi_urlsoptional | array | MIDI references. Only effective when `custom_mode=false`. - Optional - Currently up to 1 MIDI file; multiple MIDI files in one request are not supported - Supported formats: `mid`, `midi` - Each file must not exceed 256 KB and must start with the standard `MThd\x00\x00\x00\x06` header - Only supported by `V6_WILD`; if another model is passed, it will be switched to `V6_WILD`
|
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/generate",
"input": {
"prompt": "A calm and relaxing piano track with soft melodies",
"custom_mode": true,
"instrumental": true,
"model": "V6",
"duration": 20
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). |
generate-persona
/api/v1/jobs/createTaskModel IDs: ai-music-api/generate-persona
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | Unique identifier of the original music generation task. Generated by model ai-music-api/generate or ai-music-api/extend. |
input.audio_idrequired | string | Unique identifier of the audio track to create Persona for. This ID is returned in the callBackUrl data after music generation completes. |
input.namerequired | string | Name for the Persona. A descriptive name that captures the essence of the musical style or character. |
input.descriptionrequired | string | Detailed description of the Persona's musical characteristics, style, and personality. Be specific about genre, mood, instrumentation, and vocal qualities. |
input.vocal_startoptional | number | Start time (in seconds) for Persona analysis segment extraction. Used to specify the time point in the audio from which to extract the segment for Persona analysis. Must be less than vocal_end, and vocal_end - vocal_start must be between 10–30 seconds. Defaults to 0.0. Default:
|
input.vocal_endoptional | number | End time (in seconds) for Persona analysis segment extraction. Together with vocal_start, used to specify the time range for analysis. vocal_end - vocal_start must be between 10–30 seconds. Defaults to 30.0. Default:
|
input.styleoptional | string | Optional. Used to supplement the description of the music style tag corresponding to the Persona, such as "Electronic Pop", "Jazz Trio", etc. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/generate-persona",
"input": {
"task_id": "5c79****be8e",
"audio_id": "e231****-****-****-****-****8cadc7dc",
"name": "Electronic Pop Singer",
"description": "A modern electronic music style pop singer, skilled in dynamic rhythms and synthesizer tones"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.persona_idoptional | string | Unique identifier for the generated Persona. This persona_id can be used in subsequent music generation requests (Generate Music, Extend Music, Upload And Cover Audio, Upload And Extend Audio) to create music with similar style characteristics. |
data.nameoptional | string | Name of the Persona as provided in the request. |
data.descriptionoptional | string | Description of the Persona's musical characteristics, style, and personality as provided in the request. |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
generate-sounds
/api/v1/jobs/createTaskModel IDs: ai-music-api/sounds
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.promptrequired | string | Description of the sound (max 500 characters). |
input.modelrequired | string | Required. Use V6, V6_MINI or V6_WILD. - **`V6_WILD`**: Pushes creative boundaries for bolder, more distinctive musical expression. - **`V6_MINI`**: Lightweight and fast, balancing quality and speed for effortless creation. - **`V6`**: Greater musical expression with more natural vocals and richer details. Values: |
input.sound_loopoptional | boolean | Whether the generated sound loops seamlessly. Default: |
input.sound_tempooptional | integer | Tempo in BPM (1–300). Omit for automatic tempo. Default:
|
input.sound_keyoptional | string | Musical key. Default "Any" (automatic). Values: Default: |
input.grab_lyricsoptional | boolean | Whether to capture the lyrics subtitles Will the interface be called after completion to obtain the lyrics subtitles? Default: |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/sounds",
"input": {
"prompt": "Your prompt",
"model": "V6"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Response message, error description upon failure |
datarequired | object | |
data.taskIdrequired | string | The task ID can be used with the "Get Task Details" endpoint to query the task status. |
get-timestamped-lyrics
/api/v1/jobs/createTaskModel IDs: ai-music-api/timeStamped-lyrics
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | Unique identifier of the music generation task. This should be a task_id returned from either the "Generate Music" or "Extend Music" endpoints. |
input.audio_idrequired | string | Unique identifier of the specific audio track for which to retrieve lyrics. This ID is returned in the callBackUrl data after music generation completes. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/timeStamped-lyrics",
"input": {
"task_id": "5c79****be8e",
"audio_id": "e231****-****-****-****-****8cadc7dc"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.codeoptional | integer | Status code of the result. 200 means success. |
data.msgoptional | string | Result message. |
data.dataoptional | object | |
data.data.alignedWordsoptional | array | List of aligned lyrics words |
data.data.alignedWords[].wordoptional | string | Lyrics word |
data.data.alignedWords[].successoptional | boolean | Whether lyrics word is successfully aligned |
data.data.alignedWords[].startSoptional | number | Word start time (seconds) |
data.data.alignedWords[].endSoptional | number | Word end time (seconds) |
data.data.alignedWords[].palignoptional | integer | Alignment parameter |
data.data.waveformDataoptional | array | Waveform data, used for audio visualization |
data.data.hootCeroptional | number | Lyrics alignment accuracy score |
data.data.isStreamedoptional | boolean | Whether it's streaming audio |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
recovery-audio
/api/v1/jobs/createTaskModel IDs: ai-music-api/suno-recovery-audio
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/suno/recovery/record-info?task_id={task_id} (recovery tasks use this dedicated polling endpoint). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for generating the task |
input.task_idrequired | string | The original music generation task ID for which the audio link needs to be restored. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/suno-recovery-audio",
"input": {
"task_id": "Your prompt"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Response message, error description upon failure |
datarequired | object | |
data.taskIdrequired | string | The URL for callBackUrl notifications after the recovery task is completed. Optional. If left blank, please use `GET /api/v1/suno/recovery/record-info` for polling instead. |
replace-section
/api/v1/jobs/createTaskModel IDs: ai-music-api/replace-section
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name used to generate the task. This field is required. This endpoint must use the `ai-music-api/replace-section` model. Values: |
callBackUrloptional | string | The URL to receive updates when the generation task is completed. Optional, but recommended for production environments. - When generation is complete, the system will POST the task status and results to this URL - The callback includes the generated URL and task information - Your callback endpoint should accept POST requests with a JSON payload containing the results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, refer to the [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the music section replacement task. |
input.promptrequired | string | The lyrics after replacement. Required. |
input.tagsrequired | string | Style tags for the music, such as jazz or electronic. Required. |
input.titlerequired | string | The title of the music. Required. |
input.negative_tagsoptional | string | Music styles to exclude, used to prevent specific stylistic elements from appearing in the replacement section. |
input.infill_start_srequired | number | The point in time, in seconds, at which replacement starts, rounded to 2 decimal places. Required. Must be less than infill_end_s, and the difference between infill_end_s and infill_start_s must be at least 10 seconds.
|
input.infill_end_srequired | number | The point in time, in seconds, at which replacement ends, rounded to 2 decimal places. Required. Must be greater than infill_start_s, and the difference between infill_end_s and infill_start_s must be at least 10 seconds.
|
input.full_lyricsrequired | string | The complete modified lyrics, combining the modified and unmodified lyrics. Required. This parameter contains the complete lyrics text that will be used for the entire song after section replacement. |
input.lyricsoptional | string | Lyrics for the replaced segment. Optional. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters.
|
input.vocal_genderoptional | string | Vocal gender preference. Optional. 'm' for male, 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. Values: |
input.style_weightoptional | number | Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places.
|
input.weirdness_constraintoptional | number | Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places.
|
input.audio_weightoptional | number | Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places.
|
input.varietyoptional | integer | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:
|
input.persona_idoptional | string | Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona]([see VezAPI documentation]) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice]([see VezAPI documentation]) endpoint. |
input.persona_modeloptional | string | Values: Default: |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/replace-section",
"input": {
"task_id": "2fac****9f72",
"audio_id": "e231****-****-****-****-****8cadc7dc"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). |
separate-vocals
/api/v1/jobs/createTaskModel IDs: ai-music-api/separate-vocals
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task. Provide either task_id + audio_id, or audio_url alone. |
input.typeoptional | string | Separation type, options: - **separate_vocal**: Separate vocals and accompaniment, generating a vocal track and an instrumental track. - **split_stem**: Separate various instrument sounds, generating multiple instrument tracks. - **split_stem_advanced**: Advanced multi-track separation, supporting the specification of a particular instrument track to generate finer instrument tracks. Values: Default: |
input.stem_nameoptional | string | Only used when `type` is `split_stem_advanced` to request a specific stem track/instrument name. Values: |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/separate-vocals",
"input": {
"task_id": "5c79****be8e",
"audio_id": "e231****-****-****-****-****8cadc7dc"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
suno-voice-check-voice
/api/v1/jobs/createTaskModel IDs: ai-music-api/check-voice
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | The taskId returned by Generate Verification Phrase (step 1), also returned in resultJson.resultUrls[0] of the Create Custom Voice task. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/check-voice",
"input": {
"task_id": "Your prompt"
}
}'Responses and errors
HTTP 200
Request successful.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). |
msgrequired | string | |
datarequired | object | |
data.isAvailablerequired | boolean |
suno-voice-generate
/api/v1/jobs/createTaskModel IDs: ai-music-api/create-voice
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | Task ID |
input.verify_urlrequired | string | Audio URL for the user's recording of the server-returned `validateInfo` validation phrase. For best voice generation results, recording the phrase in a singing voice rather than plain speech is recommended. [Required] |
input.voice_nameoptional | string | Voice name |
input.descriptionoptional | string | Voice description |
input.styleoptional | string | Voice style |
input.singer_skill_leveloptional | string | Singer skill level. Supported: beginner, intermediate, advanced, professional Values: Default: |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/create-voice",
"input": {
"task_id": "Your prompt",
"verify_url": "Your prompt"
}
}'Responses and errors
HTTP 200
Request successful.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). |
msgrequired | string | |
datarequired | object | |
data.taskIdrequired | string | Task ID |
suno-voice-regenerate
/api/v1/jobs/createTaskModel IDs: ai-music-api/regenerate-phrase
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.task_idrequired | string | Task ID |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/regenerate-phrase",
"input": {
"task_id": "Your prompt"
}
}'Responses and errors
HTTP 200
Request successful.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). |
msgrequired | string | |
datarequired | object | |
data.taskIdrequired | string |
suno-voice-validate
/api/v1/jobs/createTaskModel IDs: ai-music-api/validation-phrase
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.voice_urlrequired | string | The original recording URL uploaded by the user [Required] |
input.vocal_start_srequired | integer | Start time (in seconds) for extracting the vocal segment [Required] |
input.vocal_end_srequired | integer | End time (in seconds) for extracting the vocal segment, must be greater than vocal_start_s [Required] |
input.languageoptional | string | Verify the language of the short phrase. Supported languages include: English (en), Chinese (zh), Spanish (es), French (fr), Portuguese (pt), German (de), Japanese (ja), Korean (ko), Hindi (hi), and Russian (ru). |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/validation-phrase",
"input": {
"voice_url": "Your prompt",
"vocal_start_s": 1,
"vocal_end_s": 1
}
}'Responses and errors
HTTP 200
Request successful.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). |
msgrequired | string | |
datarequired | object | |
data.taskIdrequired | string | Task ID |
upload-and-cover-audio
/api/v1/jobs/createTaskModel IDs: ai-music-api/upload-and-cover-audio
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.upload_urloptional | string | The URL of the source audio file to cover. Required unless `task_id` and `audio_id` are provided. Source audio (`upload_url`) is enough to generate. Ensure the uploaded audio does not exceed 8 minutes in length. |
input.promptoptional | string | Lyrics for the covered audio. Optional. - Used as lyrics only when `lyrics` is not provided. If `lyrics` is present, `prompt` is not used as lyrics. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`.
|
input.styleoptional | string | The music style or genre for the audio. Optional. - Not required. Source audio (`upload_url`) is enough to generate. - Character limits by model: - **V6, V6_MINI, and V6_WILD**: Maximum 1000 characters
|
input.titleoptional | string | The title of the generated music track. Optional. - Maximum 80 characters. - Displayed in player interfaces and filenames.
|
input.instrumentalrequired | boolean | Determines if the audio should be instrumental (no lyrics). - If `true`: generate instrumental music (no vocals). Do not pass `lyrics`, `prompt`, or `vocal_gender`. - If `false`: use `lyrics` as lyrics (fall back to `prompt` if `lyrics` is not provided). |
input.modelrequired | string | Required. Use V6, V6_MINI or V6_WILD. - **`V6_WILD`**: Pushes creative boundaries for bolder, more distinctive musical expression. - **`V6_MINI`**: Lightweight and fast, balancing quality and speed for effortless creation. - **`V6`**: Greater musical expression with more natural vocals and richer details. Values: |
input.negative_tagsoptional | string | Music styles or traits to exclude from the generated audio. - Optional. Use to avoid specific styles. Example: "Heavy Metal, Upbeat Drums" |
input.vocal_genderoptional | string | Vocal gender preference for the singing voice. Optional. Use 'm' for male and 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. Do not pass this parameter when `instrumental` is `true`. Values: |
input.style_weightoptional | number | Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.
|
input.weirdness_constraintoptional | number | Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.
|
input.audio_weightoptional | number | Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.
|
input.persona_idoptional | string | Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona]([see VezAPI documentation]) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice]([see VezAPI documentation]) endpoint. |
input.persona_modeloptional | string | Persona model: style_persona or voice_persona. Available for V6, V6_MINI and V6_WILD. Values: |
input.durationoptional | integer |
|
input.lyricsoptional | string | Lyrics for the covered audio. Optional. - Takes priority over `prompt` as lyrics. If omitted, `prompt` is used as lyrics when provided. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`.
|
input.varietyoptional | integer | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:
|
input.task_idoptional | string | Task ID of a music generation task on VezAPI whose track you want to cover. Use together with `audio_id`; mutually exclusive with `upload_url`. |
input.audio_idoptional | string | ID of the specific track to cover, from the generation result (the `id` of each track in the callback data or recordInfo). Use together with `task_id`; mutually exclusive with `upload_url`. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/upload-and-cover-audio",
"input": {
"prompt": "A calm and relaxing piano track with soft melodies",
"instrumental": true,
"model": "V6",
"duration": 20
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status |
upload-and-extend-audio
/api/v1/jobs/createTaskModel IDs: ai-music-api/upload-and-extend-audio
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The model name to use for generation. Required field. |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | Input parameters for the generation task |
input.upload_urlrequired | string | The URL of the source audio file to extend. Required. Source audio (`upload_url`) is enough to generate. Ensure the uploaded audio does not exceed 8 minutes in length. |
input.instrumentaloptional | boolean | Determines whether the audio is instrumental (without lyrics). Optional; defaults to `false`. - If `true`: generate instrumental music (no vocals). Do not pass `lyrics`, `prompt`, or `vocal_gender`. - If `false`: use `lyrics` as lyrics (fall back to `prompt` if `lyrics` is not provided). Default: |
input.promptoptional | string | Lyrics for the extended audio. Optional. - Used as lyrics only when `lyrics` is not provided. If `lyrics` is present, `prompt` is not used as lyrics. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`.
|
input.styleoptional | string | Music style, e.g., Jazz, Classical, Electronic. Optional. - Not required. Source audio (`upload_url`) is enough to generate. - Character limits by model: - **V6, V6_MINI & V6_WILD**: Maximum 1000 characters
|
input.titleoptional | string | Music title. Optional. - Maximum 100 characters. - Displayed in player interfaces and filenames.
|
input.continue_atoptional | number | The time point (in seconds) from which to start extending the music. - Value range: greater than 0 and less than the total duration of the uploaded audio. - Specifies the position in the original track where the extension should begin. |
input.modelrequired | string | Required. Use V6, V6_MINI or V6_WILD. - **`V6_WILD`**: Pushes creative boundaries for bolder, more distinctive musical expression. - **`V6_MINI`**: Lightweight and fast, balancing quality and speed for effortless creation. - **`V6`**: Greater musical expression with more natural vocals and richer details. Values: |
input.negative_tagsoptional | string | Music styles to exclude from generation |
input.vocal_genderoptional | string | Vocal gender preference for the singing voice. Optional. Use 'm' for male and 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. Do not pass this parameter when `instrumental` is `true`. Values: |
input.style_weightoptional | number | Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.
|
input.weirdness_constraintoptional | number | Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.
|
input.audio_weightoptional | number | Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.
|
input.persona_idoptional | string | Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona]([see VezAPI documentation]) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice]([see VezAPI documentation]) endpoint. |
input.persona_modeloptional | string | Values: |
input.lyricsoptional | string | Lyrics for the extended audio. Optional. - Takes priority over `prompt` as lyrics. If omitted, `prompt` is used as lyrics when provided. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`.
|
input.varietyoptional | integer | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:
|
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/upload-and-extend-audio",
"input": {
"upload_url": "https://example.com/input.png",
"prompt": "Extend the music with more relaxing notes",
"model": "V6"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID for tracking task status |
Generate Speech
/api/v1/jobs/createTaskModel IDs: ai-music-api/speech
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | Model identifier. Always `ai-music-api/speech`. Values: |
callBackUrloptional | string | The URL to receive generation task completion updates. Optional but recommended for production use. - The system POSTs task status and results to this URL when generation completes - The callback includes generated URLs and task information - Your callback endpoint should accept POST requests with a JSON payload - Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) |
inputrequired | object | Input parameters for the generation task. Simple and Advanced fields are mutually exclusive: Simple sends only `customMode=false` and `prompt`; Advanced sends `customMode=true` and `script`, plus optional fields. |
input.customModerequired | boolean | Mode switch. Required. `false` is Simple, `true` is Advanced. |
input.promptoptional | string | Simple only. Official Idea prompt: a one-line scene description; the model writes the script. Required. After trimming whitespace, 1–3000 characters.
|
input.scriptoptional | string | Advanced only. The text to be spoken. Required. After trimming whitespace, 1–5000 characters. Multiline is supported; use `\n` for line breaks in JSON.
|
input.toneoptional | string | Advanced only, optional. Tone, rhythm, emotion, and setting. You can also describe accent and accompaniment style. After trimming whitespace, 0–1000 characters.
|
input.varietyoptional | integer | Advanced only, optional. Integer from `0` to `4`. Values:
|
input.vocalGenderoptional | string | Advanced only, optional. Vocal gender. Case-insensitive. Do not send `female` / `male`. Values: |
input.backgroundMusicoptional | boolean | Advanced only, optional. Whether to add background music. - `true`: On - `false`: Off |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "ai-music-api/speech",
"callBackUrl": "https://example.com/input.png",
"input": {
"customMode": false,
"prompt": "A short morning news intro about sunny weather"
}
}'Responses and errors
HTTP 200
Request succeeded. The task has been created; this does not mean the audio is ready.
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Request status code. Failed requests still return HTTP 200; always use this field: 200 means success, any other value means failure (see msg). Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limited; 422 validation failed (see Common 422 above); 500 the request could not be processed. Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID used to track status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)). |
data.recordIdoptional | string | Record ID. |
Task status and callbacks
For asynchronous tasks, keep the returned taskId. Query GET /api/v1/jobs/recordInfo?taskId=... or provide callBackUrl when creating the task. Only the account that created a task can access it or derive new resources from it.
A timeout can mean the submission was accepted. Inspect the existing request in your dashboard; do not create another task automatically. Callback delivery is retried and may arrive more than once. Deduplicate with X-VezAPI-Event-Id.
Files, logs and billing
Generated media normally follows a 14-day provider lifetime; uploaded files expire after 24 hours. Save the files you need before expiration. VezAPI streams registered files without keeping a permanent media library. Request logs are retained for two calendar months.
Credits are reserved before submission. Final deductions match actual discounted consumption one for one. Unknown usage pauses new paid requests. If available funds cannot cover final usage while protecting other reservations, settlement stays pending until funded; model usage cannot make the wallet negative. Time-based inputs require server-side metadata reads; a failed read prevents submission.
Send a request using your VezAPI key. Successful generations use your account credits.
/api/v1/jobs/createTaskYour response will appear here.
Suno API API pricing
Rates below are reference estimates; final deductions equal actual discounted consumption, one for one. At the standard pack rate, 1,000 credits ≈ $10. Larger packs reduce the effective credit price.
| Specification | Credits | Unit | USD reference |
|---|---|---|---|
| Suno, Boost Music Style | 0.4 | per request | $0.004 |
| Suno, Advanced Split | 20 | per request | $0.2 |
| Suno, TimeStamped Lyrics | 0.5 | per request | $0.005 |
| Suno, Cover Generate | 0 | per request | $0 |
| Suno, Generate Persona | 0 | per request | $0 |
| Suno, Generate Midi From Audio | 0 | per request | $0 |
| Suno, Generate sounds | 2.5 | per request | $0.025 |
| Suno, Mashup | 12 | per request | $0.12 |
| Suno, Replace Music Section | 5 | per request | $0.05 |
| Suno, Multi-Stem Separation, without stemName | 50 | per request | $0.5 |
| Suno, Vocal Separate | 10 | per request | $0.1 |
| Suno, convert-to-wav-format | 0.4 | per request | $0.004 |
| Suno, Generate Lyrics | 0.4 | per request | $0.004 |
| Suno, upload-and-cover-audio | 12.0 | per request | $0.12 |
| Suno, create-music-video | 2.0 | per request | $0.02 |
| Suno, Upload and Extend Audio | 12.0 | per request | $0.12 |
| Suno, add-instrumental | 12.0 | per request | $0.12 |
| Suno, Generate Music | 12.0 | per request | $0.12 |
| Suno, Extend Music | 12.0 | per request | $0.12 |
| Suno, add-vocals | 12.0 | per request | $0.12 |
| suno-voice-check-voice | 0 | per request | $0 |
| suno-voice-generate | 0 | per request | $0 |
| suno-voice-regenerate | 0 | per request | $0 |
| suno-voice-validate | 0 | per request | $0 |
| Suno, Generate Speech | 12.0 | per request | $0.12 |