MuteMic REST API

Integrate vocal-free music directly into your content pipeline.
Search, filter, and download tracks programmatically.

Base URL: https://mutemic.com/api/v1
Studio Plan Required for Downloads ($25/mo)

Quick Start

Get a random ambient track as MP3 in one request:

curl -H "X-Api-Key: mm_your_key_here" \
  "https://mutemic.com/api/v1/tracks/download?genre=ambient&format=mp3" \
  -o track.mp3

Or get a lo-fi track between 70-90 BPM as WAV:

curl -H "X-Api-Key: mm_your_key_here" \
  "https://mutemic.com/api/v1/tracks/download?genre=lo-fi&bpm_min=70&bpm_max=90&format=wav" \
  -o track.wav

Authentication

Pass your API key via header (recommended) or query parameter:

# Header (recommended)
curl -H "X-Api-Key: mm_your_key_here" https://mutemic.com/api/v1/tracks

# Query parameter
curl "https://mutemic.com/api/v1/tracks?api_key=mm_your_key_here"

Your API key is in your Dashboard. Keep it secret — it grants download access to your account.

Plan Access

FeaturePro ($15/mo)Studio ($25/mo)
Search & browse tracks
Track metadata & previews
Download MP3 (320kbps)
Download WAV (24-bit/48kHz)
Download by filters (random)
API rate limit1,000 req/day1,000 req/day
Download limit100 tracks/day

Audio Formats

FormatQualitySample RateChannelsTypical Size
mp3320 kbps CBR48 kHzStereo~7 MB / 3 min
wav24-bit PCM48 kHzStereo~50 MB / 3 min

All tracks are mastered to -15 LUFS / -1 dBTP, voice-over safe, and loopable.

Endpoints

⭐ Download by Filters (Random Match)

GET/api/v1/tracks/download

Returns a random track file matching your filters. Perfect for automated pipelines — each request delivers a different track. Studio plan only.

ParameterTypeDescription
formatstringRequired. mp3 (320kbps) or wav (24-bit)
genrestringGenre slug: ambient, lo-fi, electronic, cinematic, etc.
moodstringMood slug: chill, epic, dark, energetic, etc.
bpm_minintMinimum BPM (e.g., 70)
bpm_maxintMaximum BPM (e.g., 120)
energy_minintMinimum energy 0-100 (e.g., 30)
energy_maxintMaximum energy 0-100 (e.g., 70)
keystringMusical key: C, Am, F#m, etc.
dur_minintMinimum duration in seconds
dur_maxintMaximum duration in seconds
qstringFull-text search (title, artist, tags)

Response: Audio file with metadata in HTTP headers:

HTTP/1.1 200 OK
Content-Type: audio/mpeg
Content-Disposition: attachment; filename="Aethel Rune - Obsidian Excavation.mp3"
X-Track-UUID: dfff355f-b0f9-00fc-d8a4-e3f158ba98b4
X-Track-Title: Obsidian Excavation
X-Track-Artist: Aethel Rune
X-Track-BPM: 85
X-Track-Key: Am
X-Track-Duration: 236
X-Track-ISRC: DGA0W26000042
X-Format: MP3 320kbps / 48kHz / Stereo
X-Downloads-Today: 3
X-Downloads-Remaining: 97

Examples:

# Ambient MP3 for YouTube background
curl -H "X-Api-Key: KEY" \
  "https://mutemic.com/api/v1/tracks/download?genre=ambient&format=mp3" -o bg.mp3

# Chill lo-fi WAV, 70-90 BPM for podcast
curl -H "X-Api-Key: KEY" \
  "https://mutemic.com/api/v1/tracks/download?genre=lo-fi&mood=chill&bpm_min=70&bpm_max=90&format=wav" -o pod.wav

# High-energy electronic for gaming video
curl -H "X-Api-Key: KEY" \
  "https://mutemic.com/api/v1/tracks/download?genre=electronic&energy_min=70&format=mp3" -o game.mp3

# Cinematic in A minor for film
curl -H "X-Api-Key: KEY" \
  "https://mutemic.com/api/v1/tracks/download?genre=cinematic&key=Am&format=wav" -o film.wav

# Any track under 2 minutes for Shorts/Reels
curl -H "X-Api-Key: KEY" \
  "https://mutemic.com/api/v1/tracks/download?dur_max=120&format=mp3" -o short.mp3

Download Specific Track

GET/api/v1/tracks/{uuid}/download?format=mp3

Download a specific track by UUID. Studio plan only.

curl -H "X-Api-Key: KEY" \
  "https://mutemic.com/api/v1/tracks/dfff355f-b0f9-00fc-d8a4-e3f158ba98b4/download?format=wav" \
  -o track.wav

Search Tracks

GET/api/v1/tracks

Search and filter tracks. Returns metadata (no audio). Available on Pro and Studio plans.

ParameterTypeDescription
qstringFull-text search query
genrestringGenre slug
moodstringMood slug
bpm_min / bpm_maxintBPM range
energy_min / energy_maxintEnergy range (0-100)
keystringMusical key
dur_min / dur_maxintDuration range (seconds)
sortstringnewest | popular | title | bpm | random
pageintPage number (default: 1)
per_pageintResults per page (1-100, default: 50)

Response:

{
  "data": [
    {
      "uuid": "dfff355f-b0f9-00fc-d8a4-e3f158ba98b4",
      "title": "Obsidian Excavation",
      "artist": "Aethel Rune",
      "bpm": 85,
      "duration": 236,
      "duration_fmt": "3:56",
      "key": "Am",
      "energy": 25,
      "genres": ["ambient"],
      "moods": ["chill", "dreamy"],
      "formats": {
        "mp3": {"quality": "320kbps", "sample_rate": "48kHz", "channels": "Stereo"},
        "wav": {"quality": "24-bit", "sample_rate": "48kHz", "channels": "Stereo"}
      },
      "cover_url": "https://mutemic.com/covers/dfff..._lg.jpg",
      "preview_url": "https://mutemic.com/stream/preview/dfff...",
      "download_url": "https://mutemic.com/api/v1/tracks/dfff.../download",
      "web_url": "https://mutemic.com/track/dfff..."
    }
  ],
  "pagination": {"page": 1, "pages": 42, "total": 2087, "per_page": 50}
}

Random Track (Metadata)

GET/api/v1/tracks/random

Get metadata for a random track matching filters. Same filter params as /tracks. Returns JSON (no file).

curl -H "X-Api-Key: KEY" \
  "https://mutemic.com/api/v1/tracks/random?genre=jazz&mood=chill"

List Genres

GET/api/v1/genres
curl -H "X-Api-Key: KEY" "https://mutemic.com/api/v1/genres"

# Response:
{"data": [
  {"slug": "ambient", "name": "Ambient"},
  {"slug": "lo-fi", "name": "Lo-Fi"},
  {"slug": "electronic", "name": "Electronic"},
  {"slug": "cinematic", "name": "Cinematic"},
  ...
]}

List Moods

GET/api/v1/moods
curl -H "X-Api-Key: KEY" "https://mutemic.com/api/v1/moods"

Account Stats

GET/api/v1/stats
curl -H "X-Api-Key: KEY" "https://mutemic.com/api/v1/stats"

# Response:
{
  "plan": "studio",
  "downloads_today": 12,
  "downloads_limit": 100,
  "downloads_remaining": 88,
  "api_calls_today": 47,
  "api_calls_limit": 1000,
  "formats_available": ["mp3", "wav"]
}

Rate Limits

LimitValueReset
API requests1000 / dayMidnight UTC
Downloads (Studio)100 / dayMidnight UTC

Rate limit info is included in response headers:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 953
X-Plan: studio
X-Downloads-Today: 12
X-Downloads-Remaining: 88

Error Responses

{
  "error": true,
  "code": 429,
  "message": "Daily download limit reached (100/day). Resets at midnight UTC."
}
CodeMeaning
400Invalid parameter (bad format, etc.)
401Missing or invalid API key
403Plan doesn't support this feature
404No tracks match filters / track not found
429Rate limit or download limit exceeded
500Server error (contact support)

Available Genres

acoustic afrobeat ambient blues bossanova celtic chillhop chillwave cinematic classical corporate country documentary downtempo drill dnb edm electronic folk funk gaming hip-hop house indie jazz latin lo-fi meditation metal motivational orchestral piano pop postrock r-n-b reggae reggaeton rock soul storytelling suspense synthwave techno trance trap uplifting world

Available Moods

aggressive chill dark dreamy energetic epic happy minimal mysterious romantic sad uplifting

Pipeline Integration Examples

Python

import requests

API_KEY = "mm_your_key_here"
BASE = "https://mutemic.com/api/v1"

# Download random ambient MP3
r = requests.get(f"{BASE}/tracks/download", headers={"X-Api-Key": API_KEY}, params={
    "genre": "ambient",
    "bpm_min": 70,
    "bpm_max": 110,
    "format": "mp3"
})

if r.status_code == 200:
    title = r.headers.get("X-Track-Title", "track")
    artist = r.headers.get("X-Track-Artist", "unknown")
    with open(f"{artist} - {title}.mp3", "wb") as f:
        f.write(r.content)
    print(f"Downloaded: {artist} - {title}")
    print(f"BPM: {r.headers['X-Track-BPM']}, Key: {r.headers['X-Track-Key']}")
    print(f"Remaining: {r.headers['X-Downloads-Remaining']}")
else:
    print(f"Error {r.status_code}: {r.json()['message']}")

Bash (batch download)

#!/bin/bash
# Download 10 different chill lo-fi tracks
API_KEY="mm_your_key_here"

for i in $(seq 1 10); do
  curl -sS -H "X-Api-Key: $API_KEY" \
    "https://mutemic.com/api/v1/tracks/download?genre=lo-fi&mood=chill&format=mp3" \
    -o "lofi_track_${i}.mp3" \
    -D /dev/stderr 2>&1 | grep "X-Track-Title"
  sleep 1  # Be nice to the API
done

Node.js

const fetch = require('node-fetch');
const fs = require('fs');

const API_KEY = 'mm_your_key_here';

async function downloadTrack(genre, format = 'mp3') {
  const url = `https://mutemic.com/api/v1/tracks/download?genre=${genre}&format=${format}`;
  const res = await fetch(url, { headers: { 'X-Api-Key': API_KEY } });

  if (!res.ok) {
    const err = await res.json();
    throw new Error(err.message);
  }

  const title = res.headers.get('X-Track-Title');
  const artist = res.headers.get('X-Track-Artist');
  const buffer = await res.buffer();
  fs.writeFileSync(`${artist} - ${title}.${format}`, buffer);
  console.log(`Downloaded: ${artist} - ${title} (${res.headers.get('X-Format')})`);
}

downloadTrack('cinematic', 'wav');

Need help? Questions about integration?

Get Studio Plan View API Key
0:00 / 0:00