Get API Key Get API
Docs

Continuation and extension

- Continue and extend an existing song from a given point in time.

  • Reference the source track: specified by task_id + audio_index, no need to record any extra id
  • Async task: submitting returns a task_id; poll GET /v1/music/tasks/:task_id for the result
Info

Source Audio Reference: No additional IDs are needed for tracks based on existing songs. Just pass task_id (the task ID from the previous run of this task) + audio_index (which result track in the data.result.music[] list, 1-based, default is 1).

Note

For extend, custom is optional and defaults to true. With custom=true, prompt supplies the continuation lyrics. Only an explicit custom=false makes gpt_description guide the continuation.

Request example

curl -X POST https://api.openveer.com/v1/music/generations/extend \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  --data '{
    "model": "suno",
    "task_id": "task_01ABC",
    "audio_index": 1,
    "continue_at": 120,
    "version": "v6",
    "prompt": "Continue the lyrics…"
  }'

Response example

{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K"
    }
  ]
}

Authorizations

Authorization string

All endpoints require authentication using a Bearer Token

Get an API Key:

Visit the API Key management page to get your API Key

Add the following to the request headers when using it:

Authorization: Bearer YOUR_API_KEY

Body

model string

Audio model. Currently pass suno (defaults to suno if omitted).

task_id string

Our task_id of the job that produced the source track. If missing or the source cannot be resolved, a 400 is returned at submission time.

audio_index integer

Selects a track from the source task's data.result.music[] array (1-based; default 1).

continue_at number

From which second should continuation begin, must be greater than or equal to 1 and less than the actual duration of the source audio track. Supports decimal seconds.

version string

Public version: v6 / v6-wild / v6-mini. Defaults to v6; omit this field when using custom_model_id.

custom_model_id string

The full UUID returned by the model-creation task. Mutually exclusive with version and persona_id.

custom boolean

true=continue with prompt lyrics; false=inspiration continuation. Omit to default to true.

prompt string

Lyrics for the extension. Takes effect when custom=true.

gpt_description string

inspiration prompt. Only effective when explicitly provided as custom=false, used to guide the direction of continuation.

title string

Title. Only takes effect when custom=true.

tags string

Style tags. Only takes effect when custom=true.

negative_tags string

Style tags to exclude. Only takes effect when custom=true.

vocal_gender string

Vocal gender: Male / Female. Works in both modes.

style_weight number

Style weight, 0.00–1.00 (out-of-range values return 400 directly at submission time). Only takes effect when custom=true.

weirdness number

Creativity weight, 0.00 – 1.00. Compatible with the old name weirdness_constraint; new requests should use weirdness.

audio_weight number

Audio weight, 0.00–1.00. Only takes effect when custom=true.

auto_lyrics boolean

true=rewrite the provided lyrics creatively. Only takes effect when custom=true.

persona_id string

Persona Style ID. Only applies when custom=true is used and mutually exclusive with custom_model_id.

duration_s integer

target generation duration, range 10-360 seconds. Only available when set as custom=true; actual duration will be based on the result.

variety string

Style variation: off / normal / high / extra / max. Optional.

max_mode boolean

Whether to enable Max mode. Enable it requires custom=true and charges at twice the normal price.

audio_format string

Output audio format: mp3 / m4a / wav.

Note

Result: This is an asynchronous task. After submission, you will get task_id and then poll GET /v1/music/tasks/{task_id} every 3–5 seconds until status becomes completed or failed (music generation typically takes 30–120s; during generation, status may be pending or processing, and progress is a whole number between 0 and 100 that does not guarantee fixed changes). Once completed, read the extended track's audio_url from data.result.music[]. If it fails, data.error.message will contain the reason, and the deducted amount will be automatically refunded.

Response

code integer

Response status code

data array
Returned data array
status string

Task status

  * submitted - Submitted
task_id string

Unique task identifier (used to poll GET /v1/music/tasks/{task_id} for the result)

This documentation is built and hosted on Mintlify, a developer documentation platform.