Skip to content

The Suno API in 2026: How to Generate Full Songs (and What It Costs)

2026-07-27· 7 min read md

There is no official Suno API. How to call Suno V4.5 Plus programmatically, what each song costs, and the exact request and polling format.

Suno does not publish an official public API. If you want to generate full songs — vocals, lyrics, structure — from inside your own app, you need a provider that exposes Suno as an endpoint. Here that endpoint is suno, priced at 13.21 credits per generation, which is $0.1321 (1 credit = $0.01), and you are only charged when a song actually comes back.

That's the whole post in one paragraph. The rest is the detail you'll need to ship it.

Why "there's no official API" matters

Most model APIs are a thin wrapper over a documented public endpoint. Suno isn't. That has three practical consequences for you as a builder:

  1. You can't get an official price list, so per-generation cost is set by whoever fronts the model.
  2. Reliability is not a given. Music generation is a long-running job, and upstream capacity fluctuates.
  3. You need an async contract. You will not get a finished song back on an open HTTP connection — it takes far longer than a sane request timeout.

So the two things worth comparing between providers are: what you pay per finished song, and what happens when a generation fails.

What a song costs

ModelModel idPrice per generation
Sunosuno$0.1321 (13.21 credits)

Two details that change your real cost more than the sticker price:

  • Failed, errored or empty generations are refunded automatically. You pay for songs you actually receive — more on that in Never pay for a failed generation.
  • Credits never expire. A $5 top-up gets you 500 credits — roughly 37 songs — and it's still there next month. Larger packs add bonus credits (+5% at $500, +10% at $1,250).

Current pricing for every model is always on the pricing page.

How to call it

Suno is a two-step, create-then-poll flow. Create the task:

POST https://you.bot/api/v1/generate
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "modelId": "suno",
  "input": {
    "modelVersion": "V4_5PLUS",
    "customMode": false,
    "prompt": "An upbeat synthwave track with driving bass, bright arpeggios and a nostalgic 80s feel.",
    "title": "Neon Drive",
    "style": "synthwave, energetic, retro",
    "instrumental": false
  }
}

Response:

{ "taskId": "281e5b0…f39b9", "creditsCharged": 13.21 }

Then poll until it's done:

GET https://you.bot/api/v1/task/{taskId}?model=suno

When state is success, your audio is in resultUrls:

{ "state": "success", "resultUrls": ["https://…"] }

Prefer not to poll? Pass a callbackUrl in the create request and you'll get a signed webhook when the song is ready.

Python, end to end

import os, time, requests

API = "https://you.bot/api/v1"
H = {"Authorization": f"Bearer {os.environ['YOUBOT_API_KEY']}"}

def make_song(prompt, title, style):
    r = requests.post(f"{API}/generate", headers=H, json={
        "modelId": "suno",
        "input": {"modelVersion": "V4_5PLUS", "prompt": prompt,
                  "title": title, "style": style, "instrumental": False},
    }).json()
    task_id = r["taskId"]

    while True:
        t = requests.get(f"{API}/task/{task_id}", headers=H,
                         params={"model": "suno"}).json()
        if t["state"] == "success":
            return t["resultUrls"]
        if t["state"] in ("failed", "error"):
            raise RuntimeError(t)          # credits are refunded automatically
        time.sleep(5)

print(make_song("lofi beat, rainy night, mellow keys", "Rainy Lofi", "lofi, chill"))

The input parameters that actually matter

ParameterRequiredNotes
promptYesDescribe the music, not just the topic. Instrumentation and mood beat adjectives.
titleYesShows up as the track title.
styleYesComma-separated genre and mood tags, e.g. synthwave, energetic, retro.
modelVersionYesV5 · V4_5PLUS (default) · V4_5 · V4
customModeNoDefault false. Turn on for tighter control over structure and lyrics.
instrumentalNotrue for no vocals.
vocalGenderNom or f
styleWeight, audioWeight, weirdnessConstraintNo0–1 dials. Nudge, don't slam.
negativeTagsNoStyles to steer away from.
callbackUrlNoHTTPS URL for a signed completion webhook.

Full parameter reference, plus an in-browser playground you can test with your own prompt before writing any code, is on the Suno model page. There's also a machine-readable version at /models/suno/md if you'd rather point an LLM at the docs.

Errors you should handle

CodeMeaning
400 / 422Bad or missing parameters — check prompt, title, style
401API key problem
402Not enough credits
429Rate limited — back off and retry
500Upstream or internal error — the credits come back

Three things I'd do before shipping

Treat generation as a queue, not a request. Songs take minutes. Kick off the task, store the taskId, and let a webhook or worker finish the job. Never block a user-facing request on it.

Log creditsCharged per task. It's in the create response. Sum it per user or per feature and you have real unit economics without building a metering system.

Keep a fallback route. If you already call another provider, keep that key. Route primary traffic to the cheaper endpoint, fall back on failure — you capture the savings and don't bet uptime on one vendor.

FAQ

Is there an official Suno API? No. Suno doesn't publish a public API, so programmatic access goes through a provider that exposes it as an endpoint — here that's the model id suno.

How much does one song cost? $0.1321 per generation (13.21 credits) as of 15 August 2026. Failed or empty generations are refunded automatically, so you only pay for songs you receive.

Can I generate instrumental-only tracks? Yes — set "instrumental": true in the input object.

How long does a generation take? Minutes, not seconds. Use the callbackUrl webhook or poll GET /api/v1/task/{taskId} instead of holding a request open.

Can I commercially use the output? That depends on Suno's own terms for the model tier you use — check them before you ship, because the API provider doesn't change the underlying licence.

What else can I call with the same key? The same endpoint fronts 80+ models across text, image, video and music — you switch by changing modelId. See the music models, the full catalog, or the cheapest AI APIs in 2026.

All posts

Related posts