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

# Suno Upload Extend API Reference

> Upload an external audio file and extend it in one request.

Use **Upload Extend** when you already have a public audio URL and want to continue it without calling [Upload](/api/en/suno/suno_upload) and [Extend](/api/en/suno/suno_extend) separately.

<Callout type="info">
  * Submit a publicly accessible `audio_url`. Recommended duration is 8 minutes or less.
  * `continue_at` must be `>= 1` and less than the uploaded audio duration.
  * This endpoint always runs in custom mode. If `prompt` is empty, the extension is treated as instrumental.
  * Store the returned `jobId` and retrieve the result through [Suno Fetch V2](/api/en/suno/suno_fetch_v2) or your `hookUrl` callback.
</Callout>


## OpenAPI

````yaml openapi/en/suno.json POST /suno/v1/upload-extend
openapi: 3.1.0
info:
  title: TTAPI API DOCS
  version: 1.0.0
  description: Suno AI Music API
servers:
  - url: https://api.ttapi.io
security: []
paths:
  /suno/v1/upload-extend:
    post:
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/Mv_Params'
                - $ref: '#/components/schemas/Prompt_Params'
                - $ref: '#/components/schemas/Title_Params'
                - $ref: '#/components/schemas/Tags_Params'
                - $ref: '#/components/schemas/Negative_tags_Params'
                - $ref: '#/components/schemas/Style_weight_Params'
                - $ref: '#/components/schemas/Weirdness_constraint_Params'
                - $ref: '#/components/schemas/Audio_weight_Params'
                - $ref: '#/components/schemas/Duration_Params'
                - $ref: '#/components/schemas/Auto_lyrics_Params'
                - $ref: '#/components/schemas/Vocal_gender_Params'
                - $ref: '#/components/schemas/Persona_id_Params'
                - $ref: '#/components/schemas/IsStorageParams'
                - $ref: '#/components/schemas/HookUrlParams'
                - type: object
                  properties:
                    audio_url:
                      type: string
                      description: >-
                        Publicly accessible audio URL to upload and extend.
                        Recommended duration: 8 minutes or less.
                    continue_at:
                      type: number
                      example: 10
                      description: >-
                        Timestamp, in seconds, where the audio extension should
                        begin. Must be >= 1 and less than the uploaded audio
                        duration.
                  required:
                    - audio_url
                    - continue_at
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        '400':
          $ref: '#/components/responses/400Response'
        '401':
          $ref: '#/components/responses/401Response'
      security:
        - CustomApiKey: []
components:
  schemas:
    Mv_Params:
      type: object
      properties:
        mv:
          type: string
          default: chirp-v5
          enum:
            - chirp-v5-5
            - chirp-v5
            - chirp-v4-5+
            - chirp-v4-5
            - chirp-v4-5-all
            - chirp-v4
            - chirp-v3-5
            - chirp-v3-0
          description: Model to use.
    Prompt_Params:
      type: object
      properties:
        prompt:
          type: string
          description: >-
            Lyrics.


            Used in custom mode (custom=true). Required when instrumental is
            false. The lyrics will be used and sung in the generated track.
            Maximum length: 5000 characters.
    Title_Params:
      type: object
      properties:
        title:
          type: string
          description: |-
            Music title.

            Used in custom mode (custom=true). Maximum length: 80 characters.
    Tags_Params:
      type: object
      properties:
        tags:
          type: string
          description: |-
            Music style or genre.

            Used in custom mode (custom=true). Maximum length: 1000 characters.
          example: rock, blues, hip-hop, r&b
    Negative_tags_Params:
      type: object
      properties:
        negative_tags:
          type: string
          description: |-
            Music styles or genres that should be excluded from generation.

            Used in custom mode (custom=true).
    Style_weight_Params:
      type: object
      properties:
        style_weight:
          type: number
          description: |-
            Music style weight, range: 0.00–1.00.

            Used in custom mode. Valid range: 0 <= x <= 1.
          example: 0.5
    Weirdness_constraint_Params:
      type: object
      properties:
        weirdness_constraint:
          type: number
          description: |-
            Audio creativity (weirdness) weight, range: 0.00–1.00.

            Used in custom mode. Valid range: 0 <= x <= 1.
          example: 0.5
    Audio_weight_Params:
      type: object
      properties:
        audio_weight:
          type: number
          description: |-
            Audio weight, range: 0.00–1.00.

            Used in custom mode. Valid range: 0 <= x <= 1.
          example: 0.5
    Duration_Params:
      type: object
      properties:
        duration:
          type: int
          description: |-
            Audio duration, in seconds 

            Used in custom mode. Valid range: 10 <= x <= 360.
          example: 120
    Auto_lyrics_Params:
      type: object
      properties:
        auto_lyrics:
          type: boolean
          default: false
          description: >-
            Whether to automatically generate lyrics. Custom mode only.


            - **true**: The input lyrics will be creatively rewritten, similar
            to the inspiration mode prompt effect

            - **false**: Use the provided lyrics directly to generate the music
    Vocal_gender_Params:
      type: object
      properties:
        vocal_gender:
          type: string
          description: |-
            Vocal gender.

            - Male: Male voice

            - Female: Female voice
          enum:
            - Male
            - Female
    Persona_id_Params:
      type: object
      properties:
        persona_id:
          type: string
          description: |-
            Music style ID. Custom mode only.

            Use this parameter to generate music with a specific style.
    IsStorageParams:
      type: object
      properties:
        isStorage:
          type: boolean
          default: true
          description: >-
            Whether to store the generated audio.


            - **true**: The audio will be stored and a TTAPI CDN URL will be
            returned

            - **false**: The original source URL will be returned
    HookUrlParams:
      type: object
      properties:
        hookUrl:
          type: string
          description: Callback notification URL
  responses:
    SuccessResponse:
      description: Request successful
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: SUCCESS
              message:
                type: string
                example: success
              data:
                type: object
                example:
                  jobId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            required:
              - status
              - message
              - data
    400Response:
      description: Parameter error
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: FAILED
              message:
                type: string
              data:
                type: object
            required:
              - status
              - message
    401Response:
      description: Authorization failed
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: FAILED
              message:
                type: string
                example: Wrong TT-API-KEY or email is not activated.
            required:
              - status
              - message
  securitySchemes:
    CustomApiKey:
      type: apiKey
      in: header
      name: TT-API-KEY
      description: >-
        You can obtain your API key from the <a
        href='https://dashboard.ttapi.io' target='_blank'>TTAPI Dashboard</a>.

````