Skip to content
中文
Suno · Model API

Suno API Pricing

Suno API API with VezAPI. Explore model capabilities, credit pricing, request parameters, and integration examples.

Text to Music

Suno API API documentation

Integrate Suno API with your VezAPI key. The operations below share the same authentication and account balance.

Base URL: https://api.vezapi.com
Send Authorization: Bearer YOUR_VEZAPI_KEY. Use a unique Idempotency-Key for each submission; reuse it only when checking the same request.

add-instrumental

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/add-instrumental

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.upload_url
required
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.model
optional
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: "V6", "V6_MINI", "V6_WILD"

Default: "V6"

input.title
required
string

Title of the generated music. Required. Will be displayed in the player interface and file name.

input.negative_tags
required
string

Music styles or characteristics to exclude from the generated audio. Required. Used to avoid specific unwanted music elements.

maxLength: 200

input.tags
required
string

Music styles or tags to include in the generated music. Required. Defines the desired music style and characteristics.

maxLength: 1000

input.vocal_gender
optional
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: "m", "f"

input.style_weight
optional
number

Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.weirdness_constraint
optional
number

Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.audio_weight
optional
number

Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.lyrics
optional
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.

maxLength: 5000

input.variety
optional
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: 1

minimum: 0

maximum: 4

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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
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

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/add-vocals

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.prompt
optional
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.

maxLength: 5000

input.model
optional
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: "V6", "V6_MINI", "V6_WILD"

Default: "V6"

input.title
required
string

Music title. Required. Will be displayed in the player interface and file name.

input.negative_tags
required
string

Excluded music styles. Required. Used to avoid including specific styles or elements in the generated music.

maxLength: 200

input.style
required
string

Music style. Required. Such as jazz, electronic, classical and other music types.

maxLength: 1000

input.vocal_gender
optional
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: "m", "f"

input.style_weight
optional
number

Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.weirdness_constraint
optional
number

Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.audio_weight
optional
number

Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.upload_url
required
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.lyrics
optional
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.

maxLength: 5000

input.variety
optional
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: 1

minimum: 0

maximum: 4

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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
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

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/boost-music-style

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.content
required
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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID

data.param
optional
string

Request parameters

data.result
optional
string

The final generated music style text result.

data.creditsConsumed
optional
number

Credits consumed, up to 5 digits, up to 2 decimal places

data.creditsRemaining
optional
number

Credits remaining after this task

data.successFlag
optional
string

Execution result: 0-pending, 1-success, 2-failed

data.errorCode
optional
integer

Error code - **400**: Validation Error - Failed, The request parameters failed validation checks.

Values: 400

data.errorMsg
optional
string

Error message

data.createTime
optional
integer

Creation time (Unix timestamp in milliseconds)

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

convert-to-wav

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/convert-to-wav-format

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.task_id
required
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_id
required
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

ParameterTypeDescription & constraints
code
optional
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: 200, 400, 401, 402, 404, 409, 422, 429, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID for tracking task status

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

cover-suno

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/cover-generate

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.task_id
required
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

ParameterTypeDescription & constraints
code
optional
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: 200, 400, 401, 402, 404, 409, 422, 429, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

create-music-video

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/create-music-video

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.task_id
required
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_id
required
string

Unique identifier of the specific audio track to visualize. This ID is returned in the callBackUrl data after music generation completes.

input.author
optional
string

Artist or creator name to display as a signature on the video cover. Maximum 50 characters. This creates attribution for the music creator.

maxLength: 50

input.domain_name
optional
string

Website or brand to display as a watermark at the bottom of the video. Maximum 50 characters. Useful for promotional branding or attribution.

maxLength: 50

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

ParameterTypeDescription & constraints
code
optional
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: 200, 400, 401, 402, 404, 409, 422, 429, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

extend-music

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/extend

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.audio_id
required
string

Unique identifier of the audio track to extend. Required for all extension requests.

