POST /v2/upload-cover/generate
Upload your own audio file and generate an AI cover version with a new style, lyrics, and vocal settings — while retaining the original melody. Supports both custom mode (full control over lyrics, style, title) and non-custom mode (simple prompt-based generation). Audio file must not exceed 8 minutes in length.
Tips
Two Generation Modes:
- Non-Custom Mode (Recommended for beginners): Set
custom_modetofalse. Onlyupload_urlandpromptare required. Lyrics will be auto-generated based on the prompt (max 500 chars). - Custom Mode: Set
custom_modetotrue. You must provideupload_url,prompt(used as exact lyrics),style, andtitle. Ifmake_instrumentalistrue,promptcan be omitted.
Image to Music (Non-Custom Mode only): Pass up to 5 publicly accessible image URLs in image_urls to steer the cover with the mood of the pictures. Adds 1 credit per request; silently ignored in Custom Mode.
Character Limits (same for every model): non-custom prompt 500, custom prompt 5000, style 1000, title 100. Longer values are truncated instead of failing.
Models & Credits: chirp-v6 = 12, chirp-v6-mini = 10, chirp-v6-wild = 12. Legacy identifiers stay valid at their historical price: chirp-v5 / chirp-v5-5 (12) are served by chirp-v6; chirp-v4-0 (8), chirp-v4-5 / chirp-v4-5-plus / chirp-v4-5-all (10) are served by chirp-v6-mini. model_name in results reports the model actually used.
Developer Notes:
- The uploaded audio must not exceed 8 minutes.
- Use the Status API to poll for task completion (every 5–10 seconds).
- You may also configure a
callback_urlto receive results via webhook. - Requests rejected during validation return
422(fix the parameters) or500(temporary, retry later) withdata.refunded; tasks that fail after being accepted are markedFAILEDand refunded automatically.
Request Headers
| Name | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer token for authentication |
| Content-Type | Yes | application/json |
Bearer token for authentication
application/json
Request Body
Request body supports two modes: Non-Custom Mode (simple) or Custom Mode (full control)
Common Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| upload_url | string | Yes | URL of the audio file to cover. Must be a publicly accessible URL. The audio must not exceed 8 minutes. | https://storage.example.com/my-song.mp3 |
| model | string | Yes | Model to use. Current options: 'chirp-v6' (12 credits), 'chirp-v6-mini' (10 credits), 'chirp-v6-wild' (12 credits). Legacy identifiers 'chirp-v4-0' (8), 'chirp-v4-5' / 'chirp-v4-5-plus' / 'chirp-v4-5-all' (10), 'chirp-v5' / 'chirp-v5-5' (12) remain accepted at their historical price and are served by chirp-v6 (chirp-v5 / chirp-v5-5) or chirp-v6-mini (all others). Unknown values return 422. | chirp-v6-mini |
| custom_mode | boolean | No | Enable custom mode for full control over lyrics, style, and title. Default: false. When false, only prompt and upload_url are needed. | false |
| image_urls | string[] | No | Image to Music. Up to 5 publicly accessible image URLs (JPEG, JPG, PNG or WEBP, max 10MB each) that steer the mood of the cover; prompt becomes optional when images are provided. Adds 1 credit per request. Non-custom mode only; silently ignored in custom mode. | ["https://cdn.example.com/sunset-beach.jpg"] |
| make_instrumental | boolean | No | Generate instrumental music without vocals. When true in custom mode, prompt is not required. | false |
| prompt | string | No | In non-custom mode: a text description of desired output (max 500 chars, lyrics auto-generated). In custom mode: exact lyrics to be sung (max 5000 chars, longer input is truncated). Required unless make_instrumental is true or image_urls is provided. | A calm and relaxing piano track with soft melodies |
| style | string | No | Music style/genre (custom mode only). Max length: 1000 chars (longer input is truncated). Leave empty in non-custom mode. | pop, upbeat, electronic |
| title | string | No | Song title (custom mode only). Max length: 100 chars (longer input is truncated). Leave empty in non-custom mode. | Summer Cover |
| tags | string | No | Negative tags — music styles or traits to exclude from the generated audio. Custom mode only. | Heavy Metal, Upbeat Drums |
| gender | string | No | Vocal gender preference. Use 'male' or 'female'. Only effective in custom mode. Note: can only increase the probability, not guarantee. | female |
| style_weight | number | No | Strength of adherence to style. Range 0–1, up to 2 decimals. | 0.65 |
| weirdness_constraint | number | No | Controls creative deviation. Range 0–1, up to 2 decimals. | 0.65 |
| audio_weight | number | No | Balance weight for audio features. Range 0–1, up to 2 decimals. | 0.65 |
| callback_url | string | No | URL to receive webhook notifications when the task completes. Your callback endpoint should accept POST requests with JSON payload. | https://api.example.com/webhook/upload-cover |
Responses
{
"code": 200,
"message": "success",
"workId": "upcov1a2b3c4d5e6f7890abcdef",
"data": {
"task_id": "upcov1a2b3c4d5e6f7890abcdef"
}
}Code Examples
curl -X POST "https://aimusicapi.org/api/v2/upload-cover/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "chirp-v6-mini",
"upload_url": "https://storage.example.com/my-song.mp3",
"custom_mode": false,
"make_instrumental": false,
"prompt": "A calm and relaxing piano cover with soft melodies"
}'GET /v2/upload-cover/status?task_id=xxx
Check the status and results of an Upload & Cover task. Poll this endpoint every 5–10 seconds until the task completes or fails. Credits are automatically refunded if the task fails.
Tips
Status Types:
- IN_PROGRESS: Task is still being processed. Keep polling.
- SUCCESS: Task completed successfully.
response_datacontains the generated audio URLs. - FAILED: Task failed (e.g., content moderation violation). Credits are refunded automatically.
- ERROR: An error occurred during processing.
Failure Detection: Check fail_message and error_message fields in the response data for error details like "Does Not Meet Guidelines".
Poll this endpoint every 5–10 seconds until generation completes or fails.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| task_id | string | Yes | The unique task ID returned from the generate endpoint. |
The unique task ID returned from the generate endpoint.
Responses
{
"code": 200,
"message": "success",
"data": {
"type": "IN_PROGRESS",
"request_body": {
"model": "chirp-v6-mini",
"upload_url": "https://storage.example.com/my-song.mp3",
"custom_mode": false,
"prompt": "A calm and relaxing piano cover"
},
"response_data": null,
"created_at": "2026-02-07T12:00:00.000Z"
}
}Code Examples
curl -X GET "https://aimusicapi.org/api/v2/upload-cover/status?task_id=upcov1a2b3c4d5e6f7890abcdef" \
-H "Authorization: Bearer YOUR_API_KEY"POST /v2/upload-cover/generate
Upload your own audio file and generate an AI cover version with a new style, lyrics, and vocal settings — while retaining the original melody. Supports both custom mode (full control over lyrics, style, title) and non-custom mode (simple prompt-based generation). Audio file must not exceed 8 minutes in length.
Tips
Two Generation Modes:
- Non-Custom Mode (Recommended for beginners): Set
custom_modetofalse. Onlyupload_urlandpromptare required. Lyrics will be auto-generated based on the prompt (max 500 chars). - Custom Mode: Set
custom_modetotrue. You must provideupload_url,prompt(used as exact lyrics),style, andtitle. Ifmake_instrumentalistrue,promptcan be omitted.
Image to Music (Non-Custom Mode only): Pass up to 5 publicly accessible image URLs in image_urls to steer the cover with the mood of the pictures. Adds 1 credit per request; silently ignored in Custom Mode.
Character Limits (same for every model): non-custom prompt 500, custom prompt 5000, style 1000, title 100. Longer values are truncated instead of failing.
Models & Credits: chirp-v6 = 12, chirp-v6-mini = 10, chirp-v6-wild = 12. Legacy identifiers stay valid at their historical price: chirp-v5 / chirp-v5-5 (12) are served by chirp-v6; chirp-v4-0 (8), chirp-v4-5 / chirp-v4-5-plus / chirp-v4-5-all (10) are served by chirp-v6-mini. model_name in results reports the model actually used.
Developer Notes:
- The uploaded audio must not exceed 8 minutes.
- Use the Status API to poll for task completion (every 5–10 seconds).
- You may also configure a
callback_urlto receive results via webhook. - Requests rejected during validation return
422(fix the parameters) or500(temporary, retry later) withdata.refunded; tasks that fail after being accepted are markedFAILEDand refunded automatically.
Request Headers
| Name | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer token for authentication |
| Content-Type | Yes | application/json |
Bearer token for authentication
application/json
Request Body
Request body supports two modes: Non-Custom Mode (simple) or Custom Mode (full control)
Common Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| upload_url | string | Yes | URL of the audio file to cover. Must be a publicly accessible URL. The audio must not exceed 8 minutes. | https://storage.example.com/my-song.mp3 |
| model | string | Yes | Model to use. Current options: 'chirp-v6' (12 credits), 'chirp-v6-mini' (10 credits), 'chirp-v6-wild' (12 credits). Legacy identifiers 'chirp-v4-0' (8), 'chirp-v4-5' / 'chirp-v4-5-plus' / 'chirp-v4-5-all' (10), 'chirp-v5' / 'chirp-v5-5' (12) remain accepted at their historical price and are served by chirp-v6 (chirp-v5 / chirp-v5-5) or chirp-v6-mini (all others). Unknown values return 422. | chirp-v6-mini |
| custom_mode | boolean | No | Enable custom mode for full control over lyrics, style, and title. Default: false. When false, only prompt and upload_url are needed. | false |
| image_urls | string[] | No | Image to Music. Up to 5 publicly accessible image URLs (JPEG, JPG, PNG or WEBP, max 10MB each) that steer the mood of the cover; prompt becomes optional when images are provided. Adds 1 credit per request. Non-custom mode only; silently ignored in custom mode. | ["https://cdn.example.com/sunset-beach.jpg"] |
| make_instrumental | boolean | No | Generate instrumental music without vocals. When true in custom mode, prompt is not required. | false |
| prompt | string | No | In non-custom mode: a text description of desired output (max 500 chars, lyrics auto-generated). In custom mode: exact lyrics to be sung (max 5000 chars, longer input is truncated). Required unless make_instrumental is true or image_urls is provided. | A calm and relaxing piano track with soft melodies |
| style | string | No | Music style/genre (custom mode only). Max length: 1000 chars (longer input is truncated). Leave empty in non-custom mode. | pop, upbeat, electronic |
| title | string | No | Song title (custom mode only). Max length: 100 chars (longer input is truncated). Leave empty in non-custom mode. | Summer Cover |
| tags | string | No | Negative tags — music styles or traits to exclude from the generated audio. Custom mode only. | Heavy Metal, Upbeat Drums |
| gender | string | No | Vocal gender preference. Use 'male' or 'female'. Only effective in custom mode. Note: can only increase the probability, not guarantee. | female |
| style_weight | number | No | Strength of adherence to style. Range 0–1, up to 2 decimals. | 0.65 |
| weirdness_constraint | number | No | Controls creative deviation. Range 0–1, up to 2 decimals. | 0.65 |
| audio_weight | number | No | Balance weight for audio features. Range 0–1, up to 2 decimals. | 0.65 |
| callback_url | string | No | URL to receive webhook notifications when the task completes. Your callback endpoint should accept POST requests with JSON payload. | https://api.example.com/webhook/upload-cover |
Responses
{
"code": 200,
"message": "success",
"workId": "upcov1a2b3c4d5e6f7890abcdef",
"data": {
"task_id": "upcov1a2b3c4d5e6f7890abcdef"
}
}Code Examples
curl -X POST "https://aimusicapi.org/api/v2/upload-cover/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "chirp-v6-mini",
"upload_url": "https://storage.example.com/my-song.mp3",
"custom_mode": false,
"make_instrumental": false,
"prompt": "A calm and relaxing piano cover with soft melodies"
}'GET /v2/upload-cover/status?task_id=xxx
Check the status and results of an Upload & Cover task. Poll this endpoint every 5–10 seconds until the task completes or fails. Credits are automatically refunded if the task fails.
Tips
Status Types:
- IN_PROGRESS: Task is still being processed. Keep polling.
- SUCCESS: Task completed successfully.
response_datacontains the generated audio URLs. - FAILED: Task failed (e.g., content moderation violation). Credits are refunded automatically.
- ERROR: An error occurred during processing.
Failure Detection: Check fail_message and error_message fields in the response data for error details like "Does Not Meet Guidelines".
Poll this endpoint every 5–10 seconds until generation completes or fails.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| task_id | string | Yes | The unique task ID returned from the generate endpoint. |
The unique task ID returned from the generate endpoint.
Responses
{
"code": 200,
"message": "success",
"data": {
"type": "IN_PROGRESS",
"request_body": {
"model": "chirp-v6-mini",
"upload_url": "https://storage.example.com/my-song.mp3",
"custom_mode": false,
"prompt": "A calm and relaxing piano cover"
},
"response_data": null,
"created_at": "2026-02-07T12:00:00.000Z"
}
}Code Examples
curl -X GET "https://aimusicapi.org/api/v2/upload-cover/status?task_id=upcov1a2b3c4d5e6f7890abcdef" \
-H "Authorization: Bearer YOUR_API_KEY"