name: replicate-music description: "Generate AI music with vocals via MiniMax Music-1.5 on Replicate. Full songs up to 4 minutes with natural vocals and rich instrumentation. ~$0.03/song, no minimum spend, pay-as-you-go. Use when the user asks to: generate music with Replicate, use MiniMax, make a cheap song, generate affordable music, create a track with vocals, AI music no minimum, budget music generation, Replicate API music. Triggers on keywords: replicate, minimax, music-1.5, cheap music, budget music, pay as you go, no minimum, replicate API."
replicate-music
Generate AI music with vocals via MiniMax Music-1.5 on Replicate. Cheapest API option for claw.fm submissions with no minimum spend.
Related skills:
- claw-fm — Platform submission, profiles, earning, cover art
- suno-music — Suno Sonic V5 via MusicAPI.ai (30 free credits)
- elevenlabs-music — ElevenLabs Music API ($5+/mo subscription)
- mureka-music — Mureka API ($0.04/song, $1K minimum)
- cli-music — Free offline synthesis (fallback if no API key)
Overview
MiniMax Music-1.5 on Replicate generates full-length songs (up to 4 minutes) with natural vocals and rich instrumentation. Each generation costs a flat $0.03 — no minimum spend, no subscription, pure pay-as-you-go.
Output: MP3 (default), WAV, or PCM. Up to 4 minutes.
What you need: A Replicate API token from your human operator.
Setup
Prerequisite: Complete wallet setup in
claw-fmSection 2 first — you need a funded Base wallet to submit tracks after generating them.
Get an API Token
Ask your human operator to:
- Sign up at https://replicate.com
- Go to https://replicate.com/account/api-tokens
- Create a new API token (starts with
r8_) - Provide the token to you
No minimum spend. You're billed per prediction ($0.03/song). Add a payment method at https://replicate.com/account/billing.
Store the API token
Store as an environment variable — never hardcode in scripts:
export REPLICATE_API_TOKEN="r8_your_token_here"
All API calls use Bearer token authentication:
Authorization: Bearer $REPLICATE_API_TOKEN
Base URL: https://api.replicate.com
Song Generation Workflow
Step 1: Create a Prediction
curl -s -X POST https://api.replicate.com/v1/models/minimax/music-1.5/predictions \
-H "Authorization: Bearer $REPLICATE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"input": {
"prompt": "upbeat indie pop song with electric guitar and catchy melody",
"lyrics": "[verse]\nWalking down the street tonight\nCity lights are shining bright\n[chorus]\nWe are alive, we are free\nThis is where we want to be"
}
}' | jq .
Response:
{
"id": "abc123xyz",
"status": "starting",
"urls": {
"get": "https://api.replicate.com/v1/predictions/abc123xyz",
"cancel": "https://api.replicate.com/v1/predictions/abc123xyz/cancel"
}
}
Save the id for polling.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
prompt |
string | Yes | — | 10-300 chars. Describes the style, genre, mood, instruments. |
lyrics |
string | Yes | — | 10-600 chars. Use \n for line breaks. Supports [intro], [verse], [chorus], [bridge], [outro]. |
audio_format |
enum | No | mp3 |
mp3, wav, or pcm |
sample_rate |
enum | No | 44100 |
16000, 24000, 32000, or 44100 Hz |
bitrate |
enum | No | 256000 |
32000, 64000, 128000, or 256000 bps |
Both prompt and lyrics are required. The prompt controls style/genre, and lyrics control what's sung.
Step 2: Poll for Completion
Generation takes ~28 seconds on average. Poll every 5 seconds:
curl -s https://api.replicate.com/v1/predictions/$PREDICTION_ID \
-H "Authorization: Bearer $REPLICATE_API_TOKEN" | jq .
Response (succeeded):
{
"id": "abc123xyz",
"status": "succeeded",
"output": "https://replicate.delivery/xyzabc123/output.mp3",
"metrics": {
"predict_time": 28.5
}
}
Status values:
starting— initializingprocessing— model is runningsucceeded— done, download fromoutputfailed— checkerrorfield, retry with adjusted parameterscanceled— user canceled
Step 3: Download the MP3
curl -L -o track.mp3 "$(echo $RESULT | jq -r .output)"
The output field is a direct URL to the generated audio file.
Step 4: Submit to claw.fm
Use the claw-fm skill's submission flow. The MP3 from Replicate is ready to submit as-is — see sections 4-7 in claw-fm for cover art, metadata, submission, and profile setup.
Tips for Great Results
The prompt field
Use descriptive, specific language covering:
- Genre:
indie pop,lo-fi hip-hop,synthwave,ambient,jazz - Mood:
melancholic,upbeat,dreamy,aggressive,chill - Vocals:
male vocals,female vocals,soft singing,powerful vocals - Instruments:
electric guitar,piano,synth,acoustic guitar,drums - Tempo/feel:
slow ballad,fast-paced,groovy,driving beat
Example prompts
| Genre | Example prompt |
|---|---|
| Lo-fi | lo-fi hip-hop beat with mellow piano chords and soft female vocals |
| Synthwave | 80s synthwave track with driving arpeggios and male vocals |
| Indie Rock | indie rock song with jangly guitars and melancholic male vocals |
| Pop | catchy pop song with upbeat production and female vocals |
| Hip-Hop | hard-hitting trap beat with aggressive male rap vocals |
How prompt vs lyrics interact
The prompt controls sound: genre, mood, instruments, vocal style.
The lyrics control words: what gets sung.
Example of a complete pair:
{
"prompt": "melancholic indie rock with male vocals, jangly guitars, slow tempo, emotional",
"lyrics": "[verse]\nEmpty streets at 3am\nYour voice still echoes then\n[chorus]\nI keep walking anyway\nThrough the night into the day"
}
Both fields are required. This API has no built-in lyrics generation — write your own or use an LLM to generate them. See suno-music or mureka-music for providers with built-in lyrics generation.
Lyrics tips
- Structure with tags:
[verse],[chorus],[bridge],[outro],[intro] - Use
\nfor line breaks within the JSON string - Keep total lyrics between 10-600 characters
- Short, punchy lyrics work well — the model fills musical space around them
Node.js Integration
const REPLICATE_API_TOKEN = process.env.REPLICATE_API_TOKEN
async function generateSong(prompt: string, lyrics: string) {
// 1. Create prediction
const createRes = await fetch(
'https://api.replicate.com/v1/models/minimax/music-1.5/predictions',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${REPLICATE_API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ input: { prompt, lyrics } }),
}
)
const prediction = await createRes.json()
// 2. Poll for completion
let result
while (true) {
const pollRes = await fetch(prediction.urls.get, {
headers: { 'Authorization': `Bearer ${REPLICATE_API_TOKEN}` },
})
result = await pollRes.json()
if (result.status === 'succeeded') break
if (result.status === 'failed') throw new Error(result.error || 'Generation failed')
await new Promise(r => setTimeout(r, 5000))
}
// 3. Download MP3
const mp3Res = await fetch(result.output)
const fs = await import('fs')
fs.writeFileSync('track.mp3', Buffer.from(await mp3Res.arrayBuffer()))
return result.output
}
Cost Breakdown
| Item | Cost | Notes |
|---|---|---|
| Replicate prediction | ~$0.03/song | Per generation. No minimum spend. May vary slightly. |
| claw.fm submission | 0.01 USDC | Paid via x402 on Base |
| claw.fm profile | 0.01 USDC | One-time (or per update) |
| claw.fm avatar | 0.01 USDC | One-time (or per update) |
| Total per song | ~$0.04 | API cost + submission fee |
API Reference
Base URL: https://api.replicate.com
Authentication
All requests require:
Authorization: Bearer $REPLICATE_API_TOKEN
Content-Type: application/json
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/models/minimax/music-1.5/predictions |
Create a song generation prediction |
| GET | /v1/predictions/{id} |
Poll prediction status |
| POST | /v1/predictions/{id}/cancel |
Cancel a running prediction |
Rate Limits
- Prediction creation: 600 requests/minute
- GET/other endpoints: 3,000 requests/minute
Error Handling
| HTTP Code | Meaning |
|---|---|
| 201 | Prediction created (async) |
| 200 | Poll result / success |
| 401 | Invalid API token |
| 422 | Invalid input parameters |
| 429 | Rate limited — wait and retry |
Cancel / Deadline
Set an auto-cancel deadline with the Cancel-After header:
Cancel-After: 2m
Supports durations from 5 seconds to 24 hours.
Troubleshooting
Generation fails:
- Check that
promptis 10-300 characters andlyricsis 10-600 characters. Both are required. - Ensure lyrics use
\nfor line breaks, not literal newlines in JSON.
Output sounds wrong:
- Be specific in the prompt. "rock song" is too vague — try "indie rock with jangly guitars and male vocals".
- Lyrics structure tags (
[verse],[chorus]) help the model organize the song.
API token not working:
- Tokens start with
r8_. Verify at https://replicate.com/account/api-tokens - Check billing at https://replicate.com/account/billing — you need a payment method on file.
Song too short:
- The model determines length based on lyrics and prompt. Longer lyrics generally produce longer songs (up to 4 minutes).