425 lines
18 KiB
Markdown
425 lines
18 KiB
Markdown
# `/v1/models/load`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'POST' \
|
||
'http://127.0.0.1:8000/v1/models/load' \
|
||
-H 'accept: application/json' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{
|
||
"model": "fullsong"
|
||
}'
|
||
```
|
||
|
||
## Response
|
||
|
||
```json
|
||
{
|
||
"active_model": "fullsong",
|
||
"status": "ready"
|
||
}
|
||
```
|
||
|
||
# `/v1/fullsong/generate`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'POST' \
|
||
'http://127.0.0.1:8000/v1/fullsong/generate' \
|
||
-H 'accept: application/json' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{
|
||
"caption": "Genre: Eurodance, 90s dance-pop, upbeat electronic. Style: Catchy, energetic, nostalgic 90s Eurodance with a strong four-on-the-floor beat. Bright synth leads, punchy bassline, and rhythmic chord stabs. Mix of melodic female vocals for chorus and rhythmic male spoken/rap-style verses. Mood: Uplifting, euphoric, nostalgic club vibe. Tempo: ~130 BPM. Instrumentation: driving kick drum, eurodance bassline, bright saw synth leads, pads, dance piano accents, light vocal chops. Structure: Intro → Verse (male rap) → Pre-Chorus → Chorus (female melodic hook) → Verse → Chorus → Bridge → Final Chorus. Production: clean, polished, wide stereo, club-ready mix.",
|
||
"lyrics": "[Intro]\nFeel the rhythm, feel the light\nWe come alive in neon night\n\n[Verse 1 – Male]\nStep in the scene, yeah the bassline drops\nHeartbeat racing when the strobe light pops\nHands up high, let the pressure go\nMove your body to the radio\n\nCity lights flashing in your eyes\nNo tomorrow, no disguise\nWe don’t stop, we don’t slow\nLet the energy overflow\n\n[Pre-Chorus – Female]\nTake me higher, don’t let go\nWe’re electric, feel the flow\n\n[Chorus – Female]\nWe are dancing in the neon in the night\nShining brighter than the stars in the sky\nFeel the fire, let it take you away\nWe will never fade\n\nWe are running through the rhythm of the sound\nLost together, never touching the ground\nIn this moment, we are wild and alive\nNeon in the night\n\n[Verse 2 – Male]\nTurn it up now, let the speakers explode\nFeel the vibration deep in your soul\nNo control when the DJ plays\nWe’re living fast in a laser haze\n\nEvery heartbeat syncs with the drum\nFeel the future, here it comes\nNo regret, just let it ride\nWe’re infinite tonight\n\n[Pre-Chorus – Female]\nTake me higher, don’t let go\nWe’re electric, feel the flow\n\n[Chorus – Female]\nWe are dancing in the neon in the night\nShining brighter than the stars in the sky\nFeel the fire, let it take you away\nWe will never fade\n\nWe are running through the rhythm of the sound\nLost together, never touching the ground\nIn this moment, we are wild and alive\nNeon in the night\n\n[Bridge]\nClose your eyes, feel the beat inside\nWe’re alive in the light\n\n[Final Chorus]\nWe are dancing in the neon in the night\nShining brighter than the stars in the sky\nFeel the fire, let it take you away\nWe will never fade\n\nWe are running through the rhythm of the sound\nLost together, never touching the ground\nIn this moment, we are wild and alive\nNeon in the night",
|
||
"instrumental": false,
|
||
"inference_steps": 8,
|
||
"guidance_scale": 7.0,
|
||
"use_random_seed": false,
|
||
"seed": -1,
|
||
"thinking": true,
|
||
"batch_size": 1,
|
||
"audio_format": "mp3"
|
||
}'
|
||
```
|
||
|
||
## Response
|
||
|
||
```json
|
||
{
|
||
"data": {
|
||
"task_id": "58e15e57-3022-4f43-8ada-64ea52a9064a",
|
||
"status": "queued",
|
||
"queue_position": 1
|
||
},
|
||
"code": 200,
|
||
"error": null,
|
||
"timestamp": 1776227065582,
|
||
"extra": null
|
||
}
|
||
```
|
||
|
||
# `/v1/fullsong/remix`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'POST' \
|
||
'http://127.0.0.1:8000/v1/fullsong/remix' \
|
||
-H 'accept: application/json' \
|
||
-F 'audio_file=@source.mp3;type=audio/mpeg' \
|
||
-F 'caption=Genre: Lo-fi hip hop. Style: Chill, mellow, dusty samples. Mood: Relaxed, nostalgic.' \
|
||
-F 'lyrics=[Verse 1]
|
||
Your lyrics here...' \
|
||
-F 'audio_cover_strength=0.5' \
|
||
-F 'cover_noise_strength=0.2'
|
||
```
|
||
|
||
Optional form fields (omit to use defaults):
|
||
|
||
| Field | Type | Default | Description |
|
||
|-------|------|---------|-------------|
|
||
| `caption` | string | — | Style description for the remix |
|
||
| `lyrics` | string | — | New lyrics (leave unset to keep original feel) |
|
||
| `instrumental` | bool | — | Suppress vocals |
|
||
| `inference_steps` | int | — | Diffusion steps |
|
||
| `guidance_scale` | float | — | CFG guidance strength |
|
||
| `use_random_seed` | bool | — | Randomise seed |
|
||
| `seed` | int | — | Fixed seed for reproducibility |
|
||
| `thinking` | bool | — | Enable chain-of-thought reasoning |
|
||
| `batch_size` | int | — | Number of outputs |
|
||
| `audio_format` | string | — | Output format (`mp3`, `wav`, …) |
|
||
| `audio_cover_strength` | float | `0.5` | Remix Strength: 0=creative freedom, 1=faithful to source |
|
||
| `cover_noise_strength` | float | `0.2` | Cover Strength (Melody Retention): 0=pure style transfer, 0.1–0.25 recommended |
|
||
|
||
## Response
|
||
|
||
```json
|
||
{
|
||
"data": {
|
||
"task_id": "a1b2c3d4-0000-0000-0000-000000000000",
|
||
"status": "queued",
|
||
"queue_position": 1
|
||
},
|
||
"code": 200,
|
||
"error": null,
|
||
"timestamp": 1776227065582,
|
||
"extra": null
|
||
}
|
||
```
|
||
|
||
Poll `/v1/fullsong/result/{task_id}` and download via `/v1/fullsong/audio/{task_id}` — same flow as `/v1/fullsong/generate`.
|
||
|
||
# `/v1/fullsong/repaint`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'POST' \
|
||
'http://127.0.0.1:8000/v1/fullsong/repaint' \
|
||
-H 'accept: application/json' \
|
||
-F 'audio_file=@source.mp3;type=audio/mpeg' \
|
||
-F 'caption=Genre: Jazz piano. Style: Smooth, mellow, intimate.' \
|
||
-F 'repainting_start=30.0' \
|
||
-F 'repainting_end=60.0' \
|
||
-F 'repaint_strength=0.5'
|
||
```
|
||
|
||
Optional form fields (omit to use defaults):
|
||
|
||
| Field | Type | Default | Description |
|
||
|-------|------|---------|-------------|
|
||
| `caption` | string | — | Style description for the repainted region |
|
||
| `lyrics` | string | — | New lyrics for the repainted region |
|
||
| `instrumental` | bool | — | Suppress vocals |
|
||
| `inference_steps` | int | — | Diffusion steps |
|
||
| `guidance_scale` | float | — | CFG guidance strength |
|
||
| `use_random_seed` | bool | — | Randomise seed |
|
||
| `seed` | int | — | Fixed seed for reproducibility |
|
||
| `thinking` | bool | — | Enable chain-of-thought reasoning |
|
||
| `batch_size` | int | — | Number of outputs |
|
||
| `audio_format` | string | — | Output format (`mp3`, `wav`, …) |
|
||
| `repainting_start` | float | `0.0` | Start of repaint region in seconds |
|
||
| `repainting_end` | float | `-1.0` | End of repaint region in seconds; -1 = until end of track |
|
||
| `repaint_strength` | float | `0.5` | 0=preserve source closely, 1=full regeneration |
|
||
|
||
`repaint_mode` is fixed to `"balanced"`.
|
||
|
||
## Response
|
||
|
||
```json
|
||
{
|
||
"data": {
|
||
"task_id": "a1b2c3d4-0000-0000-0000-000000000000",
|
||
"status": "queued",
|
||
"queue_position": 1
|
||
},
|
||
"code": 200,
|
||
"error": null,
|
||
"timestamp": 1776227065582,
|
||
"extra": null
|
||
}
|
||
```
|
||
|
||
Poll `/v1/fullsong/result/{task_id}` and download via `/v1/fullsong/audio/{task_id}` — same flow as `/v1/fullsong/generate`.
|
||
|
||
# `/v1/fullsong/result/{task_id}`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'GET' \
|
||
'http://127.0.0.1:8000/v1/fullsong/result/58e15e57-3022-4f43-8ada-64ea52a9064a' \
|
||
-H 'accept: application/json'
|
||
```
|
||
|
||
## Response
|
||
|
||
### Pending
|
||
|
||
```json
|
||
{
|
||
"data": [
|
||
{
|
||
"task_id": "1fa3cec4-98b0-48b0-ab60-97be8e4306ab",
|
||
"result": "[{\"file\": \"\", \"wave\": \"\", \"status\": 0, \"create_time\": 1776227246, \"env\": \"development\", \"progress\": 0.1, \"stage\": \"Phase 1: Generating CoT metadata (once for all items)...\"}]",
|
||
"status": 0,
|
||
"progress_text": "21:27:26 | INFO | Loaded LLM to cuda in 0.3896s"
|
||
}
|
||
],
|
||
"code": 200,
|
||
"error": null,
|
||
"timestamp": 1776227253257,
|
||
"extra": null
|
||
}
|
||
```
|
||
|
||
### Finished
|
||
|
||
```json
|
||
{
|
||
"data": [
|
||
{
|
||
"task_id": "1fa3cec4-98b0-48b0-ab60-97be8e4306ab",
|
||
"result": "[{\"file\": \"/v1/audio?path=C%3A%5CArchive%5Crepo%5CK.G.One%5Cace-step%5C.cache%5Cacestep%5Ctmp%5Capi_audio%5Cddab3c48-b754-0bb1-7c5a-369344e1c308.mp3\", \"wave\": \"\", \"status\": 1, \"create_time\": 1776227246, \"env\": \"development\", \"prompt\": \"Genre: Eurodance, 90s dance-pop, upbeat electronic. Style: Catchy, energetic, nostalgic 90s Eurodance with a strong four-on-the-floor beat. Bright synth leads, punchy bassline, and rhythmic chord stabs. Mix of melodic female vocals for chorus and rhythmic male spoken/rap-style verses. Mood: Uplifting, euphoric, nostalgic club vibe. Tempo: ~130 BPM. Instrumentation: driving kick drum, eurodance bassline, bright saw synth leads, pads, dance piano accents, light vocal chops. Structure: Intro → Verse (male rap) → Pre-Chorus → Chorus (female melodic hook) → Verse → Chorus → Bridge → Final Chorus. Production: clean, polished, wide stereo, club-ready mix.\", \"lyrics\": \"[Intro]\\nFeel the rhythm, feel the light\\nWe come alive in neon night\\n\\n[Verse 1 – Male]\\nStep in the scene, yeah the bassline drops\\nHeartbeat racing when the strobe light pops\\nHands up high, let the pressure go\\nMove your body to the radio\\n\\nCity lights flashing in your eyes\\nNo tomorrow, no disguise\\nWe don’t stop, we don’t slow\\nLet the energy overflow\\n\\n[Pre-Chorus – Female]\\nTake me higher, don’t let go\\nWe’re electric, feel the flow\\n\\n[Chorus – Female]\\nWe are dancing in the neon in the night\\nShining brighter than the stars in the sky\\nFeel the fire, let it take you away\\nWe will never fade\\n\\nWe are running through the rhythm of the sound\\nLost together, never touching the ground\\nIn this moment, we are wild and alive\\nNeon in the night\\n\\n[Verse 2 – Male]\\nTurn it up now, let the speakers explode\\nFeel the vibration deep in your soul\\nNo control when the DJ plays\\nWe’re living fast in a laser haze\\n\\nEvery heartbeat syncs with the drum\\nFeel the future, here it comes\\nNo regret, just let it ride\\nWe’re infinite tonight\\n\\n[Pre-Chorus – Female]\\nTake me higher, don’t let go\\nWe’re electric, feel the flow\\n\\n[Chorus – Female]\\nWe are dancing in the neon in the night\\nShining brighter than the stars in the sky\\nFeel the fire, let it take you away\\nWe will never fade\\n\\nWe are running through the rhythm of the sound\\nLost together, never touching the ground\\nIn this moment, we are wild and alive\\nNeon in the night\\n\\n[Bridge]\\nClose your eyes, feel the beat inside\\nWe’re alive in the light\\n\\n[Final Chorus]\\nWe are dancing in the neon in the night\\nShining brighter than the stars in the sky\\nFeel the fire, let it take you away\\nWe will never fade\\n\\nWe are running through the rhythm of the sound\\nLost together, never touching the ground\\nIn this moment, we are wild and alive\\nNeon in the night\", \"metas\": {\"bpm\": 90, \"duration\": 174, \"genres\": \"N/A\", \"keyscale\": \"D minor\", \"timesignature\": \"4\", \"prompt\": \"Genre: Eurodance, 90s dance-pop, upbeat electronic. Style: Catchy, energetic, nostalgic 90s Eurodance with a strong four-on-the-floor beat. Bright synth leads, punchy bassline, and rhythmic chord stabs. Mix of melodic female vocals for chorus and rhythmic male spoken/rap-style verses. Mood: Uplifting, euphoric, nostalgic club vibe. Tempo: ~130 BPM. Instrumentation: driving kick drum, eurodance bassline, bright saw synth leads, pads, dance piano accents, light vocal chops. Structure: Intro → Verse (male rap) → Pre-Chorus → Chorus (female melodic hook) → Verse → Chorus → Bridge → Final Chorus. Production: clean, polished, wide stereo, club-ready mix.\", \"lyrics\": \"[Intro]\\nFeel the rhythm, feel the light\\nWe come alive in neon night\\n\\n[Verse 1 – Male]\\nStep in the scene, yeah the bassline drops\\nHeartbeat racing when the strobe light pops\\nHands up high, let the pressure go\\nMove your body to the radio\\n\\nCity lights flashing in your eyes\\nNo tomorrow, no disguise\\nWe don’t stop, we don’t slow\\nLet the energy overflow\\n\\n[Pre-Chorus – Female]\\nTake me higher, don’t let go\\nWe’re electric, feel the flow\\n\\n[Chorus – Female]\\nWe are dancing in the neon in the night\\nShining brighter than the stars in the sky\\nFeel the fire, let it take you away\\nWe will never fade\\n\\nWe are running through the rhythm of the sound\\nLost together, never touching the ground\\nIn this moment, we are wild and alive\\nNeon in the night\\n\\n[Verse 2 – Male]\\nTurn it up now, let the speakers explode\\nFeel the vibration deep in your soul\\nNo control when the DJ plays\\nWe’re living fast in a laser haze\\n\\nEvery heartbeat syncs with the drum\\nFeel the future, here it comes\\nNo regret, just let it ride\\nWe’re infinite tonight\\n\\n[Pre-Chorus – Female]\\nTake me higher, don’t let go\\nWe’re electric, feel the flow\\n\\n[Chorus – Female]\\nWe are dancing in the neon in the night\\nShining brighter than the stars in the sky\\nFeel the fire, let it take you away\\nWe will never fade\\n\\nWe are running through the rhythm of the sound\\nLost together, never touching the ground\\nIn this moment, we are wild and alive\\nNeon in the night\\n\\n[Bridge]\\nClose your eyes, feel the beat inside\\nWe’re alive in the light\\n\\n[Final Chorus]\\nWe are dancing in the neon in the night\\nShining brighter than the stars in the sky\\nFeel the fire, let it take you away\\nWe will never fade\\n\\nWe are running through the rhythm of the sound\\nLost together, never touching the ground\\nIn this moment, we are wild and alive\\nNeon in the night\"}, \"generation_info\": \"**🎵 Total generation time (1 song): 56.51s**\\n- 56.51s per song\\n- LM phase (1 song): 51.78s\\n- DiT phase (1 song): 4.72s\", \"seed_value\": \"827002500\", \"lm_model\": \"acestep-5Hz-lm-0.6B\", \"dit_model\": \"acestep-v15-turbo\", \"progress\": 1.0, \"stage\": \"succeeded\"}]",
|
||
"status": 1,
|
||
"progress_text": "21:28:26 | DEBUG | [AudioSaver] Fallback soundfile Saved audio to C:\\Archive\\repo\\K.G.One\\ace-step\\.cache\\acestep\\tmp\\api_audio\\ddab3c48-b754-0bb1-7c5a-369344e1c308.mp3 (mp3, 48000Hz)"
|
||
}
|
||
],
|
||
"code": 200,
|
||
"error": null,
|
||
"timestamp": 1776227311031,
|
||
"extra": null
|
||
}
|
||
```
|
||
|
||
# `/v1/fullsong/audio/{task_id}`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'GET' \
|
||
'http://127.0.0.1:8000/v1/fullsong/audio/1fa3cec4-98b0-48b0-ab60-97be8e4306ab?index=0' \
|
||
-H 'accept: application/json'
|
||
```
|
||
|
||
## Response
|
||
|
||
Header:
|
||
|
||
```text
|
||
content-disposition: attachment; filename="1fa3cec4-98b0-48b0-ab60-97be8e4306ab.mp3"
|
||
content-length: 3446400
|
||
content-type: audio/mpeg
|
||
date: Wed,15 Apr 2026 04:29:23 GMT
|
||
server: uvicorn
|
||
```
|
||
|
||
Body is the actual mp3 file payload
|
||
|
||
# `/v1/clip/generate`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'POST' \
|
||
'http://127.0.0.1:8000/v1/clip/generate' \
|
||
-H 'accept: application/json' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{
|
||
"prompt": "Gritty, Acid, Bassline, 303, Synth Lead, FM, Sub, Upper Mids, High Phaser, High Reverb, Pitch Bend, 8 Bars, 140 BPM, E minor",
|
||
"negative_prompt": "",
|
||
"bars": 8,
|
||
"bpm": 140,
|
||
"note": "C",
|
||
"scale": "minor",
|
||
"steps": 75,
|
||
"cfg_scale": 7,
|
||
"seed": -1,
|
||
"sampler_type": "dpmpp-2m-sde",
|
||
"sigma_min": 0.03,
|
||
"sigma_max": 500,
|
||
"cfg_rescale": 0
|
||
}'
|
||
```
|
||
|
||
## Response
|
||
|
||
```json
|
||
{
|
||
"task_id": "7ab55a6a-c478-45a0-bab7-1fd9cbd8597d"
|
||
}
|
||
```
|
||
|
||
# `/v1/clip/result/{task_id}`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'GET' \
|
||
'http://127.0.0.1:8000/v1/clip/result/7ab55a6a-c478-45a0-bab7-1fd9cbd8597d' \
|
||
-H 'accept: application/json'
|
||
```
|
||
|
||
## Response
|
||
|
||
When status == "complete", the generation is complete. otherwise the generation is still in progress.
|
||
|
||
```json
|
||
{
|
||
"task_id": "7ab55a6a-c478-45a0-bab7-1fd9cbd8597d",
|
||
"status": "complete"
|
||
}
|
||
```
|
||
|
||
# `/v1/clip/audio/{task_id}`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'GET' \
|
||
'http://127.0.0.1:8000/v1/clip/audio/7ab55a6a-c478-45a0-bab7-1fd9cbd8597d' \
|
||
-H 'accept: application/json'
|
||
```
|
||
|
||
## Response
|
||
|
||
Header
|
||
|
||
```text
|
||
content-length: 2419244
|
||
content-type: audio/wav
|
||
date: Wed,15 Apr 2026 04:47:41 GMT
|
||
server: uvicorn
|
||
```
|
||
|
||
Body will be the actual wav payload
|
||
|
||
# `/v1/clip/midi/{task_id}`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'GET' \
|
||
'http://127.0.0.1:8000/v1/clip/midi/7ab55a6a-c478-45a0-bab7-1fd9cbd8597d' \
|
||
-H 'accept: application/json'
|
||
```
|
||
|
||
## Response
|
||
|
||
Header
|
||
|
||
```text
|
||
content-length: 1458
|
||
content-type: audio/midi
|
||
date: Wed,15 Apr 2026 04:50:52 GMT
|
||
server: uvicorn
|
||
```
|
||
|
||
Body will be the actual MIDI payload
|
||
|
||
# `/v1/separator/separate`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'POST' \
|
||
'http://127.0.0.1:8000/v1/separator/separate' \
|
||
-H 'accept: application/json' \
|
||
-H 'Content-Type: multipart/form-data' \
|
||
-F 'file=@test.mp3;type=audio/mpeg' \
|
||
-F 'model_filename=MDX23C-8KFFT-InstVoc_HQ.ckpt'
|
||
```
|
||
|
||
(Assume there is a `test.mp3` in the current folder)
|
||
|
||
## Response
|
||
|
||
```bash
|
||
{
|
||
"task_id": "0b93cb76-616d-45f0-9580-61d615cd6a76"
|
||
}
|
||
```
|
||
|
||
# `/v1/separator/result/{task_id}`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'GET' \
|
||
'http://127.0.0.1:8000/v1/separator/result/0b93cb76-616d-45f0-9580-61d615cd6a76' \
|
||
-H 'accept: application/json'
|
||
```
|
||
|
||
## Response
|
||
|
||
### Working in Progress
|
||
|
||
```json
|
||
{
|
||
"task_id": "0b93cb76-616d-45f0-9580-61d615cd6a76",
|
||
"status": "running"
|
||
}
|
||
```
|
||
|
||
### Complete
|
||
|
||
```json
|
||
{
|
||
"task_id": "0b93cb76-616d-45f0-9580-61d615cd6a76",
|
||
"status": "complete",
|
||
"files": [
|
||
"0b93cb76-616d-45f0-9580-61d615cd6a76_(Instrumental)_MDX23C-8KFFT-InstVoc_HQ.mp3",
|
||
"0b93cb76-616d-45f0-9580-61d615cd6a76_(Vocals)_MDX23C-8KFFT-InstVoc_HQ.mp3"
|
||
]
|
||
}
|
||
```
|
||
|
||
# `/v1/separator/download/{filename}`
|
||
|
||
## Request
|
||
|
||
```bash
|
||
curl -X 'GET' \
|
||
'http://127.0.0.1:8000/v1/separator/download/0b93cb76-616d-45f0-9580-61d615cd6a76_%28Vocals%29_MDX23C-8KFFT-InstVoc_HQ.mp3' \
|
||
-H 'accept: application/json'
|
||
```
|
||
|
||
## Response
|
||
|
||
Header
|
||
|
||
```text
|
||
accept-ranges: bytes
|
||
content-disposition: attachment; filename="0b93cb76-616d-45f0-9580-61d615cd6a76_(Vocals)_MDX23C-8KFFT-InstVoc_HQ.mp3"
|
||
content-length: 8274590
|
||
content-type: audio/mpeg
|
||
date: Wed,15 Apr 2026 04:55:46 GMT
|
||
etag: "259510b3be99c4070c03c5da74976efd"
|
||
last-modified: Wed,15 Apr 2026 04:53:21 GMT
|
||
server: uvicorn
|
||
```
|
||
|
||
Body will be the actual mp3 payload.
|