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

> ## Agent Instructions
> Public hosts only: console https://omnimux.ai/dashboard · API https://api.omnimux.ai · docs https://docs.omnimux.ai.
> Gateway auth is Authorization: Bearer sk-… on https://api.omnimux.ai/v1 (OpenAI-compatible Chat Completions and related paths).
> Discover pages from /llms.txt; full site dump /llms-full.txt; product skill /skill.md; docs search MCP /mcp. Prefer .md page URLs for Markdown.
> Default docs locale is en; zh mirrors the same relative paths. Do not invent model ids not present on live pricing or the complete API pages.

# Suno Music Generation

> Suno Music Generation · model `suno`

* Create: `POST /v1/video/generations` with `model` `suno` (music generation) or `suno-sounds` (sound effects generation)
* Async: poll [Video task](/en/api-reference/tasks/video-task) with returned `task_id`
* Music and sound effect generations share the unified media task endpoint and task polling contract

## Identity

| Field  | Value                 |
| ------ | --------------------- |
| Series | Audio series          |
| Brand  | Suno                  |
| model  | `suno`, `suno-sounds` |

## Endpoint

| Method | Path                              |
| ------ | --------------------------------- |
| `POST` | `/v1/video/generations`           |
| `GET`  | `/v1/video/generations/{task_id}` |

Base URL: `https://api.omnimux.ai`

## Authorizations

| Name            | In     | Type   | Required | Description               |
| --------------- | ------ | ------ | -------- | ------------------------- |
| `Authorization` | header | string | yes      | `Bearer sk-...` (API key) |

## Body

| Field            | Type    | Required | Description                                                  |
| ---------------- | ------- | -------- | ------------------------------------------------------------ |
| `model`          | string  | yes      | Must be `suno`                                               |
| `prompt`         | string  | yes      | Song lyrics, genre description, or musical style             |
| `title`          | string  | no       | Song title                                                   |
| `tags` / `style` | string  | no       | Musical style tags (e.g. `acoustic pop`, `electronic synth`) |
| `instrumental`   | boolean | no       | Set `true` to generate instrumental music without vocals     |

## Response

### 200 (create)

| Field     | Type   | Description                           |
| --------- | ------ | ------------------------------------- |
| `task_id` | string | Task id for polling                   |
| `status`  | string | `queued` / `processing` / `completed` |

See [Video task](/en/api-reference/tasks/video-task). Errors: [Error codes](/en/faqs/connection-usage).

<Panel>
  <RequestExample>
    ```bash curl --request POST \ theme={null}
      --url https://api.omnimux.ai/v1/video/generations \
      --header 'Authorization: Bearer <token>' \
      --header 'Content-Type: application/json' \
      --data '{
      "model": "suno",
      "prompt": "An upbeat acoustic folk song about mountain travel at sunrise",
      "tags": "folk acoustic positive"
    }'
    ```
  </RequestExample>

  <ResponseExample>
    ```json 200 theme={null}
    {
      "task_id": "task_suno_01HXYZABCDEF",
      "status": "queued"
    }
    ```

    ```json 400 theme={null}
    { "error": { "message": "Invalid request", "type": "invalid_request_error", "code": "bad_request" } }
    ```

    ```json 401 theme={null}
    { "error": { "message": "Invalid token", "type": "authentication_error", "code": "unauthorized" } }
    ```

    ```json 402 theme={null}
    {
      "error": {
        "message": "Insufficient quota. Please top up your account.",
        "type": "insufficient_quota",
        "code": "insufficient_quota"
      }
    }
    ```

    ```json 429 theme={null}
    { "error": { "message": "Rate limit exceeded", "type": "rate_limit_error", "code": "rate_limit_exceeded" } }
    ```

    ```json 500 theme={null}
    { "error": { "message": "Internal server error", "type": "server_error", "code": "internal_error" } }
    ```
  </ResponseExample>
</Panel>
