Login
Back to Blog
Suno Music API Tutorial: Generate AI Music Programmatically in 2026

Suno Music API Tutorial: Generate AI Music Programmatically in 2026

C
Crazyrouter Team
February 21, 2026
1172 viewsEnglishTutorial
Share:

What Is Suno Music API?#

Suno is the leading AI music generation platform that creates full songs — vocals, instrumentals, and lyrics — from text prompts. While most people know Suno through its web interface, the real power for developers lies in its API, which lets you programmatically generate music for apps, games, content platforms, and creative tools.

With the Suno API, you can:

  • Generate complete songs with vocals and lyrics from a text description
  • Create instrumental tracks for background music
  • Generate lyrics separately for review before music creation
  • Control style, genre, mood, and duration
  • Build music generation into any application

How to Access the Suno API#

Suno doesn't offer a public API directly to all users. However, you can access Suno's music generation capabilities through API aggregators like Crazyrouter, which provides an OpenAI-compatible endpoint for Suno and 300+ other AI models.

Setup#

bash
pip install openai requests

Generate a Song with Python#

python
import requests
import time

API_KEY = "your-crazyrouter-key"
BASE_URL = "https://api.crazyrouter.com"

# Step 1: Submit a music generation request
response = requests.post(
    f"{BASE_URL}/suno/submit/music",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "A chill lo-fi hip hop beat with soft piano and vinyl crackle, perfect for studying late at night",
        "tags": "lo-fi, hip-hop, chill, instrumental",
        "mv": "chirp-v4",
        "make_instrumental": True
    }
)

task_id = response.json()["data"]["task_id"]
print(f"Task submitted: {task_id}")

# Step 2: Poll for completion
while True:
    status = requests.get(
        f"{BASE_URL}/suno/fetch/{task_id}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    ).json()

    if status["data"]["status"] == "completed":
        for track in status["data"]["tracks"]:
            print(f"Track: {track['title']}")
            print(f"Audio URL: {track['audio_url']}")
            print(f"Duration: {track['duration']}s")
        break
    elif status["data"]["status"] == "failed":
        print("Generation failed:", status["data"]["error"])
        break

    time.sleep(10)  # Check every 10 seconds

Generate a Song with Lyrics#

python
# Generate a complete song with AI-written lyrics
response = requests.post(
    f"{BASE_URL}/suno/submit/music",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "An upbeat pop song about a developer who finally fixed a production bug at 3am",
        "tags": "pop, upbeat, fun, electronic",
        "mv": "chirp-v4",
        "make_instrumental": False
    }
)

Generate Lyrics Only#

If you want to review or edit lyrics before generating music:

python
response = requests.post(
    f"{BASE_URL}/suno/submit/lyrics",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "A rock ballad about the open source community"
    }
)

lyrics_data = response.json()
print(lyrics_data["data"]["text"])

Custom Lyrics with Music#

python
custom_lyrics = """
[Verse 1]
Lines of code at midnight glow
Coffee cold but spirits high
Every bug a chance to grow
Every fix a battle cry

[Chorus]
We build the future line by line
Open source, the code is mine and yours
Together we design
A world that runs on what we pour

[Verse 2]
Pull requests at dawn arrive
Reviews sharp but always kind
In this repo we're alive
Leaving legacy behind
"""

response = requests.post(
    f"{BASE_URL}/suno/submit/music",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": custom_lyrics,
        "tags": "rock, ballad, anthemic, guitar",
        "mv": "chirp-v4",
        "make_instrumental": False
    }
)

cURL Example#

bash
curl -X POST https://api.crazyrouter.com/suno/submit/music \
  -H "Authorization: Bearer your-crazyrouter-key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A jazzy instrumental with saxophone and soft drums",
    "tags": "jazz, saxophone, smooth, instrumental",
    "mv": "chirp-v4",
    "make_instrumental": true
  }'

API Parameters Reference#

ParameterTypeRequiredDescription
promptstringYesText description or custom lyrics
tagsstringNoGenre and style tags (comma-separated)
mvstringNoModel version (e.g., "chirp-v4")
make_instrumentalbooleanNoIf true, generates without vocals
titlestringNoCustom title for the track

Style Tags That Work Well#

GenreExample Tags
Poppop, catchy, upbeat, synth
Rockrock, guitar, drums, energetic
Lo-filo-fi, chill, hip-hop, vinyl
Jazzjazz, saxophone, smooth, swing
ElectronicEDM, electronic, bass, drop
Classicalorchestral, piano, strings, cinematic
R&Br&b, soul, smooth, groove

Pricing#

ProviderCost per SongSongs per $Notes
Suno Pro (subscription)~$0.502Monthly plan required
Suno Premier~$0.254Annual plan
Crazyrouter API~$0.1010Pay-as-you-go

Through Crazyrouter, you pay per generation with no subscription commitment. This is ideal for developers who need programmatic access without managing a Suno subscription.

Use Cases#

1. Content Creation Platforms#

