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

# Stem Layering

> Layer an additional instrument track onto an existing song.

> [!TIP]
>
> You can also submit through the unified task endpoint `POST /v1/task/submit` with `model` set to `suno/add-stem` and the parameters inside `input`. Both behave and bill the same.

> [accordion] Task result
>
> What the fetch result holds once the task succeeds
>
> When the task succeeds, `data.musics` holds the tracks it produced, 2 per run. On partial success you are billed for the tracks that actually succeeded.
>
> ```json theme={null}
> {
>   "code": "success",
>   "data": {
>     "task_id": "5adac6ee-...",
>     "action": "add-stem",
>     "model": "suno/add-stem",
>     "status": "SUCCESS",
>     "progress": "100%",
>     "submit_time": 1757800000000,
>     "finish_time": 1757800120000,
>     "musics": [
>       {
>         "music_id": "89b20862-...",
>         "title": "Rain on Tin Roof",
>         "tags": "lo-fi piano",
>         "audio_url": "https://...",
>         "image_url": "https://...",
>         "duration": 187.56
>       }
>     ]
>   }
> }
> ```
>
> **music\_id** `string` *required*
>
> Track ID. Pass it to extend, cover, stem separation, export and other follow-up actions.
>
> **title** `string`
>
> Title.
>
> **tags** `string`
>
> Style tags.
>
> **lyrics** `string`
>
> Lyrics. Instrumentals do not include this field.
>
> **audio\_url** `string`
>
> Audio URL, downloadable directly.
>
> **image\_url** `string`
>
> Cover image URL.
>
> **image\_large\_url** `string`
>
> Large cover image URL.
>
> **video\_url** `string`
>
> Video URL. Omitted when there is no video.
>
> **duration** `number`
>
> Duration in seconds.


## OpenAPI

````yaml en/openapi/suno.json POST /suno/v2/add-stem
openapi: 3.1.0
info:
  title: Suno API
  version: 1.0.0
  description: Suno
servers:
  - url: https://api.ephone.ai
security:
  - bearerAuth: []
paths:
  /suno/v2/add-stem:
    post:
      summary: Stem Layering
      description: Layer an additional instrument track onto an existing song.
      operationId: suno_add_stem
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                mv:
                  type: string
                  enum:
                    - chirp-v6
                    - chirp-v6-wild
                    - chirp-v6-mini
                  default: chirp-v6
                  description: >-
                    **Model Version**: All three versions are priced the same;
                    pick by the style you want. Options: `chirp-v6` v6
                    (default); `chirp-v6-wild` v6 Wild (bolder); `chirp-v6-mini`
                    v6 Mini (faster).
                custom:
                  type: boolean
                  default: false
                  description: >-
                    **Custom Mode**: Off: describe the song in one line. On:
                    supply your own full lyrics.
                gpt_description_prompt:
                  type: string
                  description: >-
                    **Inspiration Prompt**: One line describing the song you
                    want. Required when custom mode is off. Up to 3000
                    characters.
                prompt:
                  type: string
                  description: >-
                    **Lyrics**: Full lyrics, up to 5000 characters. Use markers
                    like [Verse] and [Chorus] to shape the structure.
                title:
                  type: string
                  description: '**Title**: Track title, up to 80 characters.'
                tags:
                  type: string
                  description: >-
                    **Style Tags**: The style you want, e.g. 'lo-fi piano,
                    mellow, rain'. Up to 1000 characters.
                negative_tags:
                  type: string
                  description: '**Avoid These Styles**: Styles to steer away from.'
                style_weight:
                  type: number
                  description: >-
                    **Style Weight**: 0 to 1. Higher sticks closer to your style
                    tags; lower leaves more room to improvise.
                weirdness_constraint:
                  type: number
                  description: >-
                    **Weirdness**: 0 to 1. Higher yields more unexpected
                    results; lower stays conventional.
                audio_weight:
                  type: number
                  description: >-
                    **Audio Weight**: 0 to 1. How strongly the reference audio
                    shapes the result.
                variety:
                  type: string
                  enum:
                    - 'off'
                    - normal
                    - high
                    - extra
                    - max
                  description: >-
                    **Variety**: How far the result may drift from the style you
                    specified. Options: `off` Exact; `normal` Balanced; `high`
                    Varied; `extra` Bold; `max` Maximum.
                max_mode:
                  type: boolean
                  default: false
                  description: >-
                    **Max Quality**: Spend more compute to keep the whole song
                    coherent. Custom mode only; doubles the price.
                model_id:
                  type: string
                  description: >-
                    **Custom Model**: Generate with a model you trained. Use the
                    model_id from a create-model result. Cannot be combined with
                    persona_id.
                audio_format:
                  type: string
                  enum:
                    - mp3
                    - m4a
                    - wav
                  description: >-
                    **Output Format**: Format of the finished audio. Defaults to
                    mp3. Options: `mp3` MP3 (common); `m4a` M4A; `wav` WAV
                    (lossless).
                music_id:
                  type: string
                  description: >-
                    **Source Track**: The track to work on. Use the music_id
                    from an earlier result.
                notify_hook:
                  type: string
                  format: uri
                  description: >-
                    **Notify hook**: when the task ends, the same content as the
                    fetch result is POSTed to this URL (a public http / https
                    URL). Omit it to poll instead.
              required:
                - music_id
            example:
              mv: chirp-v6
              custom: false
              music_id: track id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmitResponse'
              example:
                code: success
                message: success
                data:
                  task_id: 5adac6ee-...
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: error
                message: music_id is required
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayError'
              example:
                error:
                  message: Invalid Token
                  type: rix_api_error
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayError'
              example:
                error:
                  message: Too many requests, please try again later
                  type: rix_api_error
components:
  schemas:
    SubmitResponse:
      type: object
      properties:
        code:
          type: string
          enum:
            - success
        message:
          type: string
        data:
          type: object
          properties:
            task_id:
              type: string
              description: Task ID.
          required:
            - task_id
      required:
        - code
        - data
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    GatewayError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Send your API key in the `Authorization: Bearer YOUR_API_KEY` header.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.