Skip to main content
POST
  1. After submission, a task_id will be returned. If you provided a callback_url, when the task status becomes finished or failed, a POST request will be sent to the callback_url.
  2. Regardless of whether callback_url is provided, you can retrieve the response result through the unified Query Music Detail endpoint.
Upload Cover supports persona_model (style_persona or voice_persona) with persona_id only in Custom Mode on V5, V5_5, V6, V6_MINI, or V6_WILD. It also supports integer duration from 10–360 only when custom_mode: true and mv set to V5_5, V6, V6_MINI, or V6_WILD.

Usage Guide

  • This endpoint transforms an uploaded audio track into a new style while preserving the original melody
  • Provide upload_url, or task_id together with audio_id. Do not send both sources
  • The original melody and structure are maintained while applying new musical characteristics

Parameter Details

  • Audio Upload Requirement:
    • The uploaded audio must not exceed 8 minutes in length
    • Note: For the V4_5ALL model, the uploaded audio must not exceed 1 minute in length
    • Provide a valid URL pointing to your audio file via upload_url
  • In Custom Mode ( custom_mode: true ):
    • style and title are required
    • prompt is required if instrumental is false
    • Character limits vary by model:
      • V4: prompt 3000 characters, style 200 characters, title 80 characters
      • V4_5 & V4_5PLUS: prompt 5000 characters, style 1000 characters, title 100 characters
      • V4_5ALL: prompt 5000 characters, style 1000 characters, title 80 characters
      • V5: prompt 5000 characters, style 1000 characters, title 100 characters
      • V5_5: prompt 5000 characters, style 1000 characters, title 100 characters
      • V6, V6_MINI, and V6_WILD: prompt 5000 characters, style 1000 characters, title 100 characters
  • In Non-custom Mode ( custom_mode: false ):
    • prompt is required to describe the desired transformation (max 500 characters)
    • style and title should be left empty

Developer Notes

  • Ensure your audio URL is publicly accessible and the file is under 8 minutes (1 minute for V4_5ALL)
  • For best results, use high-quality source audio with clear melody lines
  • The audio_weight parameter can help balance between preserving the original and applying the new style

Optional parameters

  • negative_tags (string): Music styles or characteristics to exclude from the cover.
  • vocal_gender (string): Vocal gender preference. Use m for male, f for female. Note: This parameter increases the probability but cannot guarantee adherence.
  • style_weight (number): Strength of adherence to the new style. Range 0-1, up to 2 decimals.
  • weirdness_constraint (number): Controls creative deviation. Range 0-1, up to 2 decimals.
  • audio_weight (number): Balance weight for preserving original audio features. Range 0-1, up to 2 decimals.
  • persona_id (string): Persona ID to apply to the covered track. Only available when custom_mode: true with V5, V5_5, V6, V6_MINI, or V6_WILD. How to generate persona_id, visit generate-persona.
  • persona_model (string): style_persona or voice_persona. Requires persona_id, custom_mode: true, and V5, V5_5, V6, V6_MINI, or V6_WILD.

Authorizations

Authorization
string
header
required

All API endpoints require Bearer Token authentication.

Create an API key: sign in to PoYo, open Dashboard → API Key at poyo.ai/dashboard/api-key, and click to create a key.

Add it to the request header:

Body

application/json
model
enum<string>
required

API model identifier.

Must be upload-and-cover-audio for this endpoint.

Available options:
upload-and-cover-audio
Example:

"upload-and-cover-audio"

input
object
required

Input parameters for audio cover generation

callback_url
string<uri>

Webhook callback URL for result notifications.

Endpoint that receives task completion updates.

Example:

"https://your-domain.com/callback"

Response

200 - application/json

Task submitted successfully

code
enum<integer>
required

Business status code. 200 means success; any other value means the request failed. Always check this field: some validation errors return HTTP 200 with code: 400 in the body.

  • 200: Success
  • 400: Invalid request parameters
  • 401: Missing or invalid API key
  • 402: Insufficient credits
  • 403: Permission denied
  • 404: Resource not found
  • 408: Request timeout
  • 429: Rate limit exceeded
  • 500: Internal server error
  • 502: Upstream service error
  • 503: Service unavailable

See Error Codes for details.

Available options:
200,
400,
401,
402,
403,
404,
408,
429,
500,
502,
503
Example:

200

data
object
required