input.prompt
optional
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`.

maxLength: 5000

input.style
optional
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.

maxLength: 1000

input.title
optional
string

Title for the extended music track. Optional. - Maximum 100 characters. - Displayed in player interfaces and filenames.

maxLength: 100

input.continue_at
optional
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.model
required
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: "V6", "V6_WILD", "V6_MINI"

input.negative_tags
optional
string

Music styles or traits to exclude from the extended audio. Optional. Use to avoid specific undesired characteristics.

input.vocal_gender
optional
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: "m", "f"

input.style_weight
optional
number

Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.weirdness_constraint
optional
number

Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.audio_weight
optional
number

Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.persona_id
optional
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_model
optional
string

Values: "style_persona", "voice_persona"

input.instrumental
optional
boolean

Indicates whether it is an instrumental track. If true, passing the `lyrics`, `prompt`, and `vocal_gender` parameters is prohibited.

Default: false

input.lyrics
optional
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`.

maxLength: 5000

input.variety
optional
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: 1

minimum: 0

maximum: 4

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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
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

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/generate-lyrics

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.prompt
required
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

ParameterTypeDescription & constraints
code
optional
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: 200, 400, 401, 404, 405, 413, 429, 430, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID for tracking task status

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

generate-mashup

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/mashup

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.upload_url_list
required
array

Array of audio file URLs to mashup. Provide 2 audio URLs. Only the first 2 are used. Each URL must be publicly accessible.

minItems: 2

input.prompt
optional
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.

maxLength: 5000

input.style
required
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.

maxLength: 1000

input.title
required
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.model
required
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: "V6", "V6_WILD", "V6_MINI"

input.vocal_gender
optional
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: "m", "f"

input.style_weight
optional
number

Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.weirdness_constraint
optional
number

Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.audio_weight
optional
number

Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.duration
optional
integer

Default: 20

minimum: 10

maximum: 360

input.lyrics
optional
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.

maxLength: 5000

input.variety
optional
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: 1

minimum: 0

maximum: 4

input.persona_id
optional
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_model
optional
string

Values: "style_persona", "voice_persona"

Default: "style_persona"

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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
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

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/generate-midi-from-audio

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.task_id
required
string

Task ID from a completed vocal separation. This should be the task_id returned from the Vocal & Instrument Stem Separation endpoint.

input.audio_id
optional
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

ParameterTypeDescription & constraints
code
optional
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).

msg
optional
string

Response message

data
optional
object

Response data containing task information

data.taskId
optional
string

Unique identifier for the MIDI generation task. Use this to query task status or receive callBackUrl results.

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

generate-music

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/generate

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.prompt
optional
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.style
optional
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.title
optional
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_mode
required
boolean

Determines whether advanced parameter customization is enabled. - If `true`: Allows detailed control - If `false`: Simplified mode

input.instrumental
required
boolean

Whether to generate instrumental music (no vocals). See Parameter Details for the fields required in each mode.

input.model
required
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: "V6", "V6_MINI", "V6_WILD"

input.negative_tags
optional
string

Music styles or traits to exclude from the generated audio. Optional. Use to avoid specific styles.

input.vocal_gender
optional
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: "m", "f"

input.style_weight
optional
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.

minimum: 0

maximum: 1

input.weirdness_constraint
optional
number

Only available when Custom Mode (`custom_mode: true`) is enabled. Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.audio_weight
optional
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

minimum: 0

maximum: 1

input.persona_id
optional
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_model
optional
string

Values: "style_persona", "voice_persona"

input.duration
optional
number

minimum: 10

maximum: 360

input.image_urls
optional
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`

maxItems: 5

input.variety
optional
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: 1

minimum: 0

maximum: 4

input.lyrics
optional
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_urls
optional
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_urls
optional
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

maxItems: 1

input.midi_urls
optional
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`

maxItems: 1

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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
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

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/generate-persona

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.task_id
required
string

Unique identifier of the original music generation task. Generated by model ai-music-api/generate or ai-music-api/extend.

input.audio_id
required
string

Unique identifier of the audio track to create Persona for. This ID is returned in the callBackUrl data after music generation completes.

input.name
required
string

Name for the Persona. A descriptive name that captures the essence of the musical style or character.

input.description
required
string

Detailed description of the Persona's musical characteristics, style, and personality. Be specific about genre, mood, instrumentation, and vocal qualities.

input.vocal_start
optional
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: 0

minimum: 0

input.vocal_end
optional
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: 30

