> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crazyrouter.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Suno Task Query

> Query the status and results of Suno song generation tasks

> Last updated: 2026-06-06

# Suno Task Query

## Query Single Task

```
GET /suno/fetch/{id}
```

### Request Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.crazyrouter.com/suno/fetch/suno_task_abc123 \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      "https://api.crazyrouter.com/suno/fetch/suno_task_abc123",
      headers={"Authorization": "Bearer YOUR_API_KEY"}
  )

  print(response.json())
  ```
</CodeGroup>

### Response Example (Processing)

```json theme={null}
{
  "code": 1,
  "data": {
    "task_id": "suno_task_abc123",
    "status": "processing",
    "data": []
  }
}
```

### Response Example (Completed)

```json theme={null}
{
  "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

```
POST /suno/fetch
```

Query multiple tasks at once.

### Request Parameters

| Parameter | Type  | Required | Description      |
| --------- | ----- | -------- | ---------------- |
| `ids`     | array | Yes      | List of task IDs |

### Request Example

```bash cURL theme={null}
curl -X POST https://api.crazyrouter.com/suno/fetch \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "ids": ["suno_task_abc123", "suno_task_def456"]
  }'
```

***

## Get WAV Format

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

```python Python theme={null}
import requests
import time

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.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)
```

<Note>
  Each song generation task typically returns 2 variants. Song generation usually takes 1-3 minutes. A polling interval of 10 seconds is recommended.
</Note>
