Tunova Suno API quickstart
A finished song in three lines. Generation is async — submit returns a job_id, then you poll it or get an HMAC-signed webhook. You’re billed only when a song actually delivers; a failed render refunds itself.
Need a key? Sign up free — 50 tokens (≈ 5 songs), no card.
# 1 — submit: returns 202 + a job_id (costs 10 tokens, settled on success)
curl https://api.tunova.ai/api/generate \
-H "X-API-Key: $TUNOVA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"calm rainy-night lofi","model":"v5.5"}'
# → {"job_id":"8f3a…","status":"queued","status_url":"/api/jobs/8f3a…"}
# 2 — poll until terminal (or pass "callback_url" for an HMAC-signed webhook instead)
curl https://api.tunova.ai/api/jobs/8f3a… -H "X-API-Key: $TUNOVA_API_KEY"
# → {"status":"complete","clips":[{"audio_url":"https://…mp3","duration":187.4}]}
# a failed render auto-refunds the 10 tokens — you never pay for it.
Reference
- That’s the whole API — submit, then poll or take a webhook. Full interactive reference: api.tunova.ai/docs · machine spec /openapi.json.
- Prefer a tidy wrapper? Zero-dependency Python & Node SDKs (+ MCP manifest): github.com/erliona/tunova-sdk.
- Models: v4.5 · v5 · v5.5 (per-request model param). Custom/lyrics mode: POST /api/custom_generate with prompt = your lyrics.
- Webhooks are HMAC-signed (X-Webhook-Signature: sha256=… over <timestamp>.<body>) so you can verify every callback is really from us.