Skip to main content

Compose Music

POST 

https://api.knoxstudio.ai/v1/music

Compose a song and return the audio file. Send prompt or composition_plan, not both. Billed at $0.20 per generated minute. Walkthrough: Music.

Request​

Query Parameters​

NameTypeRequiredDescription
output_formatStringNoDefault auto. Allowed: auto, mp3_48000_128, mp3_48000_192, mp3_48000_240, mp3_48000_320, mp3_22050_32, mp3_24000_48, mp3_44100_32, mp3_44100_64, mp3_44100_96, mp3_44100_128, mp3_44100_192, pcm_8000, pcm_16000, pcm_22050, pcm_24000, pcm_32000, pcm_44100, pcm_48000, ulaw_8000, alaw_8000, opus_48000_32, opus_48000_64, opus_48000_96, opus_48000_128, opus_48000_192.

Request Headers​

NameTypeRequiredDescription
AuthorizationStringYesBearer <token> Knox API key. xi-api-key is also accepted.
Content-TypeStringYesapplication/json.

Request Body​

NameTypeRequiredDescription
promptStringConditionalText prompt. Cannot be used with composition_plan.
composition_planObjectConditionalStructured plan from POST /v1/music/plan. Cannot be used with prompt.
music_length_msIntegerNoLength in ms, 3000–300000. Only with prompt. Knox caps songs at 5 minutes.
model_idStringNomusic_v1 (default), music_v2, or music_v2_5.
seedIntegerNoDeterminism hint. Cannot be used with prompt.
force_instrumentalBooleanNoIf true, no vocals. Only with prompt. Default false.
finetune_idStringNoOptional finetune from /v1/music/finetunes.
respect_sections_durationsBooleanNoEnforce plan section durations. music_v1 only; ignored for v2 / v2.5. Default true.
store_for_inpaintingBooleanNoStore the song for later inpainting. Default false.
sign_with_c2paBooleanNoC2PA sign MP3 output. Default false.

cURL Example​

curl -X POST "https://api.knoxstudio.ai/v1/music?output_format=mp3_44100_128" \
-H "Authorization: Bearer $KNOXCHAT_API_KEY" \
-H "Content-Type: application/json" \
-o song.mp3 \
-d '{
"model_id": "music_v2_5",
"prompt": "An upbeat indie-pop song about a night drive",
"music_length_ms": 60000
}'

Response​

Success Response (200)​

The generated audio file. Content-Type follows output_format (default MP3). Song IDs used for inpainting are returned in response headers.

Billed at $0.20 per generated minute (prompt-only requests without music_length_ms are estimated at 30 seconds until the actual duration is known).

Error Responses​

Validation uses HTTP 422:

{
"detail": [
{
"loc": ["body", "field"],
"msg": "…",
"type": "value_error"
}
]
}

Other errors use { "detail": "message" }.

StatusWhen
400WebSocket path called without Upgrade: websocket.
401Missing or invalid API key.
402Insufficient credits.
403Token is not allowed to use this model.
404Resource not found.
422Validation error.
429Rate limit exceeded.
500Internal server error.