> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goenhance.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Suno V6

> Generate full songs with Suno V6. Each request returns **2 songs**.

- **Simple mode** (`custom_mode: false`, default): describe what you want in `prompt`; the model writes the lyrics. You can also attach reference images, a video or audio (photo to music).
- **Custom mode** (`custom_mode: true`): send your own `title`, `lyrics` and `style`, and optionally `duration`, `negative_tags` and the fine-tuning parameters.

Parameters that belong to the other mode are rejected rather than silently ignored.

**Pricing** (per request, regardless of `variant`, length or mode):

| Option | Tokens | USD |
|---|---|---|
| Per request (2 songs) | 3.9 | $0.078 |

Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use `custom_callback_url`) for the result. On success, `json` holds **one item per song** (normally 2):

```json
{
  "type": "audio",
  "value": "https://cdn4.goenhance.ai/source2/.../output.mp3",
  "audio_id": "e231a3f0-...",
  "title": "Rainy Night",
  "audio_duration": 187.4,
  "style": "lofi hip hop, mellow piano",
  "lyrics": "[Verse] ..."
}
```

Keep the task's `img_uuid` and each song's `audio_id`: that pair is how you extend the song, export WAV, make a music video, split stems or get timestamped lyrics later. Result links expire (see `link_expired_at`), so download the files you want to keep.



## OpenAPI

````yaml api-reference/audio-generations/openapi-suno-v6.json POST /api/v1/audio/generations
openapi: 3.1.0
info:
  title: GoEnhance API - Suno V6
  description: >-
    Generate full songs with vocals or instrumentals from a prompt, or from your
    own lyrics and style.
  version: 1.0.0
servers:
  - url: https://api.goenhance.ai
