List models
/v1/modelsQuery the current model catalogue and available model IDs.
Legacy IDs chirp-v3-0 and chirp-v3-5 currently return chirp-v4 and chirp-v4-5 respectively. Use a current model ID when the exact version matters.
DEVELOPER RESOURCES
Music API reference. Authenticate with a Bearer Key and use a stable idempotency_key for every write request.
Use Prefer: respond-async for generation, uploads and covers. A 202 response returns a task_id or upload_id immediately. Poll its GET endpoint until succeeded or failed; reuse the same idempotency_key when retrying.
/v1/modelsQuery the current model catalogue and available model IDs.
Legacy IDs chirp-v3-0 and chirp-v3-5 currently return chirp-v4 and chirp-v4-5 respectively. Use a current model ID when the exact version matters.
/v1/suno/generatecurl https://x.skeyx.com/v1/suno/generate \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Prefer: respond-async" \
-H "Content-Type: application/json" \
-d '{
"prompt": "warm cinematic instrumental",
"model": "chirp-v5-5",
"instrumental": true,
"idempotency_key": "music-001"
}'/v1/suno/uploadsRegister a publicly accessible HTTPS MP3 URL to receive a SKEYX upload_id. Registration does not consume generation credits.
curl https://x.skeyx.com/v1/suno/uploads \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Prefer: respond-async" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://your-domain.example/music.mp3",
"idempotency_key": "upload-001"
}'/v1/suno/coverscurl https://x.skeyx.com/v1/suno/covers \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Prefer: respond-async" \
-H "Content-Type: application/json" \
-d '{
"upload_id": "upl_...",
"model": "chirp-v5-5",
"prompt": "cinematic orchestral reinterpretation",
"style": "cinematic orchestral",
"instrumental": false,
"audio_weight": 0.8,
"idempotency_key": "cover-001"
}'/v1/suno/task/:task_idTasks and media use SKEYX identifiers. Audio, cover and video links are delivered through SKEYX media URLs.
/v1/usageRead your key balance, settled spend, reserved funds, model totals and daily usage. Daily usage, Console timestamps and CSV dates use UTC+8.
/v1/suno/tasks?limit=20&offset=0/v1/suno/uploads/:upload_idRetrieve an upload by its upload_id. Uploads are visible only to the key that registered them.
Enhanced uploads are asynchronous. Supply a song name and a public HTTPS MP3 URL, then poll upload_id until succeeded. Pass this upload_id to Cover. audio_url may be null; a playback URL is not required for a successful upload.
curl https://x.skeyx.com/v1/suno/uploads \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://your-domain.example/original.mp3",
"mode": "enhanced",
"name": "My original song",
"idempotency_key": "enhanced-upload-001"
}'/v1/suno/uploads/:upload_idUse the audio ID from a completed SKEYX track. Download and store your WAV promptly; hosted files may expire.
curl https://x.skeyx.com/v1/suno/wav \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Content-Type: application/json" \
-d '{
"audio_id": "mus_...",
"idempotency_key": "wav-001"
}'/v1/suno/task/:task_iddata[].file_url · WAV
Train on 6–24 authorized MP3 recordings. Generate with your own sound.
POST /v1/suno/custom-models
Business activation and agreed pricing are required. Creation reserves the agreed amount; only successful training is settled. Failed training releases the reservation. Reuse the same idempotency key when retrying.
curl https://x.skeyx.com/v1/suno/custom-models \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "create",
"name": "My Original Sound",
"audio_urls": [
"https://your-domain.example/original-1.mp3",
"https://your-domain.example/original-2.mp3",
"https://your-domain.example/original-3.mp3",
"https://your-domain.example/original-4.mp3",
"https://your-domain.example/original-5.mp3",
"https://your-domain.example/original-6.mp3"
],
"rights_confirmed": true,
"idempotency_key": "my-model-001"
}'Poll until status is ready. Only models owned by your account can be queried or used. Keep your API key and the returned model ID.
curl https://x.skeyx.com/v1/suno/custom-models \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "retrieve",
"id": "cm_..."
}'curl https://x.skeyx.com/v1/suno/custom-models \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "retrieve_batch",
"limit": 20,
"offset": 0,
"status": "ready"
}'Generate from a ready model. Poll the returned task_id using the task endpoint; audio is served through SKEYX.
curl https://x.skeyx.com/v1/suno/custom-models \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "generate",
"id": "cm_...",
"title": "Morning Light",
"lyric": "[Verse]\nMorning light across the floor\nAn open window, an open door",
"style": "warm acoustic folk",
"idempotency_key": "my-model-song-001"
}'Archive stops new generations. It is idempotent and does not guarantee released capacity. This integration uses polling; callbacks are not exposed.
curl https://x.skeyx.com/v1/suno/custom-models \
-H "Authorization: Bearer $SKEYX_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "delete",
"id": "cm_..."
}'Keep the same idempotency key when retrying. An accepted request is not a completed result. Poll until succeeded or failed; pending_vendor means the final result is still being verified.
HTTP 202
{"task_id":"local-task-id","state":"running"}
GET /v1/suno/task/local-task-id
Authorization: Bearer $SKEYX_KEY
{"task_id":"local-task-id","state":"succeeded","data":[
{"id":"mus_...","model":"chirp-v5-5","state":"succeeded",
"audio_url":"https://x.skeyx.com/media/local-media-id"}
]}
POST /v1/suno/custom-models · action=create
{"id":"cm_...","task_id":"local-task-id","status":"queued",
"source_count":6,"progress":{"uploaded":0,"total":6}}INVALID_API_KEY: check your key. INSUFFICIENT_BALANCE: manage credit in Console. RATE_LIMITED: retry later. INVALID_REQUEST: check required fields. CUSTOM_MODEL_NOT_READY: wait for ready. Reuse the original idempotency key after a network timeout.
{"error":{"code":"INVALID_REQUEST","message":"The request is invalid.","request_id":"skx_..."}}List tasks with limit and offset. Task and upload queries are scoped to the active key. Custom models are scoped to your account. Pricing, usage and task CSV exports are available in Console.
GET /v1/suno/tasks?limit=20&offset=0
GET /v1/suno/custom-models?limit=20&offset=0&status=ready
Authorization: Bearer $SKEYX_KEYGET /v1/models lists the accepted models and protocols.
POST /v1/messagesAuthorization: Bearer $SKEYX_KEY
Content-Type: application/json
{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"stream": true,
"messages": [
{
"role": "user",
"content": "Hello"
}
]
}GET /v1/models lists the accepted models and protocols.
POST /v1/responsesAuthorization: Bearer $SKEYX_KEY
Content-Type: application/json
{
"model": "gpt-5.6-luna",
"input": "Hello",
"max_output_tokens": 1024,
"stream": true
}GET /v1/models lists the accepted models and protocols.
POST /v1beta/models/gemini-3.1-pro-preview:streamGenerateContent?alt=sseAuthorization: Bearer $SKEYX_KEY
Content-Type: application/json
{
"contents": [
{
"parts": [
{
"text": "Hello"
}
]
}
],
"generationConfig": {
"maxOutputTokens": 1024
}
}GET /v1/models lists the accepted models and protocols.
POST /v1/images/generationsAuthorization: Bearer $SKEYX_KEY
Content-Type: application/json
{
"model": "nano-banana-2",
"prompt": "A red circle on a white background",
"idempotency_key": "image-example-1"
}GET /v1/models lists the accepted models and protocols.
POST /v1/images/generationsAuthorization: Bearer $SKEYX_KEY
Content-Type: application/json
{
"model": "gpt-image-2",
"prompt": "A red circle on a white background",
"quality": "low",
"size": "1024x1024",
"idempotency_key": "image-example-2"
}GET /v1/models lists the accepted models and protocols.
POST /v1/videosAuthorization: Bearer $SKEYX_KEY
Content-Type: application/json
{
"model": "veo31-fast",
"prompt": "A ceramic mug on a white table, static shot",
"resolution": "720p",
"idempotency_key": "video-example-1"
}