minimum: 0

input.style
optional
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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.persona_id
optional
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.name
optional
string

Name of the Persona as provided in the request.

data.description
optional
string

Description of the Persona's musical characteristics, style, and personality as provided in the request.

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

generate-sounds

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/sounds

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.prompt
required
string

Description of the sound (max 500 characters).

input.model
required
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: "V6", "V6_WILD", "V6_MINI"

input.sound_loop
optional
boolean

Whether the generated sound loops seamlessly.

Default: false

input.sound_tempo
optional
integer

Tempo in BPM (1–300). Omit for automatic tempo.

Default: null

minimum: 1

maximum: 300

input.sound_key
optional
string

Musical key. Default "Any" (automatic).

Values: "Any", "Cm", "C#m", "Dm", "D#m", "Em", "Fm", "F#m", "Gm", "G#m", "Am", "A#m", "Bm", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"

Default: "Any"

input.grab_lyrics
optional
boolean

Whether to capture the lyrics subtitles Will the interface be called after completion to obtain the lyrics subtitles?

Default: false

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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 422, 429, 433, 455, 500, 501, 505

msg
optional
string

Response message, error description upon failure

data
required
object
data.taskId
required
string

The task ID can be used with the "Get Task Details" endpoint to query the task status.

get-timestamped-lyrics

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/timeStamped-lyrics

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.task_id
required
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_id
required
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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 404, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.code
optional
integer

Status code of the result. 200 means success.

data.msg
optional
string

Result message.

data.data
optional
object
data.data.alignedWords
optional
array

List of aligned lyrics words

data.data.alignedWords[].word
optional
string

Lyrics word

data.data.alignedWords[].success
optional
boolean

Whether lyrics word is successfully aligned

data.data.alignedWords[].startS
optional
number

Word start time (seconds)

data.data.alignedWords[].endS
optional
number

Word end time (seconds)

data.data.alignedWords[].palign
optional
integer

Alignment parameter

data.data.waveformData
optional
array

Waveform data, used for audio visualization

data.data.hootCer
optional
number

Lyrics alignment accuracy score

data.data.isStreamed
optional
boolean

Whether it's streaming audio

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

recovery-audio

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/suno-recovery-audio

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for generating the task

input.task_id
required
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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 422, 429, 433, 455, 500, 501, 505

msg
optional
string

Response message, error description upon failure

data
required
object
data.taskId
required
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

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/replace-section

ParameterTypeDescription & constraints
model
required
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: "ai-music-api/replace-section"

callBackUrl
optional
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

input
required
object

Input parameters for the music section replacement task.

input.prompt
required
string

The lyrics after replacement. Required.

input.tags
required
string

Style tags for the music, such as jazz or electronic. Required.

input.title
required
string

The title of the music. Required.

input.negative_tags
optional
string

Music styles to exclude, used to prevent specific stylistic elements from appearing in the replacement section.

input.infill_start_s
required
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.

minimum: 0

input.infill_end_s
required
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.

minimum: 0

input.full_lyrics
required
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.lyrics
optional
string

Lyrics for the replaced segment. Optional. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters.

maxLength: 5000

input.vocal_gender
optional
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: "m", "f"

input.style_weight
optional
number

Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.weirdness_constraint
optional
number

Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.audio_weight
optional
number

Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.variety
optional
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: 1

minimum: 0

maximum: 4

input.persona_id
optional
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_model
optional
string

Values: "style_persona", "voice_persona"

Default: "style_persona"

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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
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

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/separate-vocals

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task. Provide either task_id + audio_id, or audio_url alone.

input.type
optional
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: "separate_vocal", "split_stem", "split_stem_advanced"

Default: "separate_vocal"

input.stem_name
optional
string

Only used when `type` is `split_stem_advanced` to request a specific stem track/instrument name.

Values: "Lead Vocal", "Drum Kit", "Kick", "Snare", "Risers", "Bass", "Backing Vocals", "Piano", "Electric Guitar", "Percussion", "String Section", "Synth", "Acoustic Guitar", "Sound Effects", "Synth Pad", "Synth Bass", "Guitar", "Brass Section", "Organ", "Electronic Drum Kit", "Lead Electric Guitar", "Synth Keys", "Rhythm Electric Guitar", "Electric Piano", "Upright Bass", "Keyboards", "Distorted Electric Guitar", "Synth Strings", "Synth Lead", "Woodwinds", "Rhythm Acoustic Guitar", "Flute", "Harp", "Tambourine", "Trumpet", "Arpeggiator", "Accordion", "Fiddle", "Pedal Steel Guitar", "Synth Voice", "Violin", "Digital Piano", "Synth Brass", "Mandolin", "Choir", "Banjo", "Bells", "Clarinet", "Tenor Saxophone", "Trombone", "Shaker", "French Horn", "Glockenspiel", "Electric Bass", "Cello", "Timpani", "Harmonica", "Marimba", "Vibraphone", "Lap Steel Guitar", "Saxophone", "Orchestra", "Horns", "Cymbals", "Hand Clap", "Oboe", "Celesta", "Congas", "Drone", "Alto Saxophone", "Double Bass", "Ukulele", "Harpsichord", "Baritone Saxophone", "Xylophone", "Tuba", "Bass Guitar", "Whistle", "Lead Guitar", "Rhodes", "808", "Bongos", "Bassoon", "Cowbell", "Viola", "Sitar", "Steel Drums", "Piccolo", "Theremin", "Bagpipes", "Hi-Hat", "Music Box", "Melodica", "Tabla", "Koto", "Djembe", "Taiko", "Didgeridoo"

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

ParameterTypeDescription & constraints
code
optional
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: 200, 400, 401, 402, 404, 409, 422, 429, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID for tracking task status

HTTP 500

Server error.

ParameterTypeDescription & constraints
code
required
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

msg
required
string

Response message, error description when failed

data
required
object

suno-voice-check-voice

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/check-voice

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

input
required
object

Input parameters for the generation task

input.task_id
required
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.

ParameterTypeDescription & constraints
code
required
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).

msg
required
string
data
required
object
data.isAvailable
required
boolean

suno-voice-generate

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/create-voice

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.task_id
required
string

Task ID

input.verify_url
required
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_name
optional
string

Voice name

input.description
optional
string

Voice description

input.style
optional
string

Voice style

input.singer_skill_level
optional
string

Singer skill level. Supported: beginner, intermediate, advanced, professional

Values: "beginner", "intermediate", "advanced", "professional"

Default: "beginner"

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.

ParameterTypeDescription & constraints
code
required
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).

msg
required
string
data
required
object
data.taskId
required
string

Task ID

suno-voice-regenerate

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/regenerate-phrase

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.task_id
required
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.

ParameterTypeDescription & constraints
code
required
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).

msg
required
string
data
required
object
data.taskId
required
string

suno-voice-validate

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/validation-phrase

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.voice_url
required
string

The original recording URL uploaded by the user [Required]

input.vocal_start_s
required
integer

Start time (in seconds) for extracting the vocal segment [Required]

input.vocal_end_s
required
integer

End time (in seconds) for extracting the vocal segment, must be greater than vocal_start_s [Required]

input.language
optional
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.

ParameterTypeDescription & constraints
code
required
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).

msg
required
string
data
required
object
data.taskId
required
string

Task ID

upload-and-cover-audio

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/upload-and-cover-audio

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.upload_url
optional
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.prompt
optional
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`.

maxLength: 5000

input.style
optional
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

maxLength: 1000

input.title
optional
string

The title of the generated music track. Optional. - Maximum 80 characters. - Displayed in player interfaces and filenames.

maxLength: 80

input.instrumental
required
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.model
required
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: "V6", "V6_WILD", "V6_MINI"

input.negative_tags
optional
string

Music styles or traits to exclude from the generated audio. - Optional. Use to avoid specific styles. Example: "Heavy Metal, Upbeat Drums"

input.vocal_gender
optional
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: "m", "f"

input.style_weight
optional
number

Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.weirdness_constraint
optional
number

Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.audio_weight
optional
number

Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.persona_id
optional
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_model
optional
string

Persona model: style_persona or voice_persona. Available for V6, V6_MINI and V6_WILD.

Values: "voice_persona", "style_persona"

input.duration
optional
integer

minimum: 10

maximum: 360

input.lyrics
optional
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`.

