ACE-Step 1.5 XL API

Open-source music generation model for text-to-song and lyric-guided audio, with fast 8-step XL Turbo inference for controllable song iteration.

ACE-StepAudio GenerationNative InferenceNew

About ACE-Step 1.5 XL

Open-source music generation model for text-to-song and lyric-guided audio, with fast 8-step XL Turbo inference for controllable song iteration.

music generationlyricstext to musicseed controlcommercial ready

ACE-Step 1.5 XL specs

Model ID
ace-step-1.5-xl
Provider
ACE-Step
Category
Audio Generation
Input
text
Output
audio
Endpoints
POST /v1/audio/generations

ACE-Step 1.5 XL API pricingSave up to 17%

Live pay-as-you-go rates from the EmpirioLabs catalog. You are billed only for what you use, with no monthly minimum.

Type
Spec
Rate
Music generation
per generated second
$0.0003$0.00025
Compare on the full pricing page

How to call the ACE-Step 1.5 XL API

ACE-Step 1.5 XL runs through POST /v1/audio/generations. The request returns a job_id right away; poll GET /v1/jobs/{job_id} until the job completes and read the output URLs from the result. Get an API key from the EmpirioLabs dashboard.

cURL: submit the job
curl https://api.empiriolabs.ai/v1/audio/generations \
  -H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ace-step-1.5-xl",
    "prompt": "Describe what you want ACE-Step 1.5 XL to generate."
  }'
cURL: poll for the result
curl https://api.empiriolabs.ai/v1/jobs/JOB_ID \
  -H "Authorization: Bearer $EMPIRIOLABS_API_KEY"
Python
import requests

response = requests.post(
    "https://api.empiriolabs.ai/v1/audio/generations",
    headers={"Authorization": "Bearer YOUR_EMPIRIOLABS_API_KEY"},
    json={
        "model": "ace-step-1.5-xl",
        "prompt": "Describe what you want ACE-Step 1.5 XL to generate.",
    },
)
job = response.json()

# Generation runs as an async job. Poll until it completes.
import time
while True:
    status = requests.get(
        f"https://api.empiriolabs.ai/v1/jobs/{job['job_id']}",
        headers={"Authorization": "Bearer YOUR_EMPIRIOLABS_API_KEY"},
    ).json()
    if status.get("status") in ("completed", "failed"):
        print(status)
        break
    time.sleep(5)
Full ACE-Step 1.5 XL API reference

ACE-Step 1.5 XL API parameters

Request parameters supported by the ACE-Step 1.5 XL API on EmpirioLabs. Defaults apply when a field is omitted.

ParameterTypeDefaultRange / valuesDescription
promptstring--Genre, mood, instrumentation, and BPM hints describing the music to compose. Comma-separated tags work well.
lyricsstring--Vocal lyrics for the track. Use [verse] / [chorus] / [bridge] tags to mark sections, blank line for instrumental break. Leave empty for purely instrumental tracks.
audio_durationnumber3010 to 240Length of the generated track in seconds. The model is most reliable up to ~4 minutes; longer durations risk OOM/quality drops during diffusion.
num_inference_stepsinteger81 to 20Number of diffusion steps. 8 is the recommended sweet spot for the Turbo variant; raise for more polish, lower for cheaper draft generations.
guidance_scalenumber10 to 20Classifier-free guidance scale. 1.0 follows the model's natural distribution; higher values push closer to the prompt at the cost of variety.
shiftnumber--Diffusion timestep shift. Default leaves the schedule unchanged; nudge to 1.0+ for shorter/punchier or below 1.0 for slower/dreamier results.
negative_promptstring--Negative prompt — anti-tags, anti-styles, instruments to exclude. Same comma-separated style as prompt.
seedinteger--Random seed for reproducibility. Same seed + identical params produces the same track.
formatenumflacflac, wav, ogg, mp3Audio container format for the response. FLAC = lossless, WAV = uncompressed, MP3 = small file size.
response_formatenumurlurl, b64_jsonHow the worker returns the audio. 'url' returns a signed URL to the rendered file; 'base64' inlines the bytes in the response.
return_base64booleanfalse-When true, the response includes the rendered audio as base64 in addition to (or instead of, depending on response_format) the URL.

Good to know

Defaults

  • 8 inference steps
  • Guidance scale 1.0
  • Lossless FLAC output

Controls

Supports lyrics, prompt/description, 10-600s duration, seed, shift, optional negative prompt when supported by the pinned pipeline, and URL or base64 output mode.

ACE-Step 1.5 XL API: common questions

How much does the ACE-Step 1.5 XL API cost?

On EmpirioLabs, ACE-Step 1.5 XL is billed pay as you go: Music generation $0.00025 (was $0.0003) per generated second. The live rate card on this page always matches what the API charges.

Which endpoint does ACE-Step 1.5 XL use?

ACE-Step 1.5 XL is served through POST /v1/audio/generations on api.empiriolabs.ai with standard bearer-token authentication.

Can I try ACE-Step 1.5 XL in the browser before integrating?

Yes. The EmpirioLabs playground runs ACE-Step 1.5 XL in the browser with the same parameters the API exposes, so you can test prompts before writing code.

How do I get a ACE-Step 1.5 XL API key?

Create an EmpirioLabs account, then generate a key under API Keys in the dashboard. Billing is pay-as-you-go credits, so you only pay for the requests you make.

Ready to use better endpoints?

Explore our models, or contact us about business inquiries, custom deployments, or anything else.