MCP Server · REST API · Instant Licensing

MCP Server · REST API · Instant Licensing

Your catalog, inside every
AI pipeline.

Your catalog, inside every
AI pipeline.

Your catalog, inside every
AI pipeline.

Search 10,000+ licensed tracks by mood, energy, tempo, and duration — directly from your code. One call. Instant license.

Search 10,000+ licensed tracks by mood, energy, tempo, and duration — directly from your code. One call. Instant license.

import requests, os

API_KEY = os.environ["TRACKYARD_API_KEY"]
BASE = "https://api.trackyard.com/api/external/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# Search
tracks = requests.post(
    f"{BASE}/search",
    headers=HEADERS,
    json={"query": "chill lo-fi background music", "limit": 3},
).json()["tracks"]

# Download first result as full track
with open("track.mp3", "wb") as f:
    f.write(requests.post(
        f"{BASE}/download-track",
        headers=HEADERS,
        json={"track_id": tracks[0]["id"]},
    ).content)
import requests, os

API_KEY = os.environ["TRACKYARD_API_KEY"]
BASE = "https://api.trackyard.com/api/external/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# Search
tracks = requests.post(
    f"{BASE}/search",
    headers=HEADERS,
    json={"query": "chill lo-fi background music", "limit": 3},
).json()["tracks"]

# Download first result as full track
with open("track.mp3", "wb") as f:
    f.write(requests.post(
        f"{BASE}/download-track",
        headers=HEADERS,
        json={"track_id": tracks[0]["id"]},
    ).content)

generate_video.py

generate_video.py

↳ 3 results returned

🎼

Summit Drive

cinematic · orchestral · 128bpm

0:30

🎸

Apex Hour

cinematic · hybrid · 124bpm

0:30

🥁

The Last Push

cinematic · electronic · 130bpm

0:31

API Resources.

API Resources.

API Resources.

Tens of thousands of legally cleared tracks, AI-powered search, and smart clip trimming — all via a single API key

Tens of thousands of legally cleared tracks, AI-powered search, and smart clip trimming — all via a single API key

Tens of thousands of legally cleared tracks, AI-powered search, and smart clip trimming — all via a single API key

Trackyard MCP

Trackyard MCP

New

Use your API key with any MCP-compatible AI agent — Claude, Cursor, and more — to agentically search and download music. Automatically trims tracks to fit your exact use case (e.g. a 22-second clip for a 22-second video).

Use your API key with any MCP-compatible AI agent — Claude, Cursor, and more — to agentically search and download music. Automatically trims tracks to fit your exact use case (e.g. a 22-second clip for a 22-second video).

npx @lnrz-xyz/trackyard-mcp

Trackyard OpenClaw Skill

Trackyard OpenClaw Skill

New

Install the Trackyard skill for OpenClaw to search and download music directly from your bot workflows.

Install the Trackyard skill for OpenClaw to search and download music directly from your bot workflows.

npx clawhub@latest install trackyard

Use cases

Built for every pipeline
that touches video.

Built for
every pipeline
that touches video.

Whether you're running 100 renders a day or 100,000 — Trackyard scales with you.

📱

Social Media Content Farms

Auto-match music to short-form video at scale. Exact clip lengths, no fading required.

duration_seconds: 15 | 30 | 60

📣

Social Media Ads

Hit your sonic peak at the exact moment your product appears on screen.

hit_point_seconds: 8

🎬

AI Video Generation

Plug directly into Sora, Runway, or your custom pipeline. Search → Download in one chain.

/search → /download-track

🎙️

YouTube & Podcasts

Non-intrusive background music that never competes with your voice. Low-energy, licensed, looping.

energy: low

📦

Product Demos & Unboxing

Match the vibe of the product — minimal for tech, upbeat for lifestyle, warm for lifestyle brands.

mood: minimal | upbeat | warm

🏡

Real Estate Walkthroughs

Open, spacious, ambient scoring that lets the property breathe. Built for drone footage and interiors.

mood: ambient, spacious

🏢

Corporate & Training Video

Auto-score content by category — onboarding, explainer, product walkthrough — using a single config key.

category: corporate

🎮

App & Game Trailers

Build tension, drop it on the title card. Hit points let you choreograph every reveal to the beat.

hit_point_seconds: 18

API Documentation.

API Documentation.

API Documentation.

Tens of thousands of legally cleared tracks, AI-powered search, and smart clip trimming — all via a single API key

Tens of thousands of legally cleared tracks, AI-powered search, and smart clip trimming — all via a single API key

Tens of thousands of legally cleared tracks, AI-powered search, and smart clip trimming — all via a single API key

Base URL:

https://api.trackyard.com/api/external/v1

Auth header:

Authorization: Bearer YOUR_API_KEY

POST

/search

1 credit

Natural-language music search. Returns up to 100 tracks with metadata and preview URLs. Paid plans also get smart intent extraction — genres, moods, BPM, and instruments are auto-inferred from your query.

Natural-language music search. Returns up to 100 tracks with metadata and preview URLs. Paid plans also get smart intent extraction — genres, moods, BPM, and instruments are auto-inferred from your query.

Key request fields

Key request fields

query required

query required

