Audio Generation

MiniMax Music 2.5 API

MiniMax Music 2.5 — generate full-length original music tracks from a lyrics block (with structure tags like [verse] / [chorus]) and an optional style prompt. Returns a hosted MP3 URL. Billed per successful generation.

model: minimax_voice/music-2.5
Wholesale key required. This endpoint accepts wholesale keys only. Have access? Get your key on the wholesale dashboard. Not on wholesale yet? Email admin@skillboss.co with your use case — we'll get you provisioned.

Quickstart

Audio generation uses /v1/run. TTS models accept `inputs.text` + optional `inputs.voice_id` and are billed per input character. Music generation accepts `inputs.lyrics` + optional style `inputs.prompt` and is billed per successful generation. Response includes a signed URL to the generated MP3 (fetch within ~24h before the link expires).

bashcurl --max-time 180 https://api.skillboss.co/v1/run \
  -H "Authorization: Bearer $SKILLBOSS_WHOLESALE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax_voice/music-2.5",
    "inputs": {
      "lyrics": "[verse]\nThe city lights are calling me tonight\n[chorus]\nWe are alive, we are alive",
      "prompt": "uplifting indie pop, female vocal, 120 bpm"
    }
  }'

Your first 200 response is the fastest way to confirm setup. From there, swap in your real prompt and tune the model-specific parameters listed below.

Authentication

Every request must include your wholesale key. The header name depends on the endpoint — match the SDK you're using:

bashAuthorization: Bearer $SKILLBOSS_WHOLESALE_KEY

Treat the wholesale key like a password — never commit it to source control or ship it in client-side bundles. Rotate from the wholesale dashboard if exposed. Standard (non-wholesale) console keys are rejected at the gateway with 401.

Code examples

Python
pythonimport os, requests

resp = requests.post(
    "https://api.skillboss.co/v1/run",
    headers={"Authorization": f"Bearer {os.environ['SKILLBOSS_WHOLESALE_KEY']}"},
    json={
        "model": "minimax_voice/music-2.5",
        "inputs": {
            "lyrics": "[verse]\nThe city lights are calling me tonight\n[chorus]\nWe are alive, we are alive",
            "prompt": "uplifting indie pop, female vocal, 120 bpm",
        },
    },
    timeout=180,
)
data = resp.json()
print(data["outputs"][0]["url"])  # signed URL to the generated MP3
JavaScript / TypeScript
typescriptconst resp = await fetch("https://api.skillboss.co/v1/run", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SKILLBOSS_WHOLESALE_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "minimax_voice/music-2.5",
    inputs: {
      lyrics: "[verse]\nThe city lights are calling me tonight\n[chorus]\nWe are alive, we are alive",
      prompt: "uplifting indie pop, female vocal, 120 bpm",
    },
  }),
});
const data = await resp.json();
console.log(data.outputs[0].url);  // signed URL to the generated MP3

Parameters

Pass the model identifier as a top-level model field, and all generation parameters under an inputs object. TTS models use inputs.text + inputs.voice_id; music models use inputs.lyrics + inputs.prompt. See the model card on the wholesale dashboard for the full voice library and music style hints.

NameTypeRequiredDescription
modelstringrequiredModel id. Use minimax_voice/music-2.5.
inputs.lyricsstringrequiredLyrics block — supports structure tags like [verse], [chorus], [bridge]. Newlines separate lines.
inputs.promptstringoptionalStyle prompt — e.g. uplifting indie pop, female vocal, 120 bpm. Guides genre, mood, vocal style, and tempo.

Endpoint

MethodPOST
URLhttps://api.skillboss.co/v1/run
Auth headerAuthorization: Bearer $SKILLBOSS_WHOLESALE_KEY
Content-Typeapplication/json
StreamingNo SSE streaming — audio jobs return a complete MP3 URL in a single response.

Errors

The API uses standard HTTP status codes:

200OKRequest succeeded.
400Bad RequestInvalid model, missing required field, or malformed JSON.
401UnauthorizedMissing or invalid wholesale key. Non-wholesale console keys are rejected here.
402Insufficient CreditsWholesale balance too low — top up on the wholesale dashboard.
429Rate LimitedToo many requests. Back off with exponential delay.
500Server ErrorTransient upstream issue. Safe to retry.
503Upstream UnavailableDiscount pool capacity issue (lite tier). Retry or fall back to standard tier.

Pricing

Wholesale pricing is your account-specific discount × vendor list price. Discount rate depends on your contract — see the live numbers on the wholesale dashboard. The dashboard shows your current cost per 1M tokens (or per image / per second) for every model.

No platform markup on standard token billing. Volume tiers + monthly caps are configurable per key.