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

# Gerar música

> Gera música por meio de um único endpoint independente do provedor. A Phaseo aguarda provedores síncronos e gerencia internamente a consulta às filas dos provedores.

Gere música por meio de uma API independente do provedor. O Phaseo gerencia respostas síncronas e consulta as filas dos provedores em segundo plano.

Quando a geração for concluída, a resposta incluirá `audio_url` ou `audio_base64`. Se um provedor retornar um trabalho ainda não finalizado, use o mesmo `id` da resposta com `GET /music/generate/{music_id}`.

## Formato da solicitação

```json theme={null}
{
  "model": "minimax/music-3.0:free",
  "prompt": "Warm jazz trio with brushed drums",
  "format": "mp3"
}
```

## Opções do Suno

* `suno.customMode` (booleano; padrão: `false`)
* `suno.instrumental` (booleano; padrão: `false`)
* `suno.prompt` (substituição opcional de `prompt` no nível superior)
* `suno.style`, `suno.title` (obrigatório quando `customMode = true`)
* `suno.personaId`, `suno.personaModel`
* `suno.negativeTags`, `suno.vocalGender`
* `suno.styleWeight`, `suno.weirdnessConstraint`, `suno.audioWeight`

## Regras de validação

* Quando `customMode = false`, `prompt` é obrigatório.
* Quando `customMode = true`, `style` e `title` são obrigatórios.
* Quando `customMode = true` e `instrumental = false`, `prompt` é obrigatório.

Erros de validação retornam `400` com:

```json theme={null}
{
  "error": "validation_error",
  "reason": "..."
}
```

## Resposta

```json theme={null}
{
  "id": "req_01JY6MUSIC123",
  "object": "music",
  "status": "completed",
  "provider": "gmicloud",
  "model": "minimax/music-3.0:free",
  "nativeResponseId": "5c30b275-d669-4a25-8151-de6d60214853",
  "audio_url": "https://.../generated-music.mp3",
  "usage": {
    "requests": 1,
    "output_audio_seconds": 25.364
  }
}
```

* `id` é o ID estável da solicitação no Phaseo. Use-o para recuperar a solicitação por meio de `GET /music/generate/{music_id}`.
* `nativeResponseId` é o identificador do provedor de origem e serve para correlacionar a solicitação com o provedor e acionar o suporte.
* `status` pode ser `queued`, `in_progress`, `completed` ou `failed`.
* `usage` pode incluir `output_audio_seconds` quando o provedor informar a duração gerada.


## OpenAPI

````yaml pt-BR/openapi/v1/openapi.localized.yaml POST /music/generate
openapi: 3.0.3
info:
  title: Phaseo Gateway API
  description: >-
    Uma API de gateway para acessar diversos modelos de IA por meio de endpoints
    compatíveis com OpenAI.
  version: 1.0.0
  contact:
    name: Phaseo
    url: https://phaseo.app
    email: danielbutler500@gmail.com
servers:
  - url: https://api.phaseo.app/v1
    description: Roteamento global
security:
  - BearerAuth: []
tags:
  - name: Gateway
    description: Core Phaseo Gateway operations.