— natural language description

— natural language description

limit

limit

— max results (default 20, max 100)

— max results (default 20, max 100)

offset

offset

— pagination offset

— pagination offset

filters.genres / moods / min_bpm / max_bpm / has_vocals / energy_level / instruments — pagination offset

filters.genres / moods / min_bpm / max_bpm / has_vocals / energy_level / instruments — pagination offset

Response Includes

Response Includes

tracks[].id

tracks[].id

— use with download endpoint

— use with download endpoint

credits_remaining

credits_remaining

— updated balance

— updated balance

curl -X POST https://api.trackyard.com/api/external/v1/search \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "upbeat electronic for tech startup video",
    "limit": 5,
    "filters": { "has_vocals": false }
  }'

POST

/download_track

1 credit

Download a track as a streamed MP3. Pass duration_seconds to get a smart-trimmed clip — the backend analyses the waveform to find the best-sounding segment. Optionally align a musical hit to a specific offset with hit_point_seconds.

Download a track as a streamed MP3. Pass duration_seconds to get a smart-trimmed clip — the backend analyses the waveform to find the best-sounding segment. Optionally align a musical hit to a specific offset with hit_point_seconds.

track_id required

track_id required

duration_seconds

duration_seconds

— clip length in seconds; omit for full track

— clip length in seconds; omit for full track

hit_point_seconds

hit_point_seconds

— offset where the dominant energy peak should land (requires duration_seconds)

— offset where the dominant energy peak should land (requires duration_seconds)

Full track

curl -X POST https://api.trackyard.com/api/external/v1/download-track \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"track_id": "TRACK_ID"}' \
  --output track.mp3

30-second clip (best segment auto-selected)

curl -X POST https://api.trackyard.com/api/external/v1/download-track \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"track_id": "TRACK_ID", "duration_seconds": 30}' \
  --output clip.mp3

22-second clip — big hit lands at 12 seconds

curl -X POST https://api.trackyard.com/api/external/v1/download-track \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"track_id": "TRACK_ID", "duration_seconds": 22, "hit_point_seconds": 12}' \
  --output clip.mp3

Response: Content-Type: audio/mpeg with Content-Disposition: attachment; filename="..."

GET

/me

free

Returns API key metadata: tier, credits remaining, monthly allowance, and rate limits.

Returns API key metadata: tier, credits remaining, monthly allowance, and rate limits.

curl https://api.trackyard.com/api/external/v1/me \
  -H "Authorization: Bearer $API_KEY"
curl https://api.trackyard.com/api/external/v1/me \
  -H "Authorization: Bearer $API_KEY"

GET

/usage

free

Paginated usage history. Supports limit and offset query params. Each record includes endpoint, status code, credits consumed, and response time.

Paginated usage history. Supports limit and offset query params. Each record includes endpoint, status code, credits consumed, and response time.

curl "https://api.trackyard.com/api/external/v1/usage?limit=50&offset=0" \
  -H "Authorization: Bearer $API_KEY"

Rate Limit Headers

Rate Limit Headers

Every response includes these headers so you can track usage programmatically.

Every response includes these headers so you can track usage programmatically.

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 8
X-RateLimit-Limit-Daily: 1000
X-RateLimit-Remaining-Daily: 987
X-Credits-Remaining: 487

Error Codes

Error Codes

401

401

Invalid or missing API key

Invalid or missing API key

402

402

Out of credits — top up or upgrade your plan

Out of credits — top up or upgrade your plan

429

429

Rate limit exceeded — response includes retry_after seconds

Rate limit exceeded — response includes retry_after seconds

429

429

Rate limit exceeded — response includes retry_after seconds

Rate limit exceeded — response includes retry_after seconds

Code Examples

Code Examples

Javascript

Javascript

const API_KEY = process.env.TRACKYARD_API_KEY
const BASE = "https://api.trackyard.com/api/external/v1"

// 1. Search
const searchRes = await fetch(`${BASE}/search`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    query: "upbeat music for tech startup promo video",
    limit: 5,
    filters: { has_vocals: false },
  }),
})
const { tracks, credits_remaining } = await searchRes.json()

// 2. Download the top result as a 30-second clip
const dlRes = await fetch(`${BASE}/download-track`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ track_id: tracks[0].id, duration_seconds: 30 }),
})
const mp3Buffer = await dlRes.arrayBuffer()

Python

Python

import requests, os

API_KEY = os.environ["TRACKYARD_API_KEY"]
BASE = "https://api.trackyard.com/api/external/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# Search
tracks = requests.post(
    f"{BASE}/search",
    headers=HEADERS,
    json={"query": "chill lo-fi background music", "limit": 3},
).json()["tracks"]

# Download first result as full track
with open("track.mp3", "wb") as f:
    f.write(requests.post(
        f"{BASE}/download-track",
        headers=HEADERS,
        json={"track_id": tracks[0]["id"]},
    ).content)

Start building in minutes.

Get an API key, run your first search, and have a licensed track in your pipeline before your coffee cools.

Human creativity, amplified.

Copyright © Trackyard

Human creativity, amplified.

Copyright © Trackyard

Human creativity, amplified.

Copyright © Trackyard