Skip to main content

Suno CLI

PyPI version PyPI downloads Python 3.10+ License: MIT CI

A command-line tool for AI music generation using Suno through the AceDataCloud API.

Generate AI music, lyrics, and manage audio projects directly from your terminal — no MCP client required.

Features

  • Music Generation — Generate from prompts, custom lyrics, extend, cover, remaster, concat
  • Lyrics — Generate lyrics, mashup, optimize style descriptions
  • Media Conversion — Get MP4, WAV, MIDI, timing, extract vocals
  • Task Management — Query tasks, batch query, wait with polling
  • Rich Output — Beautiful terminal tables and panels via Rich
  • JSON Mode — Machine-readable output with --json for piping
  • File Input — Read lyrics from files with @filename syntax

Quick Start

1. Get API Token

Get your API token from AceDataCloud Platform:

  1. Sign up or log in
  2. Navigate to Suno Audios API
  3. Click "Acquire" to get your token

2. Install

# Install with pip
pip install suno-cli

# Or with uv (recommended)
uv pip install suno-cli

# Or from source
git clone https://github.com/AceDataCloud/SunoCli.git
cd SunoCli
pip install -e .

3. Configure

# Set your API token
export ACEDATACLOUD_API_TOKEN=your_token_here

# Or use .env file
cp .env.example .env
# Edit .env with your token

4. Use

# Generate music from a prompt
suno generate "A happy birthday song with acoustic guitar"

# Generate with custom lyrics
suno custom -l "[Verse]\nHello world\n[Chorus]\nLa la la" -t "Hello" -s "pop, upbeat"

# Read lyrics from a file
suno custom -l @lyrics.txt -t "My Song" -s "rock, powerful"

# Generate lyrics
suno lyrics "A love song about the ocean at sunset"

# Check task status
suno task <task-id>

# Wait for completion with polling
suno wait <task-id> --interval 5

# Get MP4 video
suno mp4 <audio-id>

# List available models
suno models

Commands

Music Generation

Command Description
suno generate <prompt> Generate music from a text prompt (Inspiration Mode)
suno custom Generate with custom lyrics, title, and style
suno extend <audio_id> Extend an existing song from a timestamp
suno cover <audio_id> Create a cover/remix version
suno remaster <audio_id> Remaster a song to improve quality
suno concat <audio_id> Merge extended segments into complete audio
suno generate-persona <audio_id> Generate music using a saved persona
suno generate-persona-vox <audio_id> Generate music using a persona's vocal style
suno stems <audio_id> Separate a song into vocals + instrumental
suno all-stems <audio_id> Separate a song into all individual stems
suno replace-section <audio_id> Replace a time range with new content
suno upload-extend <audio_id> Extend uploaded audio with AI continuation
suno upload-cover <audio_id> Create a cover of uploaded audio
suno mashup <id1> <id2>... Blend multiple songs into a mashup
suno underpainting <audio_id> Add AI accompaniment to uploaded audio
suno overpainting <audio_id> Add AI vocals to uploaded audio
suno samples <audio_id> Add AI samples to uploaded audio
suno inspo <audio_id> Generate a new song inspired by an existing audio

Lyrics

Command Description
suno lyrics <prompt> Generate song lyrics from a prompt
suno mashup-lyrics Generate mashup lyrics from two sources
suno optimize-style <prompt> Optimize a style description

Media Conversion

Command Description
suno mp4 <audio_id> Get MP4 video version
suno wav <audio_id> Get lossless WAV format
suno midi <audio_id> Get MIDI data
suno timing <audio_id> Get timing/subtitle data
suno vocals <audio_id> Extract vocal track

Task Management

Command Description
suno task <task_id> Query a single task status
suno tasks <id1> <id2>... Query multiple tasks at once
suno wait <task_id> Wait for task completion with polling

Utilities

Command Description
suno persona <audio_id> Create a saved voice style
suno personas List saved voice styles
suno persona-delete <persona_id> Delete a saved voice style
suno voice <audio_url> Create a voice style from an external voice recording
suno upload <audio_url> Upload external audio for processing
suno models List available Suno models
suno actions List available API actions
suno lyric-format Show lyrics formatting guide
suno config Show current configuration

Global Options

--token TEXT    API token (or set ACEDATACLOUD_API_TOKEN env var)
--version       Show version
--help          Show help message

Most commands support:

--json          Output raw JSON (for piping/scripting)
--model TEXT    Suno model version (default: chirp-v5-5)

The generate and custom commands also support:

--duration INT  Target track length in seconds

Scripting & Piping

The --json flag outputs machine-readable JSON suitable for piping:

# Generate and extract task ID
TASK_ID=$(suno generate "rock song" --json | jq -r '.task_id')

# Wait for completion and get audio URL
suno wait $TASK_ID --json | jq -r '.data[0].audio_url'

