Overview

AudioPod AI’s Music Generation API uses the advanced Text to Music pipeline to transform text descriptions into original musical compositions. Generate complete songs with lyrics, instrumental tracks, rap music, audio samples, and perform advanced audio transformations.

Key Features

  • Text-to-Music: Generate complete musical compositions from text prompts and lyrics
  • Prompt-to-Instrumental: Create instrumental tracks from text descriptions
  • Text-to-Rap: Generate rap music with custom lyrics and beats
  • Text-to-Samples: Create audio loops and samples for music production
  • Audio-to-Audio: Transform existing audio using text prompts
  • Advanced Controls: Fine-tune generation with guidance scales, steps, and seeds
  • Multiple Formats: Output in WAV, MP3, FLAC formats
  • Royalty-Free: All generated music is 100% royalty-free

Authentication

All endpoints require authentication:
  • API Key: Authorization: Bearer your_api_key
  • JWT Token: Authorization: Bearer your_jwt_token

Text-to-Music Generation

Generate Music from Text and Lyrics

Create complete musical compositions with vocals from text prompts and lyrics.
from audiopod import Client

# Initialize client
client = Client()

# Generate music with lyrics (simple)
result = client.music.generate_music(
    prompt="Upbeat pop song with electronic beats and catchy melody",
    duration=120.0,
    display_name="My Pop Song",
    wait_for_completion=True
)

print(f"Music generated: {result.output_url}")

# Download the music
import requests
audio_response = requests.get(result.output_url)
with open("my_pop_song.wav", "wb") as f:
    f.write(audio_response.content)

print("Music saved as my_pop_song.wav")

# Advanced generation with custom parameters
advanced_result = client.music.generate_music(
    prompt="Epic orchestral soundtrack with dramatic crescendos",
    duration=180.0,
    guidance_scale=12.0,
    num_inference_steps=80,
    seed=42,  # For reproducible results
    display_name="Epic Soundtrack",
    wait_for_completion=True
)

print(f"Advanced music generated: {advanced_result.output_url}")

# Generate music asynchronously and check status
async_job = client.music.generate_music(
    prompt="Relaxing ambient electronic music",
    duration=240.0,
    wait_for_completion=False  # Don't wait
)

print(f"Async job created: {async_job.id}")

# Check job status
status = client.music.get_music_job(async_job.id)
print(f"Job status: {status.status}")

# Like the generated track
if status.status == 'completed':
    client.music.like_music_track(async_job.id)
    print("Track liked!")
Request Parameters:
  • prompt (required): Text description of the desired music style and characteristics
  • lyrics (optional): Song lyrics with structure tags like [Verse], [Chorus], [Bridge]
  • duration (optional): Duration in seconds (-1 for auto, 1-600 seconds). Default: 120.0
    • Also accepts audio_duration for backward compatibility
    • Use -1 for automatic duration based on lyrics length
  • format (optional): Output format (wav, mp3, flac). Default: wav
  • genre_preset (optional): Genre preset (Modern Pop, Rock, Hip Hop, Jazz, Classical, Electronic, Country, Folk, Blues, Reggae, Latin, R&B, Metal, Custom)
  • display_name (optional): Custom name for the generated track
  • thumbnail_url (optional): URL for track thumbnail image
Advanced Parameters:
  • infer_step (optional): Number of inference steps (1-200). Default: 60
  • guidance_scale (optional): Classifier-free guidance scale (1.0-30.0). Default: 15.0
  • scheduler_type (optional): Scheduler type (euler, etc.). Default: euler
  • cfg_type (optional): CFG type (apg, etc.). Default: apg
  • omega_scale (optional): Omega scale (1-20). Default: 10
  • guidance_interval (optional): Guidance interval (0.0-1.0). Default: 0.5
  • guidance_interval_decay (optional): Guidance decay (0.0-1.0). Default: 0.0
  • min_guidance_scale (optional): Minimum guidance scale (1.0-10.0). Default: 3.0
  • guidance_scale_text (optional): Text guidance scale (0.0-10.0). Default: 0.0
  • guidance_scale_lyric (optional): Lyric guidance scale (0.0-10.0). Default: 0.0
  • use_erg_tag (optional): Use ERG for tags. Default: true
  • use_erg_lyric (optional): Use ERG for lyrics. Default: true
  • use_erg_diffusion (optional): Use ERG for diffusion. Default: true
  • manual_seeds (optional): Array of manual seeds for reproducibility
