suno-music-cli
A small, friendly command-line client for sunoapi.org. Submit lyrics or a description, get a task ID back, poll until ready, and download the resulting MP3 — all from your terminal, scriptable end to end.
Features
- Generate music from a description or your own lyrics, in any language.
- Tune the result with sliders for style adherence, weirdness, and audio
weight; control vocal gender, models (
V4throughV5_5), and personas. - Extend an existing track from any timestamp, with optional fresh parameters or inherited defaults.
- Watch and download with a single
--waitflag, or fire-and-forget and poll later with--last. - URL-only mode — get the 15-day CDN link without downloading the file.
- Local job cache so you never have to copy-paste task IDs.
- JSON output on every read command for
jqpipelines.
Install
pip install suno-music-cli
Requires Python 3.10 or newer.
Configure
Get an API key from sunoapi.org and provide it one of two ways:
export SUNO_API_KEY=sk-... # ephemeral
suno config set-key sk-... # persistent, in ~/.suno/config.toml
Optional overrides: SUNO_BASE_URL, SUNO_CALLBACK_URL. See
Documentation.md §2.
Quick start
# Submit a job (the model writes its own lyrics from the description)
suno generate -p "ambient piano, soft rain, late night" -m V5
# Watch it through to completion
suno status --last --watch
# Save the audio
suno download --last -o ./out/
--last always points to the most recent job in your local cache.
Commands at a glance
| Command | What it does |
|---|---|
suno generate |
Submit a generation job. Returns a taskId. |
suno status |
Poll record-info for a task. --watch blocks until done. |
suno download |
Save audio files to disk, or print URLs with --url-only. |
suno extend |
Continue an existing track from a timestamp. |
suno lyrics |
Submit a lyrics-only generation job. |
suno credits |
Show remaining account balance. |
suno list |
Show recently submitted jobs from local cache. |
suno config |
Manage API key and other settings. |
Every flag is documented in Documentation.md §3.
A richer example: custom lyrics with full control
suno generate \
--custom \
--lyrics-file ./lyrics.txt \
--style-file ./style.txt \
--title "Midnight Drive" \
--model V5 \
--vocal-gender f \
--style-weight 0.85 \
--weirdness 0.20 \
--negative-tags "metal, heavy distortion" \
--wait
Custom mode lets you provide your own lyrics with section markers
([Verse 1], [Chorus], [Bridge]), works in non-Latin scripts, and
honors a long, structured style descriptor. The three weight sliders fine-tune
how closely the model follows your direction. See
§4 — Techniques for the
craft side of getting good music out of Suno.
URLs vs files
suno download --last --url-only # print the CDN URLs (15-day links)
suno download --last -o ./out/ # save to ./out/<title>.mp3
suno download --last -o song.mp3 --track 1
A taskId typically returns two tracks; multi-track outputs are saved with
an 8-character suffix to keep filenames unique.
Documentation
The full reference — every flag, every API field, all the music-creation techniques (lyrics structure, style descriptors, slider pairings, language handling, troubleshooting) — lives in Documentation.md.
Highlights:
- Concepts — modes, models, status lifecycle, character limits.
- Command reference — every flag mapped to its API field.
- Techniques — how to write a style descriptor that actually works, what the sliders do, multilingual lyrics tips.
- Troubleshooting — common errors and fixes.
Limits and constraints (good to know)
- 20 requests per 10-second window (server rate limit).
- Stream URLs available 30–40s after submit, download URLs 2–3 minutes after.
- Generated files retained on the CDN for 15 days, then deleted.
- Per-model character caps for
prompt,style, andtitle— see §1.5.
Contributing
Issues and pull requests welcome at github.com/bengeos/suno-music-cli.
License
MIT © 2026 Biniam Kassahun
Metadata
Release files for suno-music-cli 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| suno_music_cli-0.1.2.tar.gz | 10.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| suno_music_cli-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.5 kB
Release files / suno_music_cli-0.1.2.tar.gz
| Download URL | suno_music_cli-0.1.2.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e3d8f866d4b95a7a04ec5eabcd89a6226a5263771e83d2407eb594c494ad539
|
|
BLAKE2b-256 checksum How to use checksums |
49cf082799f4f90ede634a12576da751198e09dbb9240f7b4df12ac39a1b25a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / suno_music_cli-0.1.2-py3-none-any.whl
| Download URL | suno_music_cli-0.1.2-py3-none-any.whl |
|---|---|
| Size | 12.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
50ca3d2a24c71070216c539dd59d180b402395865a8369a8032e569c9388b9f3
|
|
BLAKE2b-256 checksum How to use checksums |
e9bf21b283cd251cbeaf7fc63574d54e4a69f7993ecf28e84b9ed90f07d9995f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency log