API Get key

SunoAudio

Music

Two tracks per take with Suno.

Price
12 crper take · 30 s
Usual time
≈ 2 min
Model id
audio.music

Playground

Playground

10 - 360

More settings
Singing voice
Sign up to run it

Change the settings: the price and the code follow. You need an account to run it.

audio.music
Length
10-360 s
Takes
Text

No example of this model yet. These are its real settings.

# 1. Create the job. It is charged once and refunded if it fails.
JOB_ID=$(curl -s -X POST https://staglight.ai/api/v1/jobs \
  -H "Authorization: Bearer $STAGLIGHT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "op": "audio.music",
    "params": {
      "duration": 30
    },
    "max_credits": 12
  }' | jq -r .id)

# 2. Poll until it finishes. Each call waits up to 30 seconds.
while :; do
  JOB=$(curl -s "https://staglight.ai/api/v1/jobs/$JOB_ID?wait=30" -H "Authorization: Bearer $STAGLIGHT_API_KEY")
  case "$(echo "$JOB" | jq -r .status)" in queued|running) ;; *) break ;; esac
done

# 3. Download the result from outputs[0].download_url.
DOWNLOAD_URL=$(echo "$JOB" | jq -r '.outputs[0].download_url')
curl -L -o result.mp3 "$DOWNLOAD_URL"
import os, uuid, requests

BASE = "https://staglight.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['STAGLIGHT_API_KEY']}"}

# 1. Create the job. It is charged once and refunded if it fails.
r = requests.post(f"{BASE}/jobs", timeout=60,
                  headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
                  json={
                    "op": "audio.music",
                    "params": {
                      "duration": 30
                    },
                    "max_credits": 12
                  })
r.raise_for_status()
job = r.json()

# 2. Poll until it finishes. Each call waits up to 30 seconds.
while job["status"] in ("queued", "running"):
    job = requests.get(f"{BASE}/jobs/{job['id']}", headers=HEADERS,
                       params={"wait": 30}, timeout=60).json()

# 3. Download the result from outputs[0].download_url.
print(job["outputs"][0]["download_url"] if job["outputs"] else job["data"] or job["error"])
// Node 18 or newer. Save as run.mjs: top-level await needs a module.
const BASE = "https://staglight.ai/api/v1";
const headers = { Authorization: `Bearer ${process.env.STAGLIGHT_API_KEY}` };

// 1. Create the job. It is charged once and refunded if it fails.
let res = await fetch(`${BASE}/jobs`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID() },
  body: JSON.stringify({
    "op": "audio.music",
    "params": {
      "duration": 30
    },
    "max_credits": 12
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
let job = await res.json();

// 2. Poll until it finishes. Each call waits up to 30 seconds.
while (job.status === "queued" || job.status === "running") {
  job = await (await fetch(`${BASE}/jobs/${job.id}?wait=30`, { headers })).json();
}

// 3. Download the result from outputs[0].download_url.
console.log(job.outputs[0]?.download_url ?? job.data ?? job.error);
{
  "id": "job_19a2b3c4d5e6f7a8b9c0d1",
  "op": "audio.music",
  "status": "queued",
  "credits": 12,
  "title": "",
  "params": {
    "duration": 30
  },
  "progress": null,
  "outputs": [],
  "data": null,
  "error": null,
  "run_id": null,
  "source": "api",
  "created_at": "2026-11-06T12:00:00Z",
  "finished_at": null,
  "eta_seconds": 90
}

What it costs

12 cr per run. The settings do not change the price.

The playground shows the exact price for your settings. A job is charged once when it is accepted, and refunded if it fails.

Parameters

NameTypeDefaultAllowed
promptTrack idea string Up to 3,000 characters
styleStyle string Up to 1,000 characters
instrumentalInstrumental boolean true
durationDuration (s) integer 30 10 - 360
titleTitle string Up to 80 characters
lyricsLyrics string Up to 5,000 characters
vocal_genderSinging voice enum any any, f, m

Send these inside params. Files are media ids from POST /api/v1/uploads. View documentation

More models