maxLength: 5000

input.variety
optional
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: 1

minimum: 0

maximum: 4

input.task_id
optional
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_id
optional
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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID for tracking task status

upload-and-extend-audio

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/upload-and-extend-audio

ParameterTypeDescription & constraints
model
required
string

The model name to use for generation. Required field.

callBackUrl
optional
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

input
required
object

Input parameters for the generation task

input.upload_url
required
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.instrumental
optional
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: false

input.prompt
optional
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`.

maxLength: 5000

input.style
optional
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

maxLength: 1000

input.title
optional
string

Music title. Optional. - Maximum 100 characters. - Displayed in player interfaces and filenames.

maxLength: 100

input.continue_at
optional
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.model
required
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: "V6", "V6_WILD", "V6_MINI"

input.negative_tags
optional
string

Music styles to exclude from generation

input.vocal_gender
optional
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: "m", "f"

input.style_weight
optional
number

Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.weirdness_constraint
optional
number

Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.audio_weight
optional
number

Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.

minimum: 0

maximum: 1

input.persona_id
optional
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_model
optional
string

Values: "style_persona", "voice_persona"

input.lyrics
optional
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`.

maxLength: 5000

input.variety
optional
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: 1

minimum: 0

maximum: 4

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

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID for tracking task status

Generate Speech

POST/api/v1/jobs/createTask

Model IDs: ai-music-api/speech

ParameterTypeDescription & constraints
model
required
string

Model identifier. Always `ai-music-api/speech`.

Values: "ai-music-api/speech"

callBackUrl
optional
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)

input
required
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.customMode
required
boolean

Mode switch. Required. `false` is Simple, `true` is Advanced.

input.prompt
optional
string

Simple only. Official Idea prompt: a one-line scene description; the model writes the script. Required. After trimming whitespace, 1–3000 characters.

minLength: 1

maxLength: 3000

input.script
optional
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.

minLength: 1

maxLength: 5000

input.tone
optional
string

Advanced only, optional. Tone, rhythm, emotion, and setting. You can also describe accent and accompaniment style. After trimming whitespace, 0–1000 characters.

maxLength: 1000

input.variety
optional
integer

Advanced only, optional. Integer from `0` to `4`.

Values: 0, 1, 2, 3, 4

minimum: 0

maximum: 4

input.vocalGender
optional
string

Advanced only, optional. Vocal gender. Case-insensitive. Do not send `female` / `male`.

Values: "f", "m"

input.backgroundMusic
optional
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.

ParameterTypeDescription & constraints
code
optional
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: 200, 401, 402, 404, 409, 422, 429, 451, 455, 500

msg
optional
string

Error message when code != 200

data
optional
object
data.taskId
optional
string

Task ID used to track status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see [Get Task Details](/market/common/get-task-detail)).

data.recordId
optional
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.

Open full documentation →

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.

SpecificationCreditsUnitUSD reference
Suno, Boost Music Style0.4per request$0.004
Suno, Advanced Split20per request$0.2
Suno, TimeStamped Lyrics0.5per request$0.005
Suno, Cover Generate0per request$0
Suno, Generate Persona0per request$0
Suno, Generate Midi From Audio0per request$0
Suno, Generate sounds2.5per request$0.025
Suno, Mashup12per request$0.12
Suno, Replace Music Section5per request$0.05
Suno, Multi-Stem Separation, without stemName50per request$0.5
Suno, Vocal Separate10per request$0.1
Suno, convert-to-wav-format0.4per request$0.004
Suno, Generate Lyrics0.4per request$0.004
Suno, upload-and-cover-audio12.0per request$0.12
Suno, create-music-video2.0per request$0.02
Suno, Upload and Extend Audio12.0per request$0.12
Suno, add-instrumental12.0per request$0.12
Suno, Generate Music12.0per request$0.12
Suno, Extend Music12.0per request$0.12
Suno, add-vocals12.0per request$0.12
suno-voice-check-voice0per request$0
suno-voice-generate0per request$0
suno-voice-regenerate0per request$0
suno-voice-validate0per request$0
Suno, Generate Speech12.0per request$0.12