Skip to content

Separate Voice API

Pricing

25 credits per request

Fixed cost regardless of audio length or file size.

Overview

The Separate Voice API separates vocals (voice) and instrumental (background music/effects) from audio or video files using dedicated AI models for high-quality audio separation.

Endpoint: https://api.revidapi.com/paid/separate/audio


Endpoints

Method Endpoint Auth Description
POST https://api.revidapi.com/paid/separate/audio ✅ Required Create voice separation task
GET https://edit.revidapi.com/api/get/{task_id} Check task status
GET https://edit.revidapi.com/output/{filename} Download result file

Request

Headers

  • x-api-key: Required
  • Content-Type: application/json (JSON body) or multipart/form-data (form body)

Parameters

Parameter Type Description
audio_url string Required. URL of audio/video file to separate
output_format string mp3, wav, flac. Default: mp3
headers object Custom headers when server downloads file (cookie, Referer, ...)

Note: Supports both JSON body and multipart/form-data. In n8n you can use form-data with field audio_url.

Output Formats

Format Quality Size Description
mp3 Good Small Common format, high compatibility
wav Highest Large Uncompressed, original quality
flac High Medium Lossless compression

Response

Immediate Response (Task Created)

POST endpoint returns immediately with task_id:

{
  "task_id": "60174a16-b6fa-47b1-8c5f-c54cc434c0df",
  "status": "pending",
  "message": "Task queued",
  "type": "separate_voice"
}

Task Status (GET)

Use task_id to poll status:

GET https://edit.revidapi.com/api/get/{task_id}

⏳ Processing

{
  "task_id": "60174a16-b6fa-47b1-8c5f-c54cc434c0df",
  "status": "processing",
  "type": "separate_audio",
  "progress": 50,
  "message": "Processing with UVR-MDX-NET-Voc_FT.onnx...",
  "created_at": "2025-12-24T05:41:40.670179",
  "completed_at": null,
  "result": null
}

✅ Completed

{
  "task_id": "60174a16-b6fa-47b1-8c5f-c54cc434c0df",
  "status": "completed",
  "type": "separate_voice",
  "progress": 100,
  "message": "Voice separation completed",
  "created_at": "2025-12-24T05:41:40.670179",
  "completed_at": "2025-12-24T05:42:27.137799",
  "result": {
    "vocals_url": "/output/vocals_60174a16.mp3",
    "instrumental_url": "/output/instrumental_60174a16.mp3",
    "model_used": "UVR-MDX-NET-Voc_FT.onnx"
  }
}

❌ Failed

{
  "task_id": "60174a16-b6fa-47b1-8c5f-c54cc434c0df",
  "status": "failed",
  "type": "separate_voice",
  "progress": 0,
  "message": "Failed to download audio: HTTP 401",
  "created_at": "2025-12-24T05:41:40.670179",
  "completed_at": "2025-12-24T05:41:41.123456",
  "result": null
}

Result Fields

Field Type Description
vocals_url string URL of vocals file (relative path)
instrumental_url string URL of instrumental/background file (relative path)
model_used string Model that was used

Note: URLs are relative paths, need to add domain https://edit.revidapi.com to download.


Example Requests

Example

JSON body:

curl -X POST https://api.revidapi.com/paid/separate/audio \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"audio_url": "https://example.com/audio.mp3"}'

Multipart (n8n): Use contentType: multipart-form-data, field audio_url = audio URL (e.g. from previous response).

Check Status

curl https://edit.revidapi.com/api/get/60174a16-b6fa-47b1-8c5f-c54cc434c0df

Download Results

# Download vocals
curl -O https://edit.revidapi.com/output/vocals_60174a16.mp3

# Download instrumental
curl -O https://edit.revidapi.com/output/instrumental_60174a16.mp3

Processing Time

Audio Length Fast Model Quality Model
1 minute ~30s ~60s
5 minutes ~2 minutes ~4 minutes
10 minutes ~4 minutes ~8 minutes

Workflow

┌─────────────────────────────────────┐
│ 1. POST separate-voice              │
│    Input: audio_url, model          │
│    Output: task_id                  │
└─────────────────────────────────────┘
                ↓
┌─────────────────────────────────────┐
│ 2. Wait 30-60 seconds               │
│    (depending on audio length)      │
└─────────────────────────────────────┘
                ↓
┌─────────────────────────────────────┐
│ 3. GET /api/get/{task_id}           │
│    Check status                      │
└─────────────────────────────────────┘
                ↓
        ┌──────┴──────┐
        │             │
   processing     completed
        │             │
        ↓             ↓
   Loop back    ┌─────────────────────┐
   to Wait      │ 4. Download files   │
                │    - vocals_url     │
                │    - instrumental_url│
                └─────────────────────┘

Use Cases

1. Create Karaoke Videos

Original video → Separate instrumental → Combine with new vocals

2. Translate Videos While Keeping Background Music

Original video → Separate instrumental + vocals
→ Translate vocals → TTS in new language
→ Combine TTS + instrumental

3. Remove Background Music, Keep Speech

Tutorial video → Separate vocals → Use clean vocals

4. Extract Background Music

Video → Separate instrumental → Use as background music

Important Notes

1. Audio URL

  • URL must be public or provide headers with cookie/token
  • URLs from TikTok/Douyin often expire quickly (few minutes) - should download first
  • Supports both video and audio: MP4, MP3, WAV, FLAC, WebM, etc.

2. Separation Quality

  • Vocals: Main voice/singing
  • Instrumental: Background music, effects, sounds

Tips for better quality:

  • Higher quality source audio → better separation results
  • If vocals still mixed in, can run twice (2-pass)

3. Limits

  • Maximum file size: 500MB
  • Maximum duration: 30 minutes
  • Timeout: 10 minutes per task

Troubleshooting

Error: HTTP 401/403

Cause: URL requires authentication

Solution:

{
  "audio_url": "https://protected-site.com/audio.mp3",
  "headers": {
    "Cookie": "session=abc123"
  }
}

Error: File too small

Cause: Download failed, file corrupted

Solution: - Check if URL is valid - Try downloading manually to see if it works - URL may have expired

Error: Model not found

Cause: Incorrect model name

Instrumental still contains vocals

Cause: Model cannot separate perfectly 100%

Solution: 1. Use higher quality model: UVR-MDX-NET-Voc_FT.onnx 2. Run twice (2-pass): Separate once → Get instrumental → Separate again


Usage Notes

  1. Fixed Pricing: This endpoint charges a fixed 25 credits per request, regardless of audio length.
  2. POST returns immediately with task_id (does not wait for processing)
  3. GET task status to retrieve results (poll in loop)
  4. Supported formats: MP3, WAV, FLAC, MP4, WebM, and other common audio/video formats
  5. Asynchronous processing: Use webhooks for better reliability with long audio files
  6. Model selection: Choose model based on quality vs speed requirements

Best Practices

  1. Use Webhooks: Always use webhooks for better reliability, especially for long audio files
  2. Unique IDs: Provide unique id values for tracking requests
  3. Model Selection: Use quality model for final production, fast model for testing
  4. URL Accessibility: Ensure audio URLs are publicly accessible or provide proper authentication headers
  5. File Size: Consider file size and duration limits before submitting requests
  6. Error Handling: Implement robust error handling for various HTTP status codes