Automatically generate background music for video editors, podcast intros, or social media content:

python
def generate_background_music(video_mood, duration_hint):
    """Generate background music matching video mood."""
    mood_to_tags = {
        "happy": "upbeat, pop, cheerful, bright",
        "dramatic": "cinematic, orchestral, epic, intense",
        "chill": "lo-fi, ambient, relaxed, soft",
        "energetic": "electronic, EDM, fast, powerful"
    }

    response = requests.post(
        f"{BASE_URL}/suno/submit/music",
        headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
        json={
            "prompt": f"A {video_mood} instrumental track, approximately {duration_hint}",
            "tags": mood_to_tags.get(video_mood, "ambient, background"),
            "make_instrumental": True
        }
    )
    return response.json()["data"]["task_id"]

2. Game Development#

Generate dynamic soundtracks based on game state:

python
# Generate battle music
battle_music = generate_music(
    prompt="Intense battle theme with fast drums and electric guitar",
    tags="game, battle, intense, fast, orchestral"
)

# Generate exploration music
explore_music = generate_music(
    prompt="Peaceful exploration theme with soft flute and ambient pads",
    tags="game, ambient, peaceful, exploration, fantasy"
)

3. Personalized Jingles#

Create custom jingles for brands or products:

python
jingle = generate_music(
    prompt="A short catchy jingle for a tech startup, modern and friendly, 15 seconds",
    tags="jingle, corporate, modern, short, catchy"
)

Tips for Better Results#

  1. Be specific with prompts — "upbeat pop song with female vocals about summer road trips" works better than "a happy song"
  2. Use style tags — they significantly influence the output genre and mood
  3. Iterate on lyrics — generate lyrics first, edit them, then submit with music
  4. Specify instruments — mentioning specific instruments (piano, guitar, saxophone) gives more control
  5. Keep prompts under 200 words — concise descriptions tend to produce better results

FAQ#

Can I use Suno-generated music commercially?#

With Suno's paid plans and API access through Crazyrouter, generated music can be used commercially. Always check the latest terms of service for specific licensing details.

How long does generation take?#

Typically 30-120 seconds per song. Instrumental tracks tend to generate faster than songs with vocals.

What audio format is returned?#

Generated tracks are returned as MP3 files (128-320kbps). The API provides a URL to download the audio file.

Can I control the song duration?#

You can hint at duration in your prompt (e.g., "a 30-second jingle"), but exact duration control is limited. Most generated songs are 1-3 minutes long.

Is there a rate limit?#

Through Crazyrouter, you can submit multiple concurrent generation requests. The practical limit depends on your plan and current server load.

Summary#

The Suno Music API opens up AI music generation for developers building creative tools, content platforms, games, and more. Through Crazyrouter, you get pay-as-you-go access without subscription commitments, alongside 300+ other AI models through a single API key.

Start generating AI music today at crazyrouter.com.

Implementation Guides

Related Posts

/v1/chat/completions vs /v1/responses vs /v1/messages: Which AI API Endpoint Should You Use?Tutorial

/v1/chat/completions vs /v1/responses vs /v1/messages: Which AI API Endpoint Should You Use?

A practical guide to choosing the correct AI API endpoint. Learn the differences between OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages to avoid model unavailable errors caused by wrong endpoint routing.

Jun 4
GTutorial

Gemini Advanced Review 2026: Is It Worth It for Coding, Research, and API Teams?

If you searched for **gemini advanced review**, you probably do not need another shallow feature list. You need to know what Gemini Advanced is, how it compares with alternatives, how to use it in a d...

May 26
AI Content Creation Tools 2026: Complete Guide for CreatorsTutorial

AI Content Creation Tools 2026: Complete Guide for Creators

AI has revolutionized content creation. From writing blog posts to generating images, music, and videos, creators now have powerful tools at their fingertips. This guide covers the best AI content cre...

Jan 26
text-embedding-3-small Dimensions Explained: 1536 vs 1024 vs 512Tutorial

text-embedding-3-small Dimensions Explained: 1536 vs 1024 vs 512

A practical guide to text-embedding-3-small dimensions: default 1536 vectors, the dimensions parameter, storage tradeoffs, and API examples.

Jun 5
OpenClaw Tutorial: Complete Getting Started Guide in 2026Tutorial

OpenClaw Tutorial: Complete Getting Started Guide in 2026

A comprehensive OpenClaw tutorial for beginners covering installation, configuration, and deploying your first AI assistant across WhatsApp, Telegram, and Discord in under 20 minutes with step-by-step instructions.

Mar 7
OpenAI-Compatible API Base URL Explained: How to Configure Any AI ToolTutorial

OpenAI-Compatible API Base URL Explained: How to Configure Any AI Tool

Learn what an OpenAI-compatible API Base URL is, how to configure it in Python, Node.js, curl, Cursor, LiteLLM, FastGPT, Codex-style tools, and how to avoid common mistakes like missing /v1 or using the wrong endpoint.

Jun 4