Response:
{
  "job": {
    "id": 123,
    "task": "text2music",
    "status": "processing",
    "progress": null,
    "input_params": {
      "prompt": "Upbeat pop song with electronic beats and catchy melody",
      "lyrics": "[Verse 1]\\nWalking down the street\\nFeeling so complete\\n[Chorus]\\nThis is my time to shine",
      "duration": 120.0,
      "format": "wav",
      "genre_preset": "Modern Pop",
      "display_name": "My Pop Song",
      "infer_step": 60,
      "guidance_scale": 15.0
    },
    "output_path": null,
    "output_url": null,
    "output_paths": null,
    "output_urls": null,
    "created_at": "2024-01-15T10:30:00Z",
    "user_id": "user_123",
    "display_name": "My Pop Song",
    "thumbnail_url": null,
    "audio_duration": 120.0,
    "actual_seeds": null,
    "timecosts": null
  },
  "message": "Text-to-music generation started"
}
Completed Job Response (when status is “completed”):
{
  "id": 123,
  "task": "text2music",
  "status": "completed",
  "progress": 100,
  "input_params": {
    "prompt": "Upbeat pop song with electronic beats",
    "lyrics": "[Verse 1]\\nWalking down the street...",
    "duration": 120.0,
    "format": "wav"
  },
  "output_path": "/generated/music_123.wav",
  "output_url": "https://api.audiopod.ai/download/music_123.wav",
  "output_paths": {
    "wav": "/generated/music_123.wav",
    "mp3": "/generated/music_123.mp3",
    "flac": "/generated/music_123.flac"
  },
  "output_urls": {
    "wav": "https://api.audiopod.ai/download/music_123.wav",
    "mp3": "https://api.audiopod.ai/download/music_123.mp3",
    "flac": "https://api.audiopod.ai/download/music_123.flac"
  },
  "created_at": "2024-01-15T10:30:00Z",
  "completed_at": "2024-01-15T10:35:30Z",
  "audio_duration": 120.5,
  "actual_seeds": [12345, 67890],
  "timecosts": {
    "preprocessing": 2.1,
    "generation": 312.4,
    "postprocessing": 5.8
  },
  "display_name": "My Pop Song",
  "thumbnail_url": null,
  "user_id": "user_123"
}

Instrumental Generation

Generate Instrumental Tracks

Create instrumental music without vocals from text prompts.
POST /api/v1/music/prompt2instrumental
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "prompt": "Chill jazz instrumental with piano and saxophone",
  "audio_duration": 90.0,
  "format": "wav"
}

Rap Generation

Generate Rap Music

Create rap tracks with custom lyrics and beats.
from audiopod import Client

client = Client()

# Generate rap music (simple)
rap_result = client.music.generate_rap(
    lyrics="[Verse 1]\nStarted from the bottom now we here\nGrinding every day throughout the year\n[Chorus]\nThis is our time to shine\nLeaving all the doubt behind",
    style="modern",
    tempo=120,
    display_name="My Rap Track",
    wait_for_completion=True
)

print(f"Rap generated: {rap_result.output_url}")

# Advanced rap generation with custom parameters
advanced_rap = client.music.generate_rap(
    lyrics="""
    [Intro]
    Yeah, AudioPod AI in the building
    Let's go!

    [Verse 1]
    Started with a vision, now we making it real
    Technology and music, that's the perfect deal
    Artificial intelligence helping artists create
    Breaking down the barriers, opening the gate

    [Chorus]
    We're the future of music generation
    AudioPod AI across the nation
    From text to beats, we make it all
    Stand up tall, never gonna fall

    [Verse 2]
    Every single bar crafted with precision
    Making music magic, that's our mission
    No more empty studios, no more writer's block
    AudioPod AI, we're solid as a rock

    [Outro]
    The revolution starts here, the future is now
    AudioPod AI, taking the vow
    """,
    style="trap",
    tempo=140,
    display_name="AudioPod AI Anthem",
    wait_for_completion=True
)

print(f"Advanced rap generated: {advanced_rap.output_url}")

