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

# Suno Persona Creation Beta

> - Extract reusable Persona (vocal/style characteristics) from completed Suno music generation tasks
- After successful creation, a `persona_id` is returned, which can be applied in subsequent [Suno Music Generation](/en/api-manual/audio-series/suno/suno-music-generation) via `persona_id` and `persona_model` parameters
- Source task model version must be **suno-v4 or above** (v3.5 not supported)
- Each song (result_id) can only create **one Persona**
- Asynchronous processing mode, use the returned task ID to [query status](/en/api-manual/task-management/get-task-detail)
- Cannot create a new Persona from a Persona task



## OpenAPI

````yaml /en/api-manual/audio-series/suno/suno-persona-creation.json POST /v1/audios/generations
openapi: 3.1.0
info:
  title: Suno Persona Creation API
  description: >-
    Extract reusable music styles (Persona) from completed Suno music generation
    tasks for consistent vocal and style characteristics in subsequent
    generations
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Production Environment
security:
  - bearerAuth: []
paths:
  /v1/audios/generations:
    post:
      tags:
        - Audio Generation
      summary: Suno Persona Creation API
      description: >-
        - Extract reusable Persona (vocal/style characteristics) from completed
        Suno music generation tasks

        - After successful creation, a `persona_id` is returned, which can be
        applied in subsequent [Suno Music
        Generation](/en/api-manual/audio-series/suno/suno-music-generation) via
        `persona_id` and `persona_model` parameters

        - Source task model version must be **suno-v4 or above** (v3.5 not
        supported)

        - Each song (result_id) can only create **one Persona**

        - Asynchronous processing mode, use the returned task ID to [query
        status](/en/api-manual/task-management/get-task-detail)

        - Cannot create a new Persona from a Persona task
      operationId: createSunoPersona
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SunoPersonaCreationRequest'
            examples:
              basic:
                summary: Basic Creation (Required Parameters)
                value:
                  model: suno-persona
                  model_params:
                    source_task_id: task-unified-1774169216-ocqaqde7
                    result_id: 4fcc4507-a7ae-4441-ad8a-465c2f61d5bb
                    name: Electronic Pop Singer
                    description: >-
                      Modern electronic style with energetic beats and
                      synthesizer tones for dance music
              with_vocal_range:
                summary: With Vocal Extraction Window
                value:
                  model: suno-persona
                  model_params:
                    source_task_id: task-unified-1774169216-ocqaqde7
                    result_id: 4fcc4507-a7ae-4441-ad8a-465c2f61d5bb
                    name: Jazz Vocalist
                    description: >-
                      Smooth jazz vocal style with warm tones and
                      improvisational flair suitable for lounge music
                    vocal_start: 15
                    vocal_end: 35
                    style: jazz
      responses:
        '200':
          description: Persona creation task submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudioGenerationResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missing_params:
                  summary: Missing required parameters
                  value:
                    error:
                      code: invalid_request
                      message: model_params.source_task_id is required
                      type: invalid_request_error
                invalid_source:
                  summary: Invalid source task
                  value:
                    error:
                      code: invalid_request
                      message: >-
                        Source task does not exist or does not belong to the
                        current user: task-unified-xxx
                      type: invalid_request_error
                vocal_window:
                  summary: Invalid vocal window
                  value:
                    error:
                      code: invalid_request
                      message: >-
                        vocal_end - vocal_start must be between 10 and 30
                        seconds
                      type: invalid_request_error
        '401':
          description: Unauthenticated, invalid or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Insufficient quota, recharge required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: insufficient_quota
                  message: Insufficient quota. Please top up your account.
                  type: insufficient_quota
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: rate_limit_exceeded
                  message: Too many requests, please try again later
                  type: rate_limit_error
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: internal_error
                  message: Internal server error
                  type: api_error
components:
  schemas:
    SunoPersonaCreationRequest:
      type: object
      required:
        - model
        - model_params
      properties:
        model:
          type: string
          description: Model name, fixed as `suno-persona`
          enum:
            - suno-persona
          example: suno-persona
        model_params:
          type: object
          description: Persona creation parameters
          required:
            - source_task_id
            - result_id
            - name
            - description
          properties:
            source_task_id:
              type: string
              description: >-
                Task ID of a completed Suno music generation task


                **How to obtain:** The `id` field returned from a music
                generation request


                **Requirements:**

                1. Task must belong to the current user

                2. Task status must be `completed`

                3. Task model must be Suno series (suno-v4 or above)

                4. Cannot be a `suno-persona` type task
              example: task-unified-1774169216-ocqaqde7
            result_id:
              type: string
              description: >-
                Unique identifier of a specific song from the source task
                results


                **How to obtain:** Via the [Query Task
                Detail](/en/api-manual/task-management/get-task-detail) API,
                find the target song's `result_id` in the `result_data.songs[]`
                array


                **Limit:** Each `result_id` can only create one Persona;
                duplicate creation will return an error
              format: uuid
              example: 4fcc4507-a7ae-4441-ad8a-465c2f61d5bb
            name:
              type: string
              description: Persona name, used for identification and subsequent reference
              example: Electronic Pop Singer
            description:
              type: string
              description: Musical style description of the Persona
              example: >-
                Modern electronic style with energetic beats and synthesizer
                tones for dance music
            vocal_start:
              type: number
              description: >-
                Start time point for vocal extraction (seconds)


                Must be provided together with `vocal_end`; cannot provide only
                one. Value must be >= 0. The extraction window (`vocal_end -
                vocal_start`) must be between **10 - 30 seconds**
              minimum: 0
              example: 10
            vocal_end:
              type: number
              description: >-
                End time point for vocal extraction (seconds)


                Must be provided together with `vocal_start`; value must be
                strictly greater than `vocal_start`. The extraction window
                (`vocal_end - vocal_start`) must be between **10 - 30 seconds**
              minimum: 0
              example: 30
            style:
              type: string
              description: >-
                Style tags to annotate the musical style of the Persona. Free
                text, no strict format required; empty strings are ignored
              example: electronic pop
    AudioGenerationResponse:
      type: object
      properties:
        created:
          type: integer
          description: Task creation timestamp
          example: 1774170584
        id:
          type: string
          description: Task ID, used to query task status and results
          example: task-unified-1774170584-su75smg7
        model:
          type: string
          description: Actual model name used
          example: suno-persona
        object:
          type: string
          enum:
            - audio.generation.task
          description: Task type
        progress:
          type: integer
          description: Task progress percentage (0-100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: Task status
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/AudioTaskInfo'
          description: Task details
        type:
          type: string
          enum:
            - audio
          description: Task output type
          example: audio
        usage:
          $ref: '#/components/schemas/Usage'
          description: Usage and billing information
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Error code identifier
            message:
              type: string
              description: Error description
            type:
              type: string
              description: Error type
    AudioTaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: Whether the task can be cancelled
          example: false
        estimated_time:
          type: integer
          description: Estimated completion time (seconds)
          example: 15
    Usage:
      type: object
      description: Usage and billing information
      properties:
        billing_rule:
          type: string
          description: Billing rule
          enum:
            - per_call
            - per_token
            - per_second
          example: per_call
        credits_reserved:
          type: number
          description: Estimated credits consumed
          minimum: 0
          example: 1
        user_group:
          type: string
          description: User group
          enum:
            - default
            - vip
          example: default
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ##All APIs require Bearer Token authentication##


        **Get API Key:**


        Visit [API Key Management Page](https://evolink.ai/dashboard/keys) to
        get your API Key


        **Add to request header:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````