> ## 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 Create Model API Documentation

> Train a reusable custom music model from 6–24 publicly accessible reference tracks. After creation, set mv to chirp-custom:{model_id} to generate songs in that model’s style.

<Info>
  **Create Model is an asynchronous task API.**

  The request does not return `model_id` immediately. You can get the result in either of these ways:

  * Set **hookUrl** to receive a **callback** when the task finishes
  * Or call **[Fetch V2](/api/en/suno/suno_fetch_v2)** to poll the task status and result

  If you use **hookUrl**, make sure the URL is publicly reachable; otherwise the callback may fail.
</Info>

<Warning>
  Custom models are **private resources** bound to the underlying account used during training:

  * If that account runs out of quota or goes offline, the model becomes unavailable immediately
  * Use the model as soon as it is created. Availability is typically no more than **2 days**, and it may expire earlier — a full 2-day window is not guaranteed
  * `persona_id` and `chirp-custom` cannot be used together
  * `mv` must include a full UUID, for example `chirp-custom:a1b2c3d4-e5f6-7890-abcd-ef1234567890`. Passing `chirp-custom` alone is invalid

  Provide complete songs or clips that share a consistent style, vocal, and arrangement:

  * Recommended formats: **MP3 / WAV / M4A**
  * Each URL must be a **publicly downloadable file**, not a login wall, hotlink-protected page, or HTML/JSON error page
  * If any audio file cannot be downloaded or is not valid audio, the entire job fails

  Typical training takes several minutes and can last up to about **20 minutes**. Timed-out jobs fail with `message` = `job timeout`.
</Warning>

<Tip>
  After creation, set `mv` to `chirp-custom:{model_id}` on generation endpoints to produce songs in that model’s style.

  * **Supported:** [Music](/api/en/suno/suno_music), Extend, Cover, Add Vocals / Instrumental / Stem, Replace Section, Mashup, Inspo, Sample
  * **Not supported:** Remaster, Stems, Lyrics, MIDI export
</Tip>


## OpenAPI

````yaml openapi/en/suno.json POST /suno/v1/create-model
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/create-model:
    post:
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  properties:
                    audio_urls:
                      type: array
                      minItems: 6
                      maxItems: 24
                      items:
                        type: string
                      description: >-
                        Publicly accessible direct URLs of reference audio.
                        Length must be **6–24**. Each URL must be a downloadable
                        file, not a login wall or HTML page. Recommended
                        formats: MP3 / WAV / M4A.
                    name:
                      type: string
                      description: Model name. Cannot be empty.
                  required:
                    - audio_urls
                    - name
                - $ref: '#/components/schemas/HookUrlParams'
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        '400':
          $ref: '#/components/responses/400Response'
        '401':
          $ref: '#/components/responses/401Response'
      security:
        - CustomApiKey: []
components:
  schemas:
    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>.

````