# Generate multiple rap variations
rap_prompts = [
    {"lyrics": "[Verse]\nOld school vibes with a modern twist", "style": "old_school", "tempo": 90},
    {"lyrics": "[Verse]\nTrap beats hitting hard all night", "style": "trap", "tempo": 150},
    {"lyrics": "[Verse]\nConscious rap with a message to spread", "style": "conscious", "tempo": 100}
]

rap_tracks = []
for i, prompt in enumerate(rap_prompts):
    track = client.music.generate_rap(
        lyrics=prompt["lyrics"],
        style=prompt["style"],
        tempo=prompt["tempo"],
        display_name=f"Rap Variation {i+1}",
        wait_for_completion=True
    )
    rap_tracks.append(track)
    print(f"Generated {prompt['style']} rap: {track.output_url}")

print(f"Generated {len(rap_tracks)} rap variations")

Vocals Generation

Generate Vocals from Lyrics

Create vocal tracks from lyrics without instrumental backing.
POST /api/v1/music/lyric2vocals
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "prompt": "Female pop vocals with emotional delivery",
  "lyrics": "[Verse 1]\nWalking through the city lights\nEverything feels so bright",
  "audio_duration": 90.0
}

Sample Generation

Generate Audio Samples

Create loops, one-shots, and samples for music production.
POST /api/v1/music/text2samples
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "prompt": "Analog drum loop with vintage character",
  "sample_type": "loop",
  "audio_duration": 8.0,
  "tempo": 120
}
Sample Parameters:
  • sample_type: Type of sample (loop, one-shot, etc.)
  • tempo: Target tempo in BPM (60-200)
  • audio_duration: Sample duration (-1 for auto, 1.0-120.0 seconds). Default: 8.0

Audio-to-Audio Transformation

Transform Audio with Text Prompts

Transform existing audio using text descriptions while preserving reference audio characteristics.
POST /api/v1/music/audio2audio
Authorization: Bearer {api_key}
Content-Type: multipart/form-data

prompt: "Transform this into an electronic dance version"
ref_audio_strength: 0.7
audio_duration: 120.0
infer_step: 60
guidance_scale: 15.0
file: (audio file)
Parameters:
  • ref_audio_strength: How much the reference audio influences the output (0.0-1.0)
  • audio_duration: Duration of the output audio (1-600 seconds)

Music Extension

Extend Existing Music

Extend an existing music track by adding more content to the end.
POST /api/v1/music/extend
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "source_job_id": 123,
  "left_extend_length": 0.0,
  "right_extend_length": 30.0,
  "prompt": "Continue with the same energy and style",
  "lyrics": "[Outro]\nThe music goes on"
}
Parameters:
  • source_job_id (required): ID of the original music generation job
  • left_extend_length (optional): Seconds to add at beginning (0.0-60.0)
  • right_extend_length (optional): Seconds to add at end (0.0-60.0, default: 30.0)
  • prompt (required): Style description for extension
  • lyrics (optional): Additional lyrics for extension
  • extend_seeds (optional): Seeds for reproducibility

Music Variations

Create Music Retakes

Generate variations of existing music tracks.
POST /api/v1/music/retake
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "original_job_id": 123,
  "retake_variance": 0.7,
  "display_name": "Jazz Variation"
}
Parameters:
  • original_job_id (required): ID of the original music generation job
  • retake_variance (optional): Variation strength (0.0-1.0, default: 0.5)
  • retake_seeds (optional): Seeds for reproducible variations
  • display_name (optional): Custom name for the variation

Repaint Audio Sections

Modify specific sections of existing audio tracks.
POST /api/v1/music/repaint
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "source_job_id": 123,
  "repaint_start": 30.0,
  "repaint_end": 60.0,
  "prompt": "Transform this section to jazz style",
  "lyrics": "[Verse 2]\nNew lyrics for this section"
}
Parameters:
  • source_job_id (optional): Source music generation job ID
  • repaint_start (required): Start time in seconds to begin repainting
  • repaint_end (required): End time in seconds to stop repainting
  • prompt (required): New style description for the section
  • lyrics (optional): New lyrics for the section

Edit Existing Music

