Generate Music

Generate AI music from text prompts using Suno V5. Each generation returns 2 song variations with cover art. 15 credits per generation. Simple mode or custom mode with lyrics, style, and title control.

API-only. Music generation is available exclusively through the VicSee API. Studio UI coming soon.

Pricing

ModelCreditsDescription
Suno V515AI music from text (2 songs per generation)

Credits are deducted upfront. Refunded automatically if generation fails. Each generation produces 2 song variations with cover art.


Endpoint

POST https://vicsee.com/api/v1/generate

See Authentication for API key setup.


Simple Mode

Describe the music you want. Suno generates lyrics, melody, and arrangement automatically.

Parameters


model · string · required

Must be "suno-v5-generate-music".


input.prompt · string · required

A description of the desired music. Maximum 500 characters. Suno will auto-generate lyrics and arrangement based on this.

Good prompts are descriptive:

  • "An upbeat electronic track for a product launch video"
  • "Melancholy acoustic guitar ballad about saying goodbye"
  • "90s hip-hop beat with heavy bass and vinyl scratches"

input.instrumental · boolean · optional

Set to true for instrumental-only (no vocals/lyrics).

Default: false


Example Request

curl -X POST https://vicsee.com/api/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v5-generate-music",
    "input": {
      "prompt": "An upbeat electronic track for a product launch video"
    }
  }'

Instrumental Example

curl -X POST https://vicsee.com/api/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v5-generate-music",
    "input": {
      "prompt": "Calm lo-fi beats for studying",
      "instrumental": true
    }
  }'

Custom Mode

Full control over lyrics, style, and title. Set custom_mode to true.

Parameters


input.custom_mode · boolean · required

Must be true to enable custom mode.


input.title · string · required

Song title. Maximum 80 characters.


input.style · string · required

Music style/genre specification. Maximum 1,000 characters.

Examples: "Jazz", "Electronic, Upbeat, Synth-pop", "Dark ambient with orchestral swells"


input.lyrics · string · required (unless instrumental)

The exact lyrics to sing. Maximum 5,000 characters. Not required when instrumental is true.

Use Suno's formatting tags for structure:

  • [Verse], [Chorus], [Bridge], [Outro] for song sections
  • [Instrumental Break] for instrumental passages within a vocal track

input.instrumental · boolean · optional

Set to true for instrumental-only. When true, lyrics is not required.

Default: false


input.vocal_gender · string · optional

Preferred vocal gender. Only effective in custom mode. Note: this increases the probability but does not guarantee the vocal gender.

Values: "m" (male), "f" (female)


input.negative_tags · string · optional

Styles to exclude from the generation.

Example: "Heavy Metal, Screaming"


Example Request

curl -X POST https://vicsee.com/api/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v5-generate-music",
    "input": {
      "custom_mode": true,
      "title": "Launch Day",
      "style": "Electronic, Upbeat, Synth-pop",
      "lyrics": "[Verse]\nThe future starts today\nEvery pixel comes alive\n\n[Chorus]\nLaunch day, launch day\nWe built this from the ground up",
      "vocal_gender": "f",
      "negative_tags": "Heavy Metal"
    }
  }'

Response

Step 1: Submit (200)

The generate endpoint returns a pending task immediately:

{
  "success": true,
  "data": {
    "id": "task_abc123",
    "model": "suno-v5-generate-music",
    "status": "pending",
    "creditsUsed": 15,
    "creditsRemaining": 485,
    "createdAt": "2026-03-01T12:00:00.000Z"
  }
}

Step 2: Poll for Result

Poll GET /api/v1/tasks/{id} until status is completed (typically 30-120 seconds):

curl https://vicsee.com/api/v1/tasks/task_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Step 3: Completed (songs)

{
  "success": true,
  "data": {
    "id": "task_abc123",
    "model": "suno/generate-music",
    "status": "completed",
    "mediaType": "music",
    "result": {
      "songs": [
        {
          "audio_url": "https://cdn.example.com/song1.mp3",
          "image_url": "https://cdn.example.com/cover1.jpeg",
          "duration": 198.44,
          "title": "Launch Day",
          "tags": "electronic, upbeat, synth-pop",
          "prompt": "[Verse] The future starts today..."
        },
        {
          "audio_url": "https://cdn.example.com/song2.mp3",
          "image_url": "https://cdn.example.com/cover2.jpeg",
          "duration": 212.28,
          "title": "Launch Day",
          "tags": "electronic, upbeat, synth-pop",
          "prompt": "[Verse] The future starts today..."
        }
      ]
    },
    "createdAt": "2026-03-01T12:00:00.000Z"
  }
}

Each generation produces 2 song variations. Audio URLs are temporary (14 days).


Coming Soon

Additional music operations are planned for future release:

  • Extend Music — Continue a generated song
  • Upload & Cover — Upload audio and re-style it
  • Add Vocals / Instrumental — Add or remove vocals from a track
  • Create Music Video — Generate a music video from a song

Limits

ConstraintValue
Songs per generation2 variations
Max prompt length (simple)500 characters
Max lyrics length (custom)5,000 characters
Max style length (custom)1,000 characters
Max title length80 characters
Audio formatMP3
Audio URL expiry14 days

Errors

CodeHTTPDescription
MISSING_PROMPT400prompt not provided (simple mode)
PROMPT_TOO_LONG400Prompt exceeds 500 characters
MISSING_STYLE400style not provided (custom mode)
STYLE_TOO_LONG400Style exceeds 1,000 characters
MISSING_TITLE400title not provided (custom mode)
TITLE_TOO_LONG400Title exceeds 80 characters
MISSING_LYRICS400lyrics not provided (custom mode, non-instrumental)
LYRICS_TOO_LONG400Lyrics exceed 5,000 characters
INVALID_VOCAL_GENDER400vocal_gender not "m" or "f"
INSUFFICIENT_CREDITS402Not enough credits
GENERATION_FAILED500Provider failed