security: []
paths:
  /api/v1/audio/generations:
    post:
      tags:
        - AudioGenerations
      summary: Suno V6
      description: >-
        Generate full songs with Suno V6. Each request returns **2 songs**.


        - **Simple mode** (`custom_mode: false`, default): describe what you
        want in `prompt`; the model writes the lyrics. You can also attach
        reference images, a video or audio (photo to music).

        - **Custom mode** (`custom_mode: true`): send your own `title`, `lyrics`
        and `style`, and optionally `duration`, `negative_tags` and the
        fine-tuning parameters.


        Parameters that belong to the other mode are rejected rather than
        silently ignored.


        **Pricing** (per request, regardless of `variant`, length or mode):


        | Option | Tokens | USD |

        |---|---|---|

        | Per request (2 songs) | 3.9 | $0.078 |


        Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use
        `custom_callback_url`) for the result. On success, `json` holds **one
        item per song** (normally 2):


        ```json

        {
          "type": "audio",
          "value": "https://cdn4.goenhance.ai/source2/.../output.mp3",
          "audio_id": "e231a3f0-...",
          "title": "Rainy Night",
          "audio_duration": 187.4,
          "style": "lofi hip hop, mellow piano",
          "lyrics": "[Verse] ..."
        }

        ```


        Keep the task's `img_uuid` and each song's `audio_id`: that pair is how
        you extend the song, export WAV, make a music video, split stems or get
        timestamped lyrics later. Result links expire (see `link_expired_at`),
        so download the files you want to keep.
      parameters:
        - name: Authorization
          in: header
          description: ''
          required: false
          example: '{{Authorization}}'
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                model:
                  type: string
                  enum:
                    - suno-v6
                  description: Model name. Must be `suno-v6`.
                custom_mode:
                  type: boolean
                  default: false
                  description: >-
                    `false` (default, simple mode): describe the song in
                    `prompt` and the model writes the lyrics. `true` (custom
                    mode): you provide `title` and `lyrics` (or `instrumental:
                    true`) and can set `duration` and the fine-tuning
                    parameters.
                prompt:
                  type: string
                  maxLength: 3000
                  description: >-
                    Simple mode only. What the song should be about and sound
                    like. Max 3000 characters. Required in simple mode unless
                    you give `style`, `lyrics` or reference media.
                instrumental:
                  type: boolean
                  default: false
                  description: >-
                    `true` = no vocals. When `true`, `lyrics`, `vocal_gender`
                    and `audio_weight` must not be sent.
                variant:
                  type: string
                  enum:
                    - standard
                    - mini
                    - wild
                  default: standard
                  description: >-
                    Suno V6 flavor. `standard` = V6 (natural vocals, rich
                    detail), `mini` = V6 Mini (lighter and faster), `wild` = V6
                    Wild (bolder, more experimental). All three cost the same.
                style:
                  type: string
                  maxLength: 1000
                  description: >-
                    Optional. Music style, e.g. `lofi hip hop, mellow piano,
                    rainy night`. Max 1000 characters.
                lyrics:
                  type: string
                  maxLength: 5000
                  description: >-
                    Optional. In custom mode: the exact lyrics to sing (required
                    unless `instrumental` is `true`). In simple mode: optional
                    lyric material the model may draw from. Use section markers
                    such as `[Verse]` and `[Chorus]`. Max 5000 characters.
                title:
                  type: string
                  maxLength: 80
                  description: >-
                    Custom mode only, and required there. Song title. Max 80
                    characters.
                negative_tags:
                  type: string
                  maxLength: 200
                  description: >-
                    Custom mode only. Styles or traits to avoid. Max 200
                    characters.
                duration:
                  type: integer
                  minimum: 10
                  maximum: 360
                  description: >-
                    Custom mode only. Target length in seconds, 10 to 360. Omit
                    to let the model decide.
                vocal_gender:
                  type: string
                  enum:
                    - male
                    - female
                  description: >-
                    Custom mode only. Preferred singer gender (`m` / `f` also
                    accepted). This raises the probability; it is not
                    guaranteed.
                style_weight:
                  type: number
                  minimum: 0
                  maximum: 1
                  description: >-
                    Custom mode only. How strictly to follow `style`, from 0 to
                    1 (rounded to 2 decimals).
                weirdness_constraint:
                  type: number
                  minimum: 0
                  maximum: 1
                  description: >-
                    Custom mode only. How experimental the result may be, from 0
                    to 1 (rounded to 2 decimals).
                audio_weight:
                  type: number
                  minimum: 0
                  maximum: 1
                  description: >-
                    Custom mode only. How much the result follows the audio
                    features of the source, from 0 to 1 (rounded to 2 decimals).
                    Not available when `instrumental` is `true`.
                variety:
                  type: integer
                  minimum: 0
                  maximum: 4
                  default: 1
                  description: >-
                    Custom mode only. How different the versions are from each
                    other: 0 off, 1 normal (default), 2 high, 3 extra, 4 max.
                image_urls:
                  type: array
                  items:
                    type: string
                    format: uri
                  maxItems: 5
                  description: >-
                    Simple mode only. Up to 5 reference images (jpeg / png /
                    webp / bmp, each up to 10 MB) that the song should be
                    inspired by (photo to music).
                video_urls:
                  type: array
                  items:
                    type: string
                    format: uri
                  maxItems: 1
                  description: >-
                    Simple mode only. Up to 1 reference video (mp4 / mov / webm,
                    up to 100 MB and 241 seconds).
                audio_urls:
                  type: array
                  items:
                    type: string
                    format: uri
                  description: >-
                    Simple mode only. Reference audio (each 6 seconds to 30
                    minutes, up to 500 MB). `style` + `lyrics` + all reference
                    media together must not exceed 10 items.
                custom_callback_url:
                  type: string
                  format: uri
                  description: >-
                    Optional. A publicly accessible HTTPS URL. When the task
                    status changes (processing / success / failed), GoEnhance
                    sends a POST request to this URL. The request body is
                    identical to the response of GET /api/v1/jobs/detail. If
                    your server does not respond with HTTP 200, the notification
                    is retried up to 3 times, with a 3-second timeout per
                    attempt.
                  example: https://your-server.com/goenhance/callback
              required:
                - model
            example:
              model: suno-v6
              prompt: An upbeat indie pop song about a summer road trip with friends
              variant: standard
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      img_uuid:
                        type: string
                      cost:
                        type: number
                        description: >-
                          Tokens deducted for this request. This is the amount
                          actually charged, so it already reflects any discount
                          active on your account and can be lower than the
                          listed price. Tokens are deducted when the task is
                          accepted, and refunded automatically if the generation
                          ends in failure.
                        example: 3.9
                    required:
                      - img_uuid
                      - cost
                required:
                  - code
                  - msg
                  - data
              examples:
                '1':
                  summary: Success
                  value:
                    code: 0
                    msg: Success
                    data:
                      img_uuid: c12b656c-747a-44fd-9c80-add79b0c52d5
                      cost: 3.9
                '2':
                  summary: Insufficient tokens
                  value:
                    code: 100
                    msg: tokens is not enough
                quota:
                  summary: API key quota exceeded
                  value:
                    code: 101
                    msg: 'API key quota exceeded: 4990 of 5000 tokens used (monthly)'
                bad:
                  summary: Invalid parameters
                  value:
                    code: -1
                    msg: >-
                      lyrics is required when custom_mode is true and
                      instrumental is false
          headers: {}
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
          headers: {}
      deprecated: false

````