suno-cli 2026.3.17.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ # CLI Suno Environment
2
+ ACEDATACLOUD_API_TOKEN=your_api_token_here
3
+ # ACEDATACLOUD_API_BASE_URL=https://api.acedata.cloud
4
+ # SUNO_DEFAULT_MODEL=chirp-v4-5
5
+ # SUNO_REQUEST_TIMEOUT=1800
@@ -0,0 +1,32 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # Distribution / packaging
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ *.egg
11
+
12
+ # Virtual environments
13
+ .venv/
14
+ venv/
15
+ ENV/
16
+
17
+ # Environment variables
18
+ .env
19
+
20
+ # IDE
21
+ .vscode/
22
+ .idea/
23
+ *.swp
24
+ *.swo
25
+
26
+ # Testing
27
+ .coverage
28
+ htmlcov/
29
+ .pytest_cache/
30
+
31
+ # mypy
32
+ .mypy_cache/
@@ -0,0 +1,16 @@
1
+ # Changelog
2
+
3
+ ## [2026.3.17.0] - 2026-03-17
4
+
5
+ ### Added
6
+ - Initial release
7
+ - Music generation: generate, custom, extend, cover, remaster, concat
8
+ - Lyrics: generate, mashup, optimize-style
9
+ - Media conversion: mp4, wav, midi, timing, vocals
10
+ - Task management: task, tasks, wait (with polling)
11
+ - Persona management and audio upload
12
+ - Info commands: models, actions, lyric-format, config
13
+ - Rich terminal output with tables and panels
14
+ - JSON output mode (`--json` flag)
15
+ - File-based lyrics input (`@lyrics.txt` syntax)
16
+ - Environment variable and `--token` flag authentication
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AceDataCloud
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,374 @@
1
+ Metadata-Version: 2.1
2
+ Name: suno-cli
3
+ Version: 2026.3.17.0
4
+ Summary: CLI tool for Suno AI Music Generation via AceDataCloud API
5
+ Project-URL: Homepage, https://github.com/AceDataCloud/SunoCli
6
+ Project-URL: Documentation, https://platform.acedata.cloud/documents/4da95d9d-7722-4a72-857d-bf6be86036e9
7
+ Project-URL: Repository, https://github.com/AceDataCloud/SunoCli
8
+ Project-URL: Issues, https://github.com/AceDataCloud/SunoCli/issues
9
+ Project-URL: Changelog, https://github.com/AceDataCloud/SunoCli/blob/main/CHANGELOG.md
10
+ Author-email: AceDataCloud <support@acedata.cloud>
11
+ Maintainer-email: AceDataCloud <support@acedata.cloud>
12
+ License: MIT
13
+ License-File: LICENSE
14
+ Keywords: acedata,ai,audio,cli,command-line,generation,music,suno
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Topic :: Multimedia :: Sound/Audio
25
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
26
+ Requires-Python: >=3.10
27
+ Requires-Dist: click>=8.1.0
28
+ Requires-Dist: httpx>=0.27.0
29
+ Requires-Dist: pydantic>=2.0.0
30
+ Requires-Dist: python-dotenv>=1.0.0
31
+ Requires-Dist: rich>=13.0.0
32
+ Provides-Extra: all
33
+ Requires-Dist: suno-cli[dev,release,test]; extra == 'all'
34
+ Provides-Extra: dev
35
+ Requires-Dist: mypy>=1.10.0; extra == 'dev'
36
+ Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
37
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
38
+ Provides-Extra: release
39
+ Requires-Dist: build>=1.2.0; extra == 'release'
40
+ Requires-Dist: twine>=6.1.0; extra == 'release'
41
+ Provides-Extra: test
42
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'test'
43
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
44
+ Requires-Dist: pytest>=8.0.0; extra == 'test'
45
+ Requires-Dist: respx>=0.21.0; extra == 'test'
46
+ Description-Content-Type: text/markdown
47
+
48
+ # Suno CLI
49
+
50
+ [![PyPI version](https://img.shields.io/pypi/v/suno-cli.svg)](https://pypi.org/project/suno-cli/)
51
+ [![PyPI downloads](https://img.shields.io/pypi/dm/suno-cli.svg)](https://pypi.org/project/suno-cli/)
52
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
53
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
54
+ [![CI](https://github.com/AceDataCloud/SunoCli/actions/workflows/ci.yaml/badge.svg)](https://github.com/AceDataCloud/SunoCli/actions/workflows/ci.yaml)
55
+
56
+ A command-line tool for AI music generation using [Suno](https://suno.ai/) through the [AceDataCloud API](https://platform.acedata.cloud/).
57
+
58
+ Generate AI music, lyrics, and manage audio projects directly from your terminal — no MCP client required.
59
+
60
+ ## Features
61
+
62
+ - **Music Generation** — Generate from prompts, custom lyrics, extend, cover, remaster, concat
63
+ - **Lyrics** — Generate lyrics, mashup, optimize style descriptions
64
+ - **Media Conversion** — Get MP4, WAV, MIDI, timing, extract vocals
65
+ - **Task Management** — Query tasks, batch query, wait with polling
66
+ - **Rich Output** — Beautiful terminal tables and panels via Rich
67
+ - **JSON Mode** — Machine-readable output with `--json` for piping
68
+ - **File Input** — Read lyrics from files with `@filename` syntax
69
+
70
+ ## Quick Start
71
+
72
+ ### 1. Get API Token
73
+
74
+ Get your API token from [AceDataCloud Platform](https://platform.acedata.cloud/):
75
+
76
+ 1. Sign up or log in
77
+ 2. Navigate to [Suno Audios API](https://platform.acedata.cloud/documents/4da95d9d-7722-4a72-857d-bf6be86036e9)
78
+ 3. Click "Acquire" to get your token
79
+
80
+ ### 2. Install
81
+
82
+ ```bash
83
+ # Install with pip
84
+ pip install suno-cli
85
+
86
+ # Or with uv (recommended)
87
+ uv pip install suno-cli
88
+
89
+ # Or from source
90
+ git clone https://github.com/AceDataCloud/SunoCli.git
91
+ cd SunoCli
92
+ pip install -e .
93
+ ```
94
+
95
+ ### 3. Configure
96
+
97
+ ```bash
98
+ # Set your API token
99
+ export ACEDATACLOUD_API_TOKEN=your_token_here
100
+
101
+ # Or use .env file
102
+ cp .env.example .env
103
+ # Edit .env with your token
104
+ ```
105
+
106
+ ### 4. Use
107
+
108
+ ```bash
109
+ # Generate music from a prompt
110
+ suno generate "A happy birthday song with acoustic guitar"
111
+
112
+ # Generate with custom lyrics
113
+ suno custom -l "[Verse]\nHello world\n[Chorus]\nLa la la" -t "Hello" -s "pop, upbeat"
114
+
115
+ # Read lyrics from a file
116
+ suno custom -l @lyrics.txt -t "My Song" -s "rock, powerful"
117
+
118
+ # Generate lyrics
119
+ suno lyrics "A love song about the ocean at sunset"
120
+
121
+ # Check task status
122
+ suno task <task-id>
123
+
124
+ # Wait for completion with polling
125
+ suno wait <task-id> --interval 5
126
+
127
+ # Get MP4 video
128
+ suno mp4 <audio-id>
129
+
130
+ # List available models
131
+ suno models
132
+ ```
133
+
134
+ ## Commands
135
+
136
+ ### Music Generation
137
+
138
+ | Command | Description |
139
+ |---------|-------------|
140
+ | `suno generate <prompt>` | Generate music from a text prompt (Inspiration Mode) |
141
+ | `suno custom` | Generate with custom lyrics, title, and style |
142
+ | `suno extend <audio_id>` | Extend an existing song from a timestamp |
143
+ | `suno cover <audio_id>` | Create a cover/remix version |
144
+ | `suno remaster <audio_id>` | Remaster a song to improve quality |
145
+ | `suno concat <audio_id>` | Merge extended segments into complete audio |
146
+
147
+ ### Lyrics
148
+
149
+ | Command | Description |
150
+ |---------|-------------|
151
+ | `suno lyrics <prompt>` | Generate song lyrics from a prompt |
152
+ | `suno mashup-lyrics` | Generate mashup lyrics from two sources |
153
+ | `suno optimize-style <prompt>` | Optimize a style description |
154
+
155
+ ### Media Conversion
156
+
157
+ | Command | Description |
158
+ |---------|-------------|
159
+ | `suno mp4 <audio_id>` | Get MP4 video version |
160
+ | `suno wav <audio_id>` | Get lossless WAV format |
161
+ | `suno midi <audio_id>` | Get MIDI data |
162
+ | `suno timing <audio_id>` | Get timing/subtitle data |
163
+ | `suno vocals <audio_id>` | Extract vocal track |
164
+
165
+ ### Task Management
166
+
167
+ | Command | Description |
168
+ |---------|-------------|
169
+ | `suno task <task_id>` | Query a single task status |
170
+ | `suno tasks <id1> <id2>...` | Query multiple tasks at once |
171
+ | `suno wait <task_id>` | Wait for task completion with polling |
172
+
173
+ ### Utilities
174
+
175
+ | Command | Description |
176
+ |---------|-------------|
177
+ | `suno persona <audio_id>` | Create a saved voice style |
178
+ | `suno upload <audio_url>` | Upload external audio for processing |
179
+ | `suno models` | List available Suno models |
180
+ | `suno actions` | List available API actions |
181
+ | `suno lyric-format` | Show lyrics formatting guide |
182
+ | `suno config` | Show current configuration |
183
+
184
+ ## Global Options
185
+
186
+ ```
187
+ --token TEXT API token (or set ACEDATACLOUD_API_TOKEN env var)
188
+ --version Show version
189
+ --help Show help message
190
+ ```
191
+
192
+ Most commands support:
193
+
194
+ ```
195
+ --json Output raw JSON (for piping/scripting)
196
+ --model TEXT Suno model version (default: chirp-v4-5)
197
+ ```
198
+
199
+ ## Scripting & Piping
200
+
201
+ The `--json` flag outputs machine-readable JSON suitable for piping:
202
+
203
+ ```bash
204
+ # Generate and extract task ID
205
+ TASK_ID=$(suno generate "rock song" --json | jq -r '.task_id')
206
+
207
+ # Wait for completion and get audio URL
208
+ suno wait $TASK_ID --json | jq -r '.data[0].audio_url'
209
+
210
+ # Batch generate from a file of prompts
211
+ while IFS= read -r prompt; do
212
+ suno generate "$prompt" --json >> results.jsonl
213
+ done < prompts.txt
214
+ ```
215
+
216
+ ## Available Models
217
+
218
+ | Model | Version | Max Duration | Notes |
219
+ |-------|---------|-------------|-------|
220
+ | `chirp-v5` | V5 | 8 min | Latest, best quality |
221
+ | `chirp-v4-5-plus` | V4.5+ | 8 min | Enhanced quality |
222
+ | `chirp-v4-5` | V4.5 | 4 min | Vocal gender control (default) |
223
+ | `chirp-v4` | V4 | 150s | Stable |
224
+ | `chirp-v3-5` | V3.5 | 120s | Fast |
225
+ | `chirp-v3-0` | V3 | 120s | Legacy |
226
+
227
+ ## Configuration
228
+
229
+ ### Environment Variables
230
+
231
+ | Variable | Description | Default |
232
+ |----------|-------------|---------|
233
+ | `ACEDATACLOUD_API_TOKEN` | API token from AceDataCloud | *Required* |
234
+ | `ACEDATACLOUD_API_BASE_URL` | API base URL | `https://api.acedata.cloud` |
235
+ | `SUNO_DEFAULT_MODEL` | Default model | `chirp-v4-5` |
236
+ | `SUNO_REQUEST_TIMEOUT` | Timeout in seconds | `1800` |
237
+
238
+ ## Development
239
+
240
+ ### Setup Development Environment
241
+
242
+ ```bash
243
+ # Clone repository
244
+ git clone https://github.com/AceDataCloud/SunoCli.git
245
+ cd SunoCli
246
+
247
+ # Create virtual environment
248
+ python -m venv .venv
249
+ source .venv/bin/activate # or `.venv\Scripts\activate` on Windows
250
+
251
+ # Install with dev dependencies
252
+ pip install -e ".[dev,test]"
253
+ ```
254
+
255
+ ### Run Tests
256
+
257
+ ```bash
258
+ # Run unit tests
259
+ pytest
260
+
261
+ # Run with coverage
262
+ pytest --cov=core --cov=commands
263
+
264
+ # Run integration tests (requires API token)
265
+ pytest tests/test_integration.py -m integration
266
+ ```
267
+
268
+ ### Code Quality
269
+
270
+ ```bash
271
+ # Format code
272
+ ruff format .
273
+
274
+ # Lint code
275
+ ruff check .
276
+
277
+ # Type check
278
+ mypy core commands
279
+ ```
280
+
281
+ ### Build & Publish
282
+
283
+ ```bash
284
+ # Install build dependencies
285
+ pip install -e ".[release]"
286
+
287
+ # Build package
288
+ python -m build
289
+
290
+ # Upload to PyPI
291
+ twine upload dist/*
292
+ ```
293
+
294
+ ## Docker
295
+
296
+ ```bash
297
+ # Pull the image
298
+ docker pull ghcr.io/acedatacloud/suno-cli:latest
299
+
300
+ # Run a command
301
+ docker run --rm -e ACEDATACLOUD_API_TOKEN=your_token \
302
+ ghcr.io/acedatacloud/suno-cli generate "A happy song"
303
+
304
+ # Or use docker-compose
305
+ docker compose run --rm suno-cli generate "A happy song"
306
+ ```
307
+
308
+ ## Project Structure
309
+
310
+ ```
311
+ SunoCli/
312
+ ├── core/ # Core modules
313
+ │ ├── client.py # HTTP client for Suno API
314
+ │ ├── config.py # Configuration management
315
+ │ ├── exceptions.py # Custom exceptions
316
+ │ └── output.py # Rich terminal formatting
317
+ ├── commands/ # CLI command groups
318
+ │ ├── generate.py # Music generation commands
319
+ │ ├── lyrics.py # Lyrics commands
320
+ │ ├── media.py # Media conversion commands
321
+ │ ├── persona.py # Persona & upload commands
322
+ │ ├── task.py # Task management commands
323
+ │ └── info.py # Info & utility commands
324
+ ├── tests/ # Test suite
325
+ ├── .env.example # Environment template
326
+ ├── main.py # CLI entry point
327
+ ├── pyproject.toml # Project configuration
328
+ └── README.md
329
+ ```
330
+
331
+ ## Suno CLI vs MCP Suno
332
+
333
+ | Feature | Suno CLI | MCP Suno |
334
+ |---------|----------|----------|
335
+ | Interface | Terminal commands | MCP protocol |
336
+ | Usage | Direct shell, scripts, CI/CD | Claude, VS Code, MCP clients |
337
+ | Output | Rich tables / JSON | Structured MCP responses |
338
+ | Automation | Shell scripts, piping | AI agent workflows |
339
+ | Install | `pip install suno-cli` | `pip install mcp-suno` |
340
+
341
+ Both tools use the same AceDataCloud API and share the same API token.
342
+
343
+ ## API Reference
344
+
345
+ This tool wraps the [AceDataCloud Suno API](https://platform.acedata.cloud/documents/4da95d9d-7722-4a72-857d-bf6be86036e9):
346
+
347
+ - [Suno Audios API](https://platform.acedata.cloud/documents/4da95d9d-7722-4a72-857d-bf6be86036e9) — Music generation
348
+ - [Suno Lyrics API](https://platform.acedata.cloud/documents/514d82dc-f7ab-4638-9f21-8b9275916b08) — Lyrics generation
349
+ - [Suno Tasks API](https://platform.acedata.cloud/documents/b0dd9823-0e01-4c75-af83-5a6e2e05bfed) — Task queries
350
+ - [Suno Persona API](https://platform.acedata.cloud/documents/78bb6c62-6ce0-490f-a7df-e89d80ec0583) — Persona management
351
+
352
+ ## Contributing
353
+
354
+ Contributions are welcome! Please:
355
+
356
+ 1. Fork the repository
357
+ 2. Create a feature branch (`git checkout -b feature/amazing`)
358
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
359
+ 4. Push to the branch (`git push origin feature/amazing`)
360
+ 5. Open a Pull Request
361
+
362
+ ## License
363
+
364
+ MIT License - see [LICENSE](LICENSE) for details.
365
+
366
+ ## Links
367
+
368
+ - [AceDataCloud Platform](https://platform.acedata.cloud/)
369
+ - [MCP Suno](https://github.com/AceDataCloud/MCPSuno) — MCP server version
370
+ - [Suno Official](https://suno.ai/)
371
+
372
+ ---
373
+
374
+ Made with ❤️ by [AceDataCloud](https://platform.acedata.cloud/)