Proprietary AI Music Engine · Differson LLC

The AI music API you can actually ship.

Generate original, studio-quality music from a single call. Built on our own models — license-clean output, an official REST API, and a fraction of the cost of grey-market wrappers.

— Our own models— Commercial license included— Official REST API
01

License-clean by design

Trained on our own data — no unauthorized third-party catalog. Every track ships with a commercial license.

02

Official & stable

A real REST API with keys you control — not a reverse-engineered workaround that breaks when an upstream account is banned.

03

Genre-tuned quality

Purpose-built for Rock, Hip-Hop, Post Punk, and Indie — vocal or instrumental, at studio-quality resolution.

04

Priced to ship

Proprietary tech means no third-party markup — a fraction of the per-track cost of grey-market wrappers.

Grey-market wrappersMcRock API
Official API & keysReverse-engineeredOfficial
IP & training dataModel in active litigationOur own models
Output licenseUnclear / borrowedCommercial license
ReliabilityBreaks on account bansStable keys you own
Per-track cost$$A fraction of it
API v1 — Live

McRock API

Generate AI music programmatically. Integrate McRock's engine directly into your app, game, or platform.

Base URLhttps://us-central1-mcrock-music.cloudfunctions.net
1

Authentication

All requests require an API key in the x-api-key header. Get your key in Settings → API Access (Enterprise plan only).

http
POST /apiV1Generate HTTP/1.1
Content-Type: application/json
x-api-key: YOUR_API_KEY

Keep your key secret. Never expose it in client-side code or public repos. Use environment variables server-side only.

2

Generate a Song

POST/apiV1Generate

Submits a song generation job. Returns a jobId immediately — poll /apiV1Status to track progress.

Simple mode — context in, song out.Pass a context string (user story, conversation, or any text) and McRock auto-generates the track title, lyrics, and music in one call. No need to write lyrics yourself.

Request Body

ParameterTypeDescription
contextrequiredstringAny text — user story, conversation, emotions, a situation. McRock extracts a track title and writes lyrics automatically.
genrestringhiphop rnb postpunk Default: auto-detected from context
voiceTypestring"male" "female" Default: male
musicIntensitystring"low" "medium" "high" "max" Default: medium

Example Request

bash
curl -X POST \
  https://us-central1-mcrock-music.cloudfunctions.net/apiV1Generate \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "context": "I've been feeling like I don't fit in anywhere lately. Just tired of pretending.",
    "genre": "hiphop",
    "voiceType": "male",
    "musicIntensity": "high"
  }'

Response

json
{
  "jobId": "abc123def456",
  "status": "queued",
  "pollUrl": "https://us-central1-mcrock-music.cloudfunctions.net/apiV1Status?jobId=abc123def456",
  "quotaRemaining": 9517,
  "title": "Don't Fit In",
  "lyrics": "[Verse 1]\nTired of pretending, done with the game..."
}
3

Poll Job Status

GET/apiV1Status?jobId={jobId}

Poll this endpoint every 10 seconds until status is "complete" or "failed". The pollUrl from the generate response is the pre-built URL to call.

bash
curl \
  "https://us-central1-mcrock-music.cloudfunctions.net/apiV1Status?jobId=abc123def456" \
  -H "x-api-key: YOUR_API_KEY"
json
// Queued — job accepted, waiting for GPU slot
{ "status": "queued" }

// Generating — music is being composed
{ "status": "generating", "message": "generating" }
{ "status": "generating", "message": "mixing" }

// Encoding — longest phase, can take several minutes
{ "status": "generating", "message": "encoding audio" }

// Complete — audioUrl is a direct .wav download link (no auth required)
{
  "status": "complete",
  "audioUrl": "https://storage.googleapis.com/mcrock-music.firebasestorage.app/ace-step-temp/ace_abc123.wav"
}

// Failed
{ "status": "failed", "error": "Generation failed" }
Generation Stages
queuedJob accepted, waiting for a GPU slot
generating / mixingMusic composition in progress
encoding audioAudio encoding — the longest phase, can take several minutes. Do not cancel.
completeDone — audioUrl is available (.wav, Firebase Storage direct link, no expiry)

Transient polling errors are expected.

During active generation, /apiV1Status may occasionally return a non-2xx response or malformed body. This is normal — treat it as generating and continue polling. Only abort after 5 or more consecutive errors.

Timing: Total generation is typically 3–5 minutes, but can reach 8–10 minutes for longer tracks (the encoding audio phase is the variable). Set your client timeout to at least 12 minutes to avoid aborting a healthy job.

4

Error Codes

StatusErrorMeaning
401Missing x-api-key headerx-api-key header not present in request
401Invalid or revoked API keyKey is incorrect, expired, or was revoked
403API access requires Enterprise planYour account is not on the Enterprise plan
429Monthly quota exceededYou have used all 10,000 songs this billing cycle
400lyrics and title are requiredRequest body missing required fields
405POST onlyUse POST method, not GET or others
502Engine unreachableGeneration backend temporarily unavailable — retry
500Generation timed outSong generation took too long — retry the request
5

Limits

10,000

Monthly Songs

Enterprise plan — resets each billing cycle

3–10 min

Generation Time

Typical 3–5 min; encoding phase can extend to 10 min

10s

Poll Interval

Recommended — abort only after 5+ consecutive errors

12 min

Client Timeout

Minimum recommended before giving up on a job

Ready to integrate?

Your API key is in Settings on the Enterprise plan.