# Batch generate from a file of prompts
while IFS= read -r prompt; do
  suno generate "$prompt" --json >> results.jsonl
done < prompts.txt

Available Models

Model Version Max Duration Notes
chirp-v5-5 V5.5 8 min Latest, best quality (default)
chirp-v5 V5 8 min High quality
chirp-v4-5-plus V4.5+ 8 min Enhanced quality
chirp-v4-5 V4.5 4 min Vocal gender control
chirp-v4 V4 150s Stable
chirp-v3-5 V3.5 120s Fast
chirp-v3-0 V3 120s Legacy

Configuration

Environment Variables

Variable Description Default
ACEDATACLOUD_API_TOKEN API token from AceDataCloud Required
ACEDATACLOUD_API_BASE_URL API base URL https://api.acedata.cloud
SUNO_DEFAULT_MODEL Default model chirp-v5-5
SUNO_REQUEST_TIMEOUT Timeout in seconds 1800

Development

Setup Development Environment

# Clone repository
git clone https://github.com/AceDataCloud/SunoCli.git
cd SunoCli

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # or `.venv\Scripts\activate` on Windows

# Install with dev dependencies
pip install -e ".[dev,test]"

Run Tests

# Run unit tests
pytest

# Run with coverage
pytest --cov=suno_cli

# Run integration tests (requires API token)
pytest tests/test_integration.py -m integration

Code Quality

# Format code
ruff format .

# Lint code
ruff check .

# Type check
mypy suno_cli

Build & Publish

# Install build dependencies
pip install -e ".[release]"

# Build package
python -m build

# Upload to PyPI
twine upload dist/*

Docker

# Pull the image
docker pull ghcr.io/acedatacloud/suno-cli:latest

# Run a command
docker run --rm -e ACEDATACLOUD_API_TOKEN=your_token \
  ghcr.io/acedatacloud/suno-cli generate "A happy song"

# Or use docker-compose
docker compose run --rm suno-cli generate "A happy song"

Project Structure

SunoCli/
├── suno_cli/               # Main package
│   ├── __init__.py
│   ├── __main__.py        # python -m suno_cli entry point
│   ├── main.py            # CLI entry point
│   ├── core/              # Core modules
│   │   ├── client.py      # HTTP client for Suno API
│   │   ├── config.py      # Configuration management
│   │   ├── exceptions.py  # Custom exceptions
│   │   └── output.py      # Rich terminal formatting
│   └── commands/          # CLI command groups
│       ├── generate.py    # Music generation commands (12 commands)
│       ├── lyrics.py      # Lyrics & style commands
│       ├── media.py       # Media conversion commands
│       ├── persona.py     # Persona & upload commands
│       ├── task.py        # Task management commands
│       └── info.py        # Info & utility commands
├── tests/                  # Test suite (80+ tests)
├── .github/workflows/      # CI/CD (lint, test, publish to PyPI)
├── Dockerfile             # Container image
├── deploy/                # Kubernetes deployment configs
├── .env.example           # Environment template
├── pyproject.toml         # Project configuration
└── README.md

Suno CLI vs MCP Suno

Feature Suno CLI MCP Suno
Interface Terminal commands MCP protocol
Usage Direct shell, scripts, CI/CD Claude, VS Code, MCP clients
Output Rich tables / JSON Structured MCP responses
Automation Shell scripts, piping AI agent workflows
Install pip install suno-cli pip install mcp-suno

Both tools use the same AceDataCloud API and share the same API token.

API Reference

This tool wraps the AceDataCloud Suno API:

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing)
  5. Open a Pull Request

License

MIT License - see LICENSE for details.

Links


Made with ❤️ by AceDataCloud

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

suno_cli-2026.8.16.0.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

suno_cli-2026.8.16.0-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

Details for the file suno_cli-2026.8.16.0.tar.gz.

File metadata

  • Download URL: suno_cli-2026.8.16.0.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for suno_cli-2026.8.16.0.tar.gz
Algorithm Hash digest
SHA256 dec493bb86c71f337f8c4ffc7ce096ade2f4b7e880eff1a4c9533d3b3e5c6689
MD5 8c965e2eedebb193fc2ed8b1fb0aef5c
BLAKE2b-256 b4012715f113d971f8d5d638235924098d25b99e3a7fa94c4695ee0b6237455c

See more details on using hashes here.

File details

Details for the file suno_cli-2026.8.16.0-py3-none-any.whl.

File metadata

  • Download URL: suno_cli-2026.8.16.0-py3-none-any.whl
  • Upload date:
  • Size: 24.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for suno_cli-2026.8.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b53ec49a8855bb3cc8e132117b4fe22c5cc742f1da95773c429687d14d16205a
MD5 0ba574614387fb7bc7bb0a8233fd770b
BLAKE2b-256 78762d76b6adea621f4a30bff6324b05f70efba3c836e2a504c904c4d3a9cafc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page