Comprehensive editing of existing music tracks.
POST /api/v1/music/edit
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "source_job_id": 123,
  "edit_target_prompt": "Make it more electronic with synthesizers",
  "edit_target_lyrics": "[Verse 1]\nCompletely new lyrics",
  "edit_type": "remix",
  "edit_n_min": 0.3,
  "edit_n_max": 0.8
}
Parameters:
  • source_job_id (required): Source music generation job ID
  • edit_target_prompt (required): New style description
  • edit_target_lyrics (optional): New lyrics for the track
  • edit_type (optional): Edit type - “remix” or “only_lyrics” (default: “remix”)
  • edit_n_min (optional): Edit strength minimum (0.0-1.0, default: 0.0)
  • edit_n_max (optional): Edit strength maximum (0.0-1.0, default: 1.0)
  • edit_n_avg (optional): Edit averaging (1-5, default: 1)

Utility Endpoints

Get Genre Presets

Retrieve available genre presets for music generation.
GET /api/v1/music/presets
Authorization: Bearer {api_key}

Job Management

Get Job Status

Monitor the progress of music generation jobs.
GET /api/v1/music/jobs/{job_id}/status
Authorization: Bearer {api_key}
Response (Completed Job):
{
  "id": 123,
  "task": "text2music",
  "status": "completed",
  "progress": 100,
  "input_params": {
    "prompt": "Upbeat pop song with electronic beats",
    "lyrics": "[Verse 1]\\nWalking down the street...",
    "duration": 120.0,
    "format": "wav"
  },
  "output_path": "/generated/music_123.wav",
  "output_url": "https://api.audiopod.ai/download/music_123.wav",
  "output_paths": {
    "wav": "/generated/music_123.wav",
    "mp3": "/generated/music_123.mp3",
    "flac": "/generated/music_123.flac"
  },
  "output_urls": {
    "wav": "https://api.audiopod.ai/download/music_123.wav",
    "mp3": "https://api.audiopod.ai/download/music_123.mp3",
    "flac": "https://api.audiopod.ai/download/music_123.flac"
  },
  "created_at": "2024-01-15T10:30:00Z",
  "completed_at": "2024-01-15T10:35:30Z",
  "audio_duration": 120.5,
  "actual_seeds": [12345, 67890],
  "timecosts": {
    "preprocessing": 2.1,
    "generation": 312.4,
    "postprocessing": 5.8
  },
  "display_name": "My Pop Song",
  "thumbnail_url": null,
  "user_id": "user_123"
}

List Music Jobs

Get all music generation jobs for the authenticated user with enhanced filtering options.
GET /api/v1/music/jobs?task=text2music&status=completed&song_type=song&liked=true&limit=50&skip=0
Authorization: Bearer {api_key}
Query Parameters:
  • skip (optional): Number of jobs to skip for pagination. Default: 0
  • limit (optional): Maximum number of jobs to return. Default: 50
  • task (optional): Filter by specific task type (text2music, text2rap, prompt2instrumental, etc.)
  • status (optional): Filter by job status (pending, processing, completed, failed)
  • song_type (optional): Filter by category:
    • song: Full songs (text2music, lyric2vocals)
    • rap: Rap tracks (text2rap)
    • instrumental: Instrumental tracks (prompt2instrumental, text2samples)
    • samples: Audio samples (text2samples)
  • liked (optional): Filter by user’s liked status (true for liked only, false for non-liked)

Get Liked Tracks

Get all tracks liked by the current user with filtering options.
GET /api/v1/music/liked?song_type=rap&status=completed&limit=20
Authorization: Bearer {api_key}

Get Filter Statistics

Get statistics for building filter UI components.
GET /api/v1/music/filters/stats
Authorization: Bearer {api_key}
Response:
{
  "total_tracks": 150,
  "liked_count": 25,
  "song_types": {
    "songs": 80,
    "rap": 30,
    "instrumental": 25,
    "remixes": 10,
    "edits": 5
  },
  "available_filters": {
    "song_types": ["songs", "rap", "instrumental", "remixes", "edits"],
    "interactions": ["liked"],
    "statuses": ["pending", "processing", "completed", "failed"]
  }
}

Update Job Metadata

Update display name and thumbnail for an existing music job.
PATCH /api/v1/music/jobs/{job_id}
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "display_name": "Updated Track Name",
  "thumbnail_url": "https://example.com/new-thumbnail.jpg"
}
Request Body:
  • display_name (optional): New display name for the track
  • thumbnail_url (optional): New thumbnail URL for the track

Delete Music Job

