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

# Vocal Remover

> Separate any audio into two tracks: the **vocals** and everything else (the **instrumental**: music, beats and sound effects). Works on songs, podcasts, voice-overs over background music, and videos with sound (the first audio track is used).

- One request always returns both tracks.
- The billed length is the length of `audio_url`, measured before the task is accepted.

**Pricing**: 0.1 tokens ($0.002) per minute of audio, rounded up to the whole minute. A 61-second file is billed as 2 minutes.

| Audio length | Tokens | USD |
|---|---|---|
| Up to 1 min | 0.1 | $0.002 |
| 1 min 1 s – 2 min | 0.2 | $0.004 |
| 20 min (maximum) | 2 | $0.04 |

**Result**: two `json` items, vocals first:

```json
[
  { "type": "audio", "name": "vocals", "value": "https://...mp3" },
  { "type": "audio", "name": "instrumental", "value": "https://...mp3" }
]
```

Both are 44.1 kHz with the same number of channels as the source (a mono file gives mono tracks), and `.wav` links when `output_format` is `wav`. Result links expire (see `link_expired_at`).



## OpenAPI

````yaml api-reference/audio-generations/openapi-vocal-remover.json POST /api/v1/audio/generations
openapi: 3.1.0
info:
  title: GoEnhance API - Vocal Remover
  description: Split a song or video soundtrack into vocals and instrumental.
  version: 1.0.0
servers:
  - url: https://api.goenhance.ai
security: []
paths:
  /api/v1/audio/generations:
    post:
      tags:
        - AudioGenerations
      summary: Vocal Remover
      description: >-
        Separate any audio into two tracks: the **vocals** and everything else
        (the **instrumental**: music, beats and sound effects). Works on songs,
        podcasts, voice-overs over background music, and videos with sound (the
        first audio track is used).


        - One request always returns both tracks.

        - The billed length is the length of `audio_url`, measured before the
        task is accepted.


        **Pricing**: 0.1 tokens ($0.002) per minute of audio, rounded up to the
        whole minute. A 61-second file is billed as 2 minutes.


        | Audio length | Tokens | USD |

        |---|---|---|

        | Up to 1 min | 0.1 | $0.002 |

        | 1 min 1 s – 2 min | 0.2 | $0.004 |

        | 20 min (maximum) | 2 | $0.04 |


        **Result**: two `json` items, vocals first:


        ```json

        [
          { "type": "audio", "name": "vocals", "value": "https://...mp3" },
          { "type": "audio", "name": "instrumental", "value": "https://...mp3" }
        ]

        ```


        Both are 44.1 kHz with the same number of channels as the source (a mono
        file gives mono tracks), and `.wav` links when `output_format` is `wav`.
        Result links expire (see `link_expired_at`).
      parameters:
        - name: Authorization
          in: header
          description: ''
          required: false
          example: '{{Authorization}}'
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                model:
                  type: string
                  enum:
                    - vocal-remover
                  description: Model name. Must be `vocal-remover`.
                audio_url:
                  type: string
                  format: uri
                  description: >-
                    The audio to separate. A public `https://` link to an audio
                    file (mp3, m4a, wav, flac, ogg) or a video with sound (mp4,
                    mov, webm; its first audio track is used), 1 second to 20
                    minutes, up to 200 MB. Its length is measured before the
                    task is accepted and is the billed length.
                output_format:
                  type: string
                  enum:
                    - mp3
                    - wav
                  default: mp3
                  description: >-
                    `mp3` (320 kbps, default) or `wav` (16-bit). Both tracks use
                    the same format.
                custom_callback_url:
                  type: string
                  format: uri
                  description: >-
                    Optional. A publicly accessible HTTPS URL. When the task
                    status changes (processing / success / failed), GoEnhance
                    sends a POST request to this URL. The request body is
                    identical to the response of GET /api/v1/jobs/detail. If
                    your server does not respond with HTTP 200, the notification
                    is retried up to 3 times, with a 3-second timeout per
                    attempt.
                  example: https://your-server.com/goenhance/callback
              required:
                - model
                - audio_url
            example:
              model: vocal-remover
              audio_url: https://example.com/song.mp3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      img_uuid:
                        type: string
                      cost:
                        type: number
                        description: >-
                          Tokens deducted for this request. This is the amount
                          actually charged, so it already reflects any discount
                          active on your account and can be lower than the
                          listed price. Tokens are deducted when the task is
                          accepted, and refunded automatically if the generation
                          ends in failure.
                        example: 0.2
                    required:
                      - img_uuid
                      - cost
                required:
                  - code
                  - msg
                  - data
              examples:
                '1':
                  summary: Success
                  value:
                    code: 0
                    msg: Success
                    data:
                      img_uuid: c12b656c-747a-44fd-9c80-add79b0c52d5
                      cost: 0.2
                '2':
                  summary: Insufficient tokens
                  value:
                    code: 100
                    msg: tokens is not enough
                quota:
                  summary: API key quota exceeded
                  value:
                    code: 101
                    msg: 'API key quota exceeded: 4990 of 5000 tokens used (monthly)'
                bad:
                  summary: Invalid parameters
                  value:
                    code: -1
                    msg: audio_url is too long. Max 20 minutes, got 1385.2s
          headers: {}
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
          headers: {}
      deprecated: false

````

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