Suno API

Local server — powered by gcui-art/suno-api

Base URL: http://localhost:3000
This server runs locally only. Start it with npm run start from C:\Users\lmfd1\suno-api. No auth header required for local calls.

Endpoints

POST/api/generate

Generate music from a text description. Returns immediately with a task ID — poll /api/get for the result.

{
  "prompt": "an upbeat indie pop song about summer",
  "make_instrumental": false,
  "wait_audio": false
}
POST/api/custom_generate

Custom mode — supply your own lyrics, style tags, and title.

{
  "prompt": "verse 1\nHello world\n\nchorus\nThis is my song",
  "tags": "pop upbeat female vocalist",
  "title": "My Song",
  "make_instrumental": false,
  "wait_audio": false
}
GET/api/get?ids=<id>,<id>

Poll for completed tracks. When status is "complete", audio_url and image_url are populated.

{
  "id": "abc123",
  "status": "complete",
  "audio_url": "https://cdn.suno.ai/...",
  "image_url": "https://cdn.suno.ai/...",
  "title": "My Song",
  "duration": 180
}
POST/api/extend_audio

Extend an existing track. Pass the clip ID and a continuation prompt.

{
  "audio_id": "abc123",
  "prompt": "bridge section, slower tempo",
  "continue_at": 120
}
POST/api/generate_lyrics

Generate lyrics only (no audio).

{ "prompt": "a birthday song for a 5-year-old" }
GET/api/get_limit

Check remaining credits for the month.

{
  "credits_left": 2470,
  "period": "month",
  "monthly_limit": 2500,
  "monthly_usage": 30
}

Typical flow

1. POST /api/generate  →  { id: "abc123", status: "submitted" }
2. GET  /api/get?ids=abc123  →  { status: "processing" }   ← repeat every 5s
3. GET  /api/get?ids=abc123  →  { status: "complete", audio_url: "..." }
4. Download audio_url

← back  ·  Logs: C:\Users\lmfd1\suno-api\server.log