DELETE /api/v1/music/jobs/{job_id}
Authorization: Bearer {api_key}

Music Interactions & Sharing

Like/Unlike Music Track

POST /api/v1/music/jobs/{job_id}/like
Authorization: Bearer {api_key}
Response:
{
  "success": true,
  "message": "Track liked successfully",
  "interaction_type": "like",
  "like_count": 15,
  "dislike_count": 2,
  "share_count": 8,
  "comment_count": 5,
  "user_has_liked": true,
  "user_has_disliked": false
}

Dislike/Remove Dislike from Track

POST /api/v1/music/jobs/{job_id}/dislike
Authorization: Bearer {api_key}

Share Music Track

Generate a shareable URL for a music track, enabling public access.
POST /api/v1/music/jobs/{job_id}/share
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "platform": "twitter",
  "additional_data": {
    "campaign": "music_release",
    "source": "artist_dashboard"
  }
}
Response:
{
  "success": true,
  "message": "Track shared successfully",
  "share_count": 9,
  "share_url": "https://audiopod.ai/shared/abc123def456",
  "share_token": "abc123def456"
}

Get Track Statistics

Get public statistics for a music track.
GET /api/v1/music/jobs/{job_id}/stats
Authorization: Bearer {api_key}
Response:
{
  "like_count": 42,
  "dislike_count": 3,
  "share_count": 15,
  "comment_count": 8,
  "total_interactions": 68,
  "like_percentage": 93.3,
  "dislike_percentage": 6.7
}

Get User Interaction Status

Get the current user’s interaction status with a specific track.
GET /api/v1/music/jobs/{job_id}/interaction-status
Authorization: Bearer {api_key}
Response:
{
  "job_id": 123,
  "user_has_liked": true,
  "user_has_disliked": false,
  "can_interact": true
}

Public Shared Tracks

These endpoints allow public access to shared music tracks without authentication.

Get Shared Track

Access a publicly shared track using its share token.
GET /api/v1/music/shared/{share_token}
# No authentication required
Response:
{
  "track": {
    "id": 123,
    "task": "text2music",
    "status": "completed",
    "display_name": "My Awesome Song",
    "thumbnail_url": "https://example.com/thumb.jpg",
    "output_url": "https://api.audiopod.ai/download/music_123.wav",
    "output_urls": {
      "wav": "https://api.audiopod.ai/download/music_123.wav",
      "mp3": "https://api.audiopod.ai/download/music_123.mp3",
      "flac": "https://api.audiopod.ai/download/music_123.flac"
    },
    "created_at": "2024-01-15T10:30:00Z",
    "completed_at": "2024-01-15T10:35:30Z",
    "audio_duration": 120.5,
    "share_token": "abc123def456",
    "share_url": "https://audiopod.ai/shared/abc123def456",
    "is_shared": true,
    "shared_at": "2024-01-15T11:00:00Z",
    "user_email": "artist@example.com",
    "like_count": 42,
    "dislike_count": 3,
    "share_count": 15,
    "comment_count": 8,
    "total_interactions": 68,
    "like_percentage": 93.3,
    "dislike_percentage": 6.7,
    "prompt": "Upbeat pop song with electronic beats",
    "lyrics": "[Verse 1]\\nWalking down the street..."
  },
  "can_download": true,
  "can_comment": true,
  "can_interact": true
}

Download Shared Track

Download a shared track in a specific format.
GET /api/v1/music/shared/{share_token}/download?format=mp3
# No authentication required
Query Parameters:
  • format (optional): Desired format (wav, mp3, flac). Default: wav
Response:
{
  "download_url": "https://api.audiopod.ai/download/presigned/music_123.mp3",
  "filename": "text2music-123.mp3",
  "format": "mp3",
  "expires_at": "2024-01-15T12:30:00Z"
}

Like Shared Track (Anonymous)

Like a shared track without authentication (anonymous interaction).
POST /api/v1/music/shared/{share_token}/like
# No authentication required - uses IP for anonymous identification

Dislike Shared Track (Anonymous)

Dislike a shared track without authentication.
POST /api/v1/music/shared/{share_token}/dislike
# No authentication required

Comments System

Add Comment to Shared Track

Add a comment to a publicly shared track (supports both authenticated and anonymous users).
POST /api/v1/music/shared/{share_token}/comments
Content-Type: application/json
# No authentication required for anonymous comments

