API Reference
SkyStudio API Gateway — v1
Current Model
The public gateway model slug is ace-step-1.5. It is currently backed by ACE-Step 1.5 XL Turbo (internal config acestep-v15-xl-turbo).
ace-step-1.5. Internal worker config names are not part of the client contract.Authentication
All requests require an API key passed in the Authorization header:
API key management is currently provisioned for internal and staged access. Manage your API keys →
Endpoints
/api/v1/generateSubmit a generation job/api/v1/jobs/:idPoll job status/api/v1/jobs/:id/cancelCancel a job and return its latest stateAsync Job Model
All generation requests are asynchronous. You submit a job, receive a job ID, and poll until it completes. Results are returned via output_url.
compiled_input so clients can inspect or persist the effective prompt and lyrics that actually reached the worker.POST /api/v1/jobs/:id/cancel is idempotent. Local-only jobs are cancelled immediately; submitted or running jobs attempt provider cancellation and then return the latest reconciled state.Idempotency
To safely retry requests, include an Idempotency-Key header (or idempotency_key in the request body). Use a UUID v4 per unique request.
If the same key is reused, the API returns 409 with the existing job ID:
Result Contract
Completed jobs return an output_url pointing to the generated file on our CDN (assets.skystudios.app). This is the primary way to retrieve results.
Public API output_url files under gateway/music/ are retained for 15 days. Poll responses include output_expires_at for those short-retention URLs.
audio_base64 is an internal fallback only. Always use output_url.When Simple Mode compilation runs, GET /api/v1/jobs/:id may also return compiled_input with the effective prompt, lyrics, optional tempo, and compiler metadata.
This is useful if you want to sync auto-generated lyrics into your own history view, expose a developer debug panel, or understand whether the request used compiler output or fallback behavior.
Error Codes
All errors follow the shape: { "error": { "code": "...", "message": "..." } }
| HTTP | Code | Meaning |
|---|---|---|
401 | UNAUTHORIZED | Missing or invalid API key |
401 | KEY_REVOKED | API key has been revoked |
401 | KEY_EXPIRED | API key has expired |
402 | INSUFFICIENT_CREDITS | Not enough credits for this request |
404 | NOT_FOUND | Job or resource not found |
409 | IDEMPOTENCY_CONFLICT | Duplicate idempotency key |
429 | RATE_LIMITED | Too many requests per minute |
429 | CONCURRENCY_LIMITED | Too many concurrent jobs |
500 | INTERNAL_ERROR | Server error |
429 responses include a Retry-After header (seconds).
Quick Start
1. Submit a music generation request:
Response:
2. Poll until completed:
When complete:
Generate Parameters
The generate endpoint supports two modes: Simple Mode for quick generation from a text prompt, and Custom Mode for fine-grained control over lyrics, tempo, and language.
Simple Mode
Provide a short prompt describing the music you want. The gateway now auto-expands Simple Mode requests into a richer ACE music blueprint before worker submission, including compiled caption/lyrics structure and optional tempo metadata when useful.
| Parameter | Type | Default | Description |
|---|---|---|---|
model | string | — | Required. Currently: ace-step-1.5 |
prompt | string | — | Required. One-line music idea used as the Simple Mode source prompt. |
duration | number | 30 | Duration in seconds (10–300). 1 credit per second. |
instrumental | boolean | false | Gateway convenience field. Strongly biases Simple Mode toward instrumental structure and maps to [Instrumental] on fallback. |
Custom Mode
Supply lyrics, tempo, and language for full control over the generation.
| Parameter | Type | Default | Description |
|---|---|---|---|
model | string | — | Required. Currently: ace-step-1.5 |
prompt | string | — | Required. Caption / song description |
lyrics | string | — | Optional. Lyrics with section tags |
duration | number | 30 | Duration in seconds (10–300). 1 credit per second. |
vocal_language | string | "en" | Vocal language code |
bpm | number | — | Optional. Tempo (30–300) |
seed | number | -1 | Random seed (-1 for random) |
instrumental | boolean | false | Gateway convenience field. Overrides lyrics with [Instrumental] before worker submission. |
Job Statuses
submitted | Job accepted, queued for processing |
running | Worker is generating output |
completed | Done — output_url is available |
failed | Generation failed — check error_message |