# ACE-Step 1.5 | Text to Music ACE-Step 1.5 is a diffusion and language model–based text-to-music system that generates music with vocals from natural-language prompts and optional custom lyrics. It supports Chain-of-Thought reasoning for higher quality, multi-output batches, multilingual vocals, and automatic detection of BPM, musical key, and time signature. Use markers like [verse], [chorus], [bridge] or [inst] and [instrumental] to structure songs. Outputs FLAC audio with user-defined duration and is billed per output second, with thinking mode charged at double rate. ## API Information - **Model Slug:** ace-step-1-5-text-to-music - **Branded URL:** https://www.eachlabs.ai/each-labs/eachlabs/ace-step-1-5-text-to-music - **Provider:** each::labs - **Category:** Music Generation - **Output Type:** audio - **Status:** active - **Version:** 0.0.1 - **Base Cost:** Thinking-enabled (default): $0.0006 per output second (2x rate), multiplied by num_outputs - **Estimated Processing Time:** 55 seconds - **Last Updated:** 2026-07-13 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/ace-step-1-5-text-to-music ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $0.0360 - **Pricing Details:** Thinking-enabled (default): $0.0006 per output second (2x rate), multiplied by num_outputs ### Pricing Rules | Condition | Pricing | | --- | --- | | thinking == "false" | Non-thinking mode: $0.0003 per output second, multiplied by num_outputs | | Default (fallback) | Thinking-enabled (default): $0.0006 per output second (2x rate), multiplied by num_outputs | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | No | - | - | Music description or caption (style, instruments, mood). Max 512 chars. Drives the musical identity. | | lyrics | string | No | - | - | Lyrics text. Use [verse], [chorus], [bridge] for structure, or [inst]/[instrumental] for a vocals-free track. Max 4096 chars. Multilingual. | | duration | integer | No | 30 | - | Length of generated audio in seconds. Default 30. Billed per output second. | | num_outputs | integer | No | 1 | - | How many distinct audio samples to generate per request. Default 1. Each additional output is charged at the full rate. | | thinking | boolean | No | true | - | Enable the 5Hz LM Chain-of-Thought stage for higher quality. Default true. WARNING: 2x cost per output second. | | vocal_language | string | No | unknown | - | Language code for vocals (en, zh, ja, ko, es, fr, de, etc.). Use "unknown" to auto-detect from lyrics. | | bpm | integer | No | - | - | Beats per minute. Leave empty for auto-detect. | | key_scale | string | No | - | - | Musical key and mode, e.g. "C Major", "Am", "F# minor". Empty for auto-detect. | | time_signature | string | No | - | [{"label":"Auto","value":""},{"label":"2/4","value":"2"},{"label":"3/4","value":"3"},{"label":"4/4","value":"4"},{"label":"6/8","value":"6"}] | Rhythmic grouping. Empty = auto-detect. | | infer_method | string | No | ode | [{"label":"ODE (Euler, deterministic)","value":"ode"},{"label":"SDE (stochastic, varied)","value":"sde"}] | Diffusion solver. ode (default) is deterministic; sde is stochastic. | | num_inference_steps | integer | No | 8 | - | Number of denoising steps. Default 8 (turbo). Base: 32-64. | | guidance_scale | number | No | 7 | - | Classifier-free guidance strength (base models only, ignored on turbo). Default 7. | | shift | number | No | 3 | - | Timestep shift factor. Default 3.0 (recommended for turbo). | | lm_temperature | number | No | 0.85 | - | LM sampling temperature when thinking is enabled. Default 0.85. | | lm_cfg_scale | number | No | 1 | - | LM classifier-free guidance scale. Default 1. WARNING: >1.0 triggers ~10x slower step-by-step CFG. | | lm_negative_prompt | string | No | NO USER INPUT | - | Negative prompt for LM stage. | | use_constrained_decoding | boolean | No | true | - | Enable constrained decoding for reliable metadata parsing. Default true. | | seed | integer | No | - | - | Random seed for reproducible results. Leave empty for random. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "ace-step-1-5-text-to-music", "input": {} }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated audio)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **ACE-Step 1.5 | Text to Music Overview** ACE-Step 1.5 | Text to Music revolutionizes music creation by transforming natural-language prompts into full songs with vocals, complete with custom lyrics and structured sections. Hosted on each::labs, part of the eachlabs family, this diffusion and language model-based system stands out with its Chain-of-Thought reasoning, enabling higher-quality outputs through step-by-step musical composition logic. Users can generate professional-grade tracks in FLAC format, supporting multilingual vocals and automatic detection of BPM, key, and time signature. Ideal for creators seeking instant music without instruments or studios, ACE-Step 1.5 | Text to Music handles everything from verses to choruses using simple markers like [verse] or [chorus]. It offers multi-output batches for efficiency and user-defined durations, billed per output second—making it a cost-effective choice for each::labs music-generation workflows. Whether prototyping ideas or producing final tracks, this model delivers coherent, structured music from text alone. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.