{
  "content": "Amazing track! Love the beat.",
  "author_name": "Music Lover"
}
Request Body:
  • content (required): Comment text content
  • author_name (required for anonymous): Display name for anonymous comments
Response:
{
  "id": 456,
  "content": "Amazing track! Love the beat.",
  "author_name": "Music Lover",
  "created_at": "2024-01-15T12:00:00Z",
  "updated_at": "2024-01-15T12:00:00Z",
  "is_edited": false,
  "user_id": null
}

Get Comments for Shared Track

Retrieve comments for a shared track with pagination.
GET /api/v1/music/shared/{share_token}/comments?skip=0&limit=20
# No authentication required
Query Parameters:
  • skip (optional): Number of comments to skip. Default: 0
  • limit (optional): Maximum comments to return. Default: 50
Response:
{
  "comments": [
    {
      "id": 456,
      "content": "Amazing track! Love the beat.",
      "author_name": "Music Lover",
      "created_at": "2024-01-15T12:00:00Z",
      "updated_at": "2024-01-15T12:00:00Z",
      "is_edited": false,
      "user_id": null
    },
    {
      "id": 457,
      "content": "Great composition!",
      "author_name": "john@example.com",
      "created_at": "2024-01-15T12:15:00Z",
      "updated_at": "2024-01-15T12:15:00Z",
      "is_edited": false,
      "user_id": "user_789"
    }
  ],
  "total_count": 8,
  "has_more": false
}

Add Comment to Own Track (Authenticated)

Add a comment to your own track (requires authentication).
POST /api/v1/music/jobs/{job_id}/comments
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "content": "Thanks everyone for the feedback!"
}

Get Comments for Own Track

GET /api/v1/music/jobs/{job_id}/comments?skip=0&limit=50
Authorization: Bearer {api_key}

Download Generated Music

def download_generated_music(job_id, api_key, format_preference="wav"):
    """Download generated music from completed job"""
    
    # Get job details
    response = requests.get(
        f"https://api.audiopod.ai/api/v1/music/jobs/{job_id}/status",
        headers={"Authorization": f"Bearer {api_key}"}
    )
    
    if response.status_code != 200:
        return {"error": "Job not found"}
    
    job = response.json()
    
    if job["status"] != "COMPLETED":
        return {"error": f"Job not completed. Status: {job['status']}"}
    
    # Choose download URL
    download_url = None
    if job.get("output_urls") and format_preference in job["output_urls"]:
        download_url = job["output_urls"][format_preference]
    elif job.get("output_url"):
        download_url = job["output_url"]
    else:
        return {"error": "No download URL available"}
    
    # Download audio
    audio_response = requests.get(download_url)
    if audio_response.status_code == 200:
        filename = f"music_{job_id}.{format_preference}"
        with open(filename, "wb") as f:
            f.write(audio_response.content)
        
        return {
            "success": True,
            "filename": filename,
            "duration": job.get("audio_duration"),
            "format": format_preference,
            "display_name": job.get("display_name")
        }
    else:
        return {"error": "Failed to download audio"}

# Usage
result = download_generated_music(123, "your_api_key", "mp3")
if result.get("success"):
    print(f"Downloaded: {result['filename']}")
    print(f"Duration: {result['duration']} seconds")

Genre Presets

Available genre presets for quick configuration (these replace the prompt parameter):
PresetDescriptionGenerated Prompt
Modern PopContemporary pop musicpop, synth, drums, guitar, 120 bpm, upbeat, catchy, vibrant, female vocals, polished vocals
RockRock and alternativerock, electric guitar, drums, bass, 130 bpm, energetic, rebellious, gritty, male vocals, raw vocals
Hip HopHip-hop and raphip hop, 808 bass, hi-hats, synth, 90 bpm, bold, urban, intense, male vocals, rhythmic vocals
CountryCountry and folkcountry, acoustic guitar, steel guitar, fiddle, 100 bpm, heartfelt, rustic, warm, male vocals, twangy vocals
EDMElectronic dance musicedm, synth, bass, kick drum, 128 bpm, euphoric, pulsating, energetic, instrumental
ReggaeReggae and skareggae, guitar, bass, drums, 80 bpm, chill, soulful, positive, male vocals, smooth vocals
ClassicalOrchestral and chamberclassical, orchestral, strings, piano, 60 bpm, elegant, emotive, timeless, instrumental
JazzJazz and fusionjazz, saxophone, piano, double bass, 110 bpm, smooth, improvisational, soulful, male vocals, crooning vocals
MetalHeavy metalmetal, electric guitar, double kick drum, bass, 160 bpm, aggressive, intense, heavy, male vocals, screamed vocals
R&BR&B and soulr&b, synth, bass, drums, 85 bpm, sultry, groovy, romantic, female vocals, silky vocals
FolkAcoustic folkfolk, acoustic guitar, harmonica, 90 bpm, organic, traditional, storytelling
BluesBlues and R&Bblues, guitar, harmonica, 80 bpm, emotional, soulful, traditional
LatinLatin and world musiclatin, guitar, percussion, 110 bpm, rhythmic, festive, cultural
CustomNo preset appliedUse your own custom prompt