paths:
  /music/generate:
    post:
      tags:
        - Gateway
      summary: Gerar música
      description: >-
        Gera música por meio de um único endpoint independente do provedor. A
        Phaseo aguarda provedores síncronos e gerencia internamente a consulta
        às filas dos provedores.
      operationId: generateMusic
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MusicGenerateRequest'
      responses:
        '200':
          description: Resposta da geração de música
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MusicGenerateResponse'
components:
  schemas:
    MusicGenerateRequest:
      type: object
      required:
        - model
      properties:
        model:
          type: string
        prompt:
          type: string
        duration:
          type: integer
        format:
          type: string
          enum:
            - mp3
            - wav
            - ogg
            - aac
        provider:
          $ref: '#/components/schemas/ProviderRoutingOptions'
        suno:
          type: object
          properties:
            prompt:
              type: string
            style:
              type: string
            title:
              type: string
            customMode:
              type: boolean
            instrumental:
              type: boolean
            personaId:
              type: string
            model:
              type: string
            negativeTags:
              type: string
            vocalGender:
              type: string
              enum:
                - m
                - f
            styleWeight:
              type: number
              minimum: 0
              maximum: 1
            weirdnessConstraint:
              type: number
              minimum: 0
              maximum: 1
            audioWeight:
              type: number
              minimum: 0
              maximum: 1
            callBackUrl:
              type: string
              format: uri
        elevenlabs:
          type: object
          properties:
            prompt:
              type: string
            composition_plan:
              type: object
            music_length_ms:
              type: integer
            model_id:
              type: string
            force_instrumental:
              type: boolean
            store_for_inpainting:
              type: boolean
            with_timestamps:
              type: boolean
            sign_with_c2pa:
              type: boolean
            output_format:
              type: string
        echo_upstream_request:
          type: boolean
        debug:
          $ref: '#/components/schemas/DebugOptions'
    MusicGenerateResponse:
      type: object
      required:
        - id
        - object
        - status
        - model
        - provider
      properties:
        id:
          type: string
          description: >-
            ID estável da solicitação Phaseo, usado com GET
            /music/generate/{music_id}.
        object:
          type: string
          enum:
            - music
        status:
          type: string
          enum:
            - queued
            - in_progress
            - completed
            - failed
        model:
          type: string
        provider:
          type: string
        nativeResponseId:
          type: string
          nullable: true
          description: Identificador do provedor upstream para correlação e suporte.
        audio_url:
          type: string
          format: uri
        audio_base64:
          type: string
        result:
          description: Metadados do resultado do provedor normalizados pelo Phaseo.
        output:
          type: array
          items:
            type: object
            additionalProperties: true
        usage:
          type: object
          additionalProperties: true
      additionalProperties: true
    ProviderRoutingOptions:
      type: object
      description: Preferências de roteamento de provedores para seleção pelo gateway.
      properties:
        order:
          type: array
          items:
            type: string
        only:
          type: array
          items:
            type: string
        ignore:
          type: array
          items:
            type: string
        include_alpha:
          type: boolean
          description: Incluir provedores alpha no roteamento (desativado por padrão).
        allow_fallbacks:
          type: boolean
          nullable: true
          description: Permitir fallback para outro provedor elegível após uma falha.
        require_parameters:
          type: boolean
          nullable: true
          description: >-
            Exigir suporte do provedor aos parâmetros solicitados antes do
            roteamento.
        required_execution_region:
          type: string
          nullable: true
          description: >-
            Restringir o roteamento a provedores com a região de execução
            solicitada.
        required_data_region:
          type: string
          nullable: true
          description: >-
            Restringir o roteamento a provedores com a região de dados
            solicitada.
        require_zero_data_retention:
          type: boolean
          nullable: true
          description: >-
            Restringir o roteamento a provedores que oferecem retenção zero de
            dados.
        data_collection:
          type: string
          nullable: true
          enum:
            - allow
            - deny
        zdr:
          type: boolean
          nullable: true
        enforce_distillable_text:
          type: boolean
          nullable: true
        quantizations:
          type: array
          nullable: true
          items:
            type: string
        sort:
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
          description: >-
            Classificar os provedores para esta solicitação, por exemplo, por
            preço, latência ou throughput.
        max_price:
          type: object
          properties:
            prompt:
              oneOf:
                - type: number
                - type: string
            completion:
              oneOf:
                - type: number
                - type: string
            image:
              oneOf:
                - type: number
                - type: string
            audio:
              oneOf:
                - type: number
                - type: string
            request:
              oneOf:
                - type: number
                - type: string
        preferred_min_throughput:
          oneOf:
            - type: number
            - type: object
              additionalProperties:
                type: number
        preferred_max_latency:
          oneOf:
            - type: number
            - type: object
              additionalProperties:
                type: number
    DebugOptions:
      type: object
      description: >-
        Controles de depuração do gateway. Essas opções nunca são encaminhadas
        ao provedor.
      properties:
        enabled:
          type: boolean
        return_upstream_request:
          type: boolean
        return_upstream_response:
          type: boolean
        trace:
          type: boolean
        trace_level:
          type: string
          enum:
            - summary
            - full
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Autenticação com token Bearer

````

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