Tunova

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.