Advanced Parameters

Fine-Tuning Generation

For advanced users who want precise control over the generation process:
{
  "infer_step": 60,                    // Inference steps (1-200)
  "guidance_scale": 15.0,              // CFG scale (1.0-30.0)
  "scheduler_type": "euler",           // Scheduler type
  "cfg_type": "apg",                   // CFG type
  "omega_scale": 10,                   // Omega scale (1-20)
  "guidance_interval": 0.5,            // Guidance interval (0.0-1.0)
  "guidance_interval_decay": 0.0,      // Guidance decay (0.0-1.0)
  "min_guidance_scale": 3.0,           // Min guidance (1.0-10.0)
  "guidance_scale_text": 0.0,         // Text guidance (0.0-10.0)
  "guidance_scale_lyric": 0.0,         // Lyric guidance (0.0-10.0)
  "use_erg_tag": true,                 // Use ERG for tags
  "use_erg_lyric": true,               // Use ERG for lyrics
  "use_erg_diffusion": true,           // Use ERG for diffusion
  "manual_seeds": [12345, 67890]       // Manual seeds for reproducibility
}

Output Formats

  • wav: Uncompressed, highest quality (default)
  • mp3: Compressed, smaller file size
  • flac: Lossless compression, good quality/size balance

Error Handling

Pricing

Music generation pricing based on actual credit costs:
ServiceCostDescription
Text-to-Music1320 credits/minuteComplete songs with lyrics
Instrumental1320 credits/minuteInstrumental tracks
Text-to-Rap1320 credits/minuteRap music with beats
Text-to-Samples176 credits/8 secondsAudio loops and samples (1320/60*8)
Audio-to-Audio1320 credits/minuteAudio transformation

Cost Examples

DurationServiceCreditsUSD Cost
2 minutesText-to-Music2640$0.35
1 minuteInstrumental1320$0.18
8 secondsSample Loop176$0.02
90 secondsAudio-to-Audio1980$0.26

Cost Optimization Tips

  1. Start with shorter durations for testing and iteration
  2. Use instrumental mode for background music (lower cost)
  3. Generate samples first then extend successful ones
  4. Batch similar requests to optimize workflows

Best Practices

Effective Prompt Writing

✅ Good Prompts:
  • “Upbeat indie rock with jangly guitars, 120 BPM, perfect for summer commercial”
  • “Mystical ambient music for fantasy game, ethereal pads and flute melody”
  • “Hard-hitting trap beat with heavy 808s and crisp hi-hats”
❌ Avoid:
  • “Make good music” (too vague)
  • “Classical electronic jazz fusion” (conflicting styles)
  • Extremely long prompts with too many requirements

Lyric Structure Tags

For best results with lyrics, use these structure tags:
[Intro]
[Verse 1]
[Pre-Chorus]
[Chorus]
[Verse 2]
[Chorus]
[Bridge]
[Chorus]
[Outro]

Advanced Generation Tips

# For consistent results, use manual seeds
{
  "manual_seeds": [12345, 67890],
  "infer_step": 60,
  "guidance_scale": 15.0
}

# For creative variations, omit seeds
{
  "infer_step": 80,  # Higher steps for more detail
  "guidance_scale": 12.0  # Lower for more creativity
}

# For specific genres, use presets
{
  "genre_preset": "Electronic",
  "prompt": "Describe specific elements you want"
}

Next Steps