Suno Task Query
Query Single Task
Request Examples
curl https://crazyrouter.com/suno/fetch/suno_task_abc123 \
-H "Authorization: Bearer YOUR_API_KEY"
Response Example (Processing)
{
"code": 1,
"data": {
"task_id": "suno_task_abc123",
"status": "processing",
"data": []
}
}
Response Example (Completed)
{
"code": 1,
"data": {
"task_id": "suno_task_abc123",
"status": "complete",
"data": [
{
"id": "clip_001",
"title": "Summer Beach",
"audio_url": "https://cdn.suno.ai/audio/clip_001.mp3",
"image_url": "https://cdn.suno.ai/image/clip_001.png",
"duration": 120.5,
"tags": "pop, english, upbeat",
"prompt": "[Verse]\nSunshine on the ocean waves...",
"status": "complete"
},
{
"id": "clip_002",
"title": "Summer Beach",
"audio_url": "https://cdn.suno.ai/audio/clip_002.mp3",
"image_url": "https://cdn.suno.ai/image/clip_002.png",
"duration": 118.3,
"tags": "pop, english, upbeat",
"prompt": "[Verse]\nSunshine on the ocean waves...",
"status": "complete"
}
]
}
}
Batch Query
Query multiple tasks at once.
Request Parameters
| Parameter | Type | Required | Description |
|---|
ids | array | Yes | List of task IDs |
Request Example
curl -X POST https://crazyrouter.com/suno/fetch \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"ids": ["suno_task_abc123", "suno_task_def456"]
}'
Some completed tasks provide lossless WAV format audio. Replace the file extension in the audio_url:
https://cdn.suno.ai/audio/clip_001.wav
Task Status
| Status | Description |
|---|
submitted | Submitted |
processing | Generating |
complete | Completed |
error | Failed |
Complete Workflow Example
import requests
import time
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://crazyrouter.com"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
# 1. Submit song generation task
resp = requests.post(f"{BASE_URL}/suno/submit/music", headers=headers, json={
"gpt_description_prompt": "An upbeat summer pop song in English",
"mv": "chirp-v4"
})
task_id = resp.json()["result"]
print(f"Task created: {task_id}")
# 2. Poll for results
while True:
resp = requests.get(f"{BASE_URL}/suno/fetch/{task_id}", headers=headers)
result = resp.json()["data"]
if result["status"] == "complete":
for clip in result["data"]:
print(f"Song: {clip['title']}")
print(f"Audio: {clip['audio_url']}")
print(f"Duration: {clip['duration']}s")
print("---")
break
elif result["status"] == "error":
print("Generation failed")
break
time.sleep(10)
Each song generation task typically returns 2 variants. Song generation usually takes 1-3 minutes. A polling interval of 10 seconds is recommended.