---
title: "create / extend / cover / remaster / add vocals / add instrumental"
method: POST
path: "/api/v1/sonic/create"
tags: ["sonic"]
---

# create / extend / cover / remaster / add vocals / add instrumental

`POST /api/v1/sonic/create`

## Request

- Base URL: `https://api.musicapi.ai`
- URL: `https://api.musicapi.ai/api/v1/sonic/create`
- Auth: HTTP bearer

Unified endpoint for creating, extending, and covering music. The operation is determined by the `task_type` parameter.

**Credits cost: 20** per generation call (`create_music`, description mode, `cover_music`, `persona_music`) on every model. `extend_music`, `remaster`, `add_vocals` and `add_instrumental` cost 15, and `concat_music` costs 2. `persona_music` with `max_mode: true` costs 40.

Suno's v6 release on 2026-09-09 did not change any `mv` value here — see [Sonic Instructions](sonic-instructions) and the [API Changelog](doc-9411955).

## Request body

- object
  - `task_type` 'create_music' | 'extend_music' | 'cover_music' | 'concat_music' | 'persona_music' | 'remaster' | 'add_instrumental' | 'add_vocals': Operation type. Default is "create_music" if not specified.
  - `custom_mode` boolean, required: true = custom lyrics mode (requires prompt), false = AI description mode (requires gpt_description_prompt). Not needed for concat_music.
  - `mv` 'sonic-v6' | 'sonic-v6-wild' | 'sonic-v6-mini', required: Music model version. Not needed for concat_music. Suno retired v3.5 through v5.5 on 2026-09-09 and maps every retired id onto v6, so `sonic-v3-5`, `sonic-v4`, `sonic-v4-5`, `sonic-v4-5-plus`, `sonic-v5` and `sonic-v5-5` are still accepted and run v6 — existing integrations need no change.
  - `prompt` string: Song lyrics with structure tags [Verse], [Chorus], [Bridge], [Outro]. Required when custom_mode=true . Max 5000 chars.
  - `gpt_description_prompt` string: AI description of desired music. Required when custom_mode=false. Max 400 chars.
  - `title` string: Song title. Max 80 characters.
  - `tags` string: Music style tags (comma-separated). Max 1000 chars.
  - `negative_tags` string: Tags to avoid (comma-separated).
  - `make_instrumental` boolean: true = generate instrumental without vocals.
  - `auto_lyrics` boolean: true = AI generates lyrics,title,tags from prompt. Requires custom_mode=true.
  - `continue_clip_id` string: Source clip_id. Required for extend_music, cover_music, concat_music.
  - `continue_at` number: Timestamp (seconds) to continue from. Required for extend_music.
  - `persona_id` string: Virtual singer ID from create-persona. Required for persona_music.
  - `audio_weight` number: Reference audio influence (0-1). For **cover_music**: how closely the result follows the original audio. For **persona_music**: how strongly the song follows the Persona's reference voice (try 0.7-0.9 for voice likeness). Higher = closer.
  - `style_weight` number: Style tag influence (0-1). Higher = stronger style adherence.
  - `weirdness_constraint` number: Creativity level (0-1). Higher = more experimental.
  - `vocal_gender` 'f' | 'm': Vocal gender: 'f' (female), 'm' (male). Supported on every current model.
  - `variation_category` 'subtle' | 'normal' | 'high': Remaster variation level. Only applies to the remaster task on `sonic-v5` / `sonic-v5-5`; upstream has not documented it for v6.
  - `overpainting_start_s` number: Start time (seconds) for add_instrumental/add_vocals. Specifies where to begin adding content.
  - `overpainting_end_s` number: End time (seconds) for add_instrumental/add_vocals. Specifies where to stop adding content.
  - `webhook_url` string: HTTPS URL for completion webhook.
  - `webhook_secret` string: Secret for webhook signature verification.
  - `use_suno_cdn` boolean, required: Optional. Accepted for backward compatibility; it no longer changes the link host. Result audio/image URLs are always served from our delivery CDN, whether this is true, false or omitted. Non-boolean values return 400 validation_error.
  - `duration` integer: Target song length in seconds. Range 10-360. The generated track lands close to the requested length rather than exactly on it. Only for task_type create_music, persona_music, extend_music and cover_music; sending it with any other task_type returns a validation error.
  - `variety` 'off' | 'normal' | 'high' | 'extra' | 'max': **Only for persona_music.** How far the style may wander from the tags. `off` keeps the voice closest to the Persona. Default upstream behaviour is `normal`. Sending it with any other task_type returns a validation error.
  - `max_mode` boolean: **Only for persona_music.** Spends more compute on consistency across the whole song. **Doubles the credit cost** (40 instead of 20 per generation); a failed max_mode generation refunds the full amount. Sending it with any other task_type returns a validation error.

## Response `200`

Success

- object
  - `code` integer, required: Response code (200 for success)
  - `task_id` string, required: Task ID for polling with get-music endpoint
  - `message` string, required: Response message

---

[API](https://skmtc.dev/musicapi/apis/musicapi-docs-suno-style-ai-music-generation-api.md) - [All operations](https://skmtc.dev/musicapi/apis/musicapi-docs-suno-style-ai-music-generation-api/llms.txt) - [OpenAPI document](https://skmtc.dev/musicapi/apis/musicapi-docs-suno-style-ai-music-generation-api/revisions/f94a2c7ed4a1?raw)
