Skip to content

Commit 029c805

Browse files
Release cli v0.8.7
Publish v0.8.7. Includes: - Add Suno audio action CLI commands - Expose PixVerse enable_audio in CLI contract help
1 parent 30d61e3 commit 029c805

5 files changed

Lines changed: 82 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## [v0.8.7](https://github.com/runapi-ai/cli/releases/tag/v0.8.7) - 2026-08-06
4+
5+
### Added
6+
- Add CLI commands for stitching audio, remastering audio, and adding samples from a selected time range.
7+
8+
### Fixed
9+
- Show the optional PixVerse enable_audio field for text-to-video and image-to-video requests.
10+
11+
312
## [v0.8.6](https://github.com/runapi-ai/cli/releases/tag/v0.8.6) - 2026-08-04
413

514
### Added

cmd/runapi/cli.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import (
3333
"github.com/runapi-ai/grok-imagine-sdk/go/grokimagine"
3434
"github.com/runapi-ai/hailuo-sdk/go/hailuo"
3535
"github.com/runapi-ai/happyhorse-sdk/go/happyhorse"
36-
"github.com/runapi-ai/pixverse-sdk/go/pixverse"
3736
"github.com/runapi-ai/ideogram-v3-sdk/go/ideogramv3"
3837
"github.com/runapi-ai/imagen-4-sdk/go/imagen4"
3938
"github.com/runapi-ai/infinitetalk-sdk/go/infinitetalk"
@@ -43,6 +42,7 @@ import (
4342
"github.com/runapi-ai/nano-banana-sdk/go/nanobanana"
4443
"github.com/runapi-ai/omnihuman-sdk/go/omnihuman"
4544
"github.com/runapi-ai/openai-tts-sdk/go/openaitts"
45+
"github.com/runapi-ai/pixverse-sdk/go/pixverse"
4646
"github.com/runapi-ai/producer-sdk/go/producer"
4747
"github.com/runapi-ai/qwen-2-sdk/go/qwen2"
4848
"github.com/runapi-ai/qwen-image-sdk/go/qwenimage"
@@ -1306,6 +1306,7 @@ func describeAction(spec actionSpec) string {
13061306

13071307
var allSpecs = []actionSpec{
13081308
newSunoTextToMusicSpec(), newSunoExtendMusicSpec(), newSunoGenerateArtworkSpec(), newSunoCoverAudioSpec(),
1309+
newSunoStitchAudioSpec(), newSunoRemasterAudioSpec(), newSunoAddSamplesSpec(),
13091310
newSunoAddInstrumentalSpec(), newSunoAddVocalsSpec(), newSunoSeparateAudioStemsSpec(), newSunoGenerateMidiSpec(), newSunoConvertAudioSpec(),
13101311
newSunoVisualizeMusicSpec(), newSunoGenerateLyricsSpec(), newSunoBlendLyricsSpec(), newSunoGetTimestampedLyricsSpec(), newSunoReplaceSectionSpec(), newSunoCreateMashupSpec(),
13111312
newSunoTextToSoundSpec(), newSunoVoiceToValidationPhraseSpec(), newSunoRegenerateValidationPhraseSpec(), newSunoGenerateVoiceSpec(), newSunoCheckVoiceSpec(),
@@ -1373,6 +1374,36 @@ func newSunoExtendMusicSpec() actionSpec {
13731374
}}
13741375
}
13751376

1377+
func newSunoStitchAudioSpec() actionSpec {
1378+
return actionSpec{service: "suno", action: "stitch-audio", isAsync: true, inputFields: inputFieldsFor[suno.StitchAudioParams](), decode: decodeInto[suno.StitchAudioParams], create: func(ctx context.Context, client *runapi.Client, params any, opts []option.RequestOption) (*core.TaskCreateResponse, error) {
1379+
return client.Suno.StitchAudio.Create(ctx, params.(suno.StitchAudioParams), opts...)
1380+
}, run: func(ctx context.Context, client *runapi.Client, params any, opts []option.RequestOption) (any, error) {
1381+
return client.Suno.StitchAudio.Run(ctx, params.(suno.StitchAudioParams), opts...)
1382+
}, get: func(ctx context.Context, client *runapi.Client, id string, opts []option.RequestOption) (core.TaskResponse, error) {
1383+
return client.Suno.StitchAudio.Get(ctx, id, opts...)
1384+
}}
1385+
}
1386+
1387+
func newSunoRemasterAudioSpec() actionSpec {
1388+
return actionSpec{service: "suno", action: "remaster-audio", isAsync: true, inputFields: inputFieldsFor[suno.RemasterAudioParams](), decode: decodeInto[suno.RemasterAudioParams], create: func(ctx context.Context, client *runapi.Client, params any, opts []option.RequestOption) (*core.TaskCreateResponse, error) {
1389+
return client.Suno.RemasterAudio.Create(ctx, params.(suno.RemasterAudioParams), opts...)
1390+
}, run: func(ctx context.Context, client *runapi.Client, params any, opts []option.RequestOption) (any, error) {
1391+
return client.Suno.RemasterAudio.Run(ctx, params.(suno.RemasterAudioParams), opts...)
1392+
}, get: func(ctx context.Context, client *runapi.Client, id string, opts []option.RequestOption) (core.TaskResponse, error) {
1393+
return client.Suno.RemasterAudio.Get(ctx, id, opts...)
1394+
}}
1395+
}
1396+
1397+
func newSunoAddSamplesSpec() actionSpec {
1398+
return actionSpec{service: "suno", action: "add-samples", isAsync: true, inputFields: inputFieldsFor[suno.AddSamplesParams](), decode: decodeInto[suno.AddSamplesParams], create: func(ctx context.Context, client *runapi.Client, params any, opts []option.RequestOption) (*core.TaskCreateResponse, error) {
1399+
return client.Suno.AddSamples.Create(ctx, params.(suno.AddSamplesParams), opts...)
1400+
}, run: func(ctx context.Context, client *runapi.Client, params any, opts []option.RequestOption) (any, error) {
1401+
return client.Suno.AddSamples.Run(ctx, params.(suno.AddSamplesParams), opts...)
1402+
}, get: func(ctx context.Context, client *runapi.Client, id string, opts []option.RequestOption) (core.TaskResponse, error) {
1403+
return client.Suno.AddSamples.Get(ctx, id, opts...)
1404+
}}
1405+
}
1406+
13761407
func newSunoGenerateArtworkSpec() actionSpec {
13771408
return actionSpec{service: "suno", action: "generate-artwork", isAsync: true, inputFields: inputFieldsFor[suno.GenerateArtworkParams](), decode: decodeInto[suno.GenerateArtworkParams], create: func(ctx context.Context, client *runapi.Client, params any, opts []option.RequestOption) (*core.TaskCreateResponse, error) {
13781409
return client.Suno.GenerateArtwork.Create(ctx, params.(suno.GenerateArtworkParams), opts...)

cmd/runapi/contract_gen.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,7 @@ var generatedContract = map[string]generatedContractAction{
689689
Models: []string{"pixverse-v6"},
690690
FieldsByModel: map[string]map[string]generatedContractField{
691691
"pixverse-v6": {
692+
"enable_audio": {Enum: []any{true, false}},
692693
"output_resolution": {Enum: []any{"360p", "540p", "720p", "1080p"}},
693694
},
694695
},
@@ -698,6 +699,7 @@ var generatedContract = map[string]generatedContractAction{
698699
FieldsByModel: map[string]map[string]generatedContractField{
699700
"pixverse-v6": {
700701
"aspect_ratio": {Enum: []any{"16:9", "4:3", "1:1", "3:4", "9:16", "2:3", "3:2", "21:9"}},
702+
"enable_audio": {Enum: []any{true, false}},
701703
"output_resolution": {Enum: []any{"360p", "540p", "720p", "1080p"}},
702704
},
703705
},
@@ -927,6 +929,16 @@ var generatedContract = map[string]generatedContractAction{
927929
},
928930
},
929931
},
932+
"suno/add-samples": {
933+
Models: []string{"suno-v4", "suno-v4.5", "suno-v4.5-plus", "suno-v5", "suno-v5.5"},
934+
FieldsByModel: map[string]map[string]generatedContractField{
935+
"suno-v4": {},
936+
"suno-v4.5": {},
937+
"suno-v4.5-plus": {},
938+
"suno-v5": {},
939+
"suno-v5.5": {},
940+
},
941+
},
930942
"suno/add-vocals": {
931943
Models: []string{"suno-v4.5-plus", "suno-v5"},
932944
FieldsByModel: map[string]map[string]generatedContractField{
@@ -1117,6 +1129,16 @@ var generatedContract = map[string]generatedContractAction{
11171129
"_": {},
11181130
},
11191131
},
1132+
"suno/remaster-audio": {
1133+
Models: []string{"suno-v4", "suno-v4.5", "suno-v4.5-plus", "suno-v5", "suno-v5.5"},
1134+
FieldsByModel: map[string]map[string]generatedContractField{
1135+
"suno-v4": {},
1136+
"suno-v4.5": {},
1137+
"suno-v4.5-plus": {},
1138+
"suno-v5": {},
1139+
"suno-v5.5": {},
1140+
},
1141+
},
11201142
"suno/replace-section": {
11211143
Models: []string{},
11221144
FieldsByModel: map[string]map[string]generatedContractField{
@@ -1134,6 +1156,16 @@ var generatedContract = map[string]generatedContractAction{
11341156
},
11351157
},
11361158
},
1159+
"suno/stitch-audio": {
1160+
Models: []string{"suno-v4", "suno-v4.5", "suno-v4.5-plus", "suno-v5", "suno-v5.5"},
1161+
FieldsByModel: map[string]map[string]generatedContractField{
1162+
"suno-v4": {},
1163+
"suno-v4.5": {},
1164+
"suno-v4.5-plus": {},
1165+
"suno-v5": {},
1166+
"suno-v5.5": {},
1167+
},
1168+
},
11371169
"suno/text-to-music": {
11381170
Models: []string{"suno-v4", "suno-v4.5", "suno-v4.5-all", "suno-v4.5-plus", "suno-v5", "suno-v5.5"},
11391171
FieldsByModel: map[string]map[string]generatedContractField{

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.26
55
require (
66
github.com/BurntSushi/toml v1.6.0
77
github.com/manifoldco/promptui v0.9.0
8-
github.com/runapi-ai/core-sdk/go v0.2.17
8+
github.com/runapi-ai/core-sdk/go v0.2.18
99
github.com/runapi-ai/elevenlabs-sdk/go v0.2.10
1010
github.com/runapi-ai/fish-audio-sdk/go v0.1.3
1111
github.com/runapi-ai/flux-2-sdk/go v0.3.0
@@ -28,7 +28,7 @@ require (
2828
github.com/runapi-ai/nano-banana-sdk/go v0.2.12
2929
github.com/runapi-ai/omnihuman-sdk/go v0.2.10
3030
github.com/runapi-ai/openai-tts-sdk/go v0.1.2
31-
github.com/runapi-ai/pixverse-sdk/go v0.1.1
31+
github.com/runapi-ai/pixverse-sdk/go v0.1.2
3232
github.com/runapi-ai/producer-sdk/go v0.2.1
3333
github.com/runapi-ai/qwen-2-sdk/go v0.2.9
3434
github.com/runapi-ai/qwen-image-sdk/go v0.1.1
@@ -37,7 +37,7 @@ require (
3737
github.com/runapi-ai/runway-sdk/go v0.2.9
3838
github.com/runapi-ai/seedance-sdk/go v0.2.13
3939
github.com/runapi-ai/seedream-sdk/go v0.2.11
40-
github.com/runapi-ai/suno-sdk/go v0.3.2
40+
github.com/runapi-ai/suno-sdk/go v0.3.3
4141
github.com/runapi-ai/topaz-sdk/go v0.2.9
4242
github.com/runapi-ai/veo-3.1-sdk/go v0.2.11
4343
github.com/runapi-ai/volcengine-lip-sync-sdk/go v0.2.10

go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
1111
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
1212
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
1313
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
14-
github.com/runapi-ai/core-sdk/go v0.2.17 h1:m7oNLuIQf9/9zhScdhYASaaunU0qoyC0Fenn2wWc2Mc=
15-
github.com/runapi-ai/core-sdk/go v0.2.17/go.mod h1:e5uC8RF6BNkAj1WkOi+nD71mZL+cir+Ia97XUQj+5N0=
14+
github.com/runapi-ai/core-sdk/go v0.2.18 h1:OL7MXLnQBExWy5U7WbbWVUdBLNYqmvcQKkkT3PMyaUs=
15+
github.com/runapi-ai/core-sdk/go v0.2.18/go.mod h1:e5uC8RF6BNkAj1WkOi+nD71mZL+cir+Ia97XUQj+5N0=
1616
github.com/runapi-ai/elevenlabs-sdk/go v0.2.10 h1:3ycwcMXVbYgCspLQArrq7x973UshNVDwv0M+FZUmkqE=
1717
github.com/runapi-ai/elevenlabs-sdk/go v0.2.10/go.mod h1:scpxwHRCh0voEwqs0EVDdnz932HjG/+oPjyFPqjX8fY=
1818
github.com/runapi-ai/fish-audio-sdk/go v0.1.3 h1:E2GfvVBo9FqmSTatsgQRSHZPxioHUNRo5FCzFGP7+Kc=
@@ -57,8 +57,8 @@ github.com/runapi-ai/omnihuman-sdk/go v0.2.10 h1:H97qJO1A278s4jY2GnqcKptIZjivDyb
5757
github.com/runapi-ai/omnihuman-sdk/go v0.2.10/go.mod h1:fbVzVEemqBw4jhLwPg6UJN1mo1/ApxvjcvbkNrkh57s=
5858
github.com/runapi-ai/openai-tts-sdk/go v0.1.2 h1:U0cwZNg4/CabsRx4EZVW+mMyrIHGTtcuxrxiq/M73oM=
5959
github.com/runapi-ai/openai-tts-sdk/go v0.1.2/go.mod h1:QxRizAGVAgMVV4ZHKRYIrUV1wAhOj7wbuvx9hUE0YOA=
60-
github.com/runapi-ai/pixverse-sdk/go v0.1.1 h1:1aO5eSh+rrAvgkNl+dT9eYP/SvAQt4o2zMaHI5fncco=
61-
github.com/runapi-ai/pixverse-sdk/go v0.1.1/go.mod h1:wlLVY4KKNgUSJ0Mizkxakb513JqsGRRRWhOSMgXYXVU=
60+
github.com/runapi-ai/pixverse-sdk/go v0.1.2 h1:i/bNnmnhQdTpG10C+F4tKjfJVRdbDoloBXyImSNwZ/0=
61+
github.com/runapi-ai/pixverse-sdk/go v0.1.2/go.mod h1:ZA7ceOBjWKfgYpmryXBVLL0bURn5ub/6HQ9nQE1b3t0=
6262
github.com/runapi-ai/producer-sdk/go v0.2.1 h1:tSE9YVj0tAjFZ9U2mi/TjchVSHTYDwMz/ai4UYrKjkg=
6363
github.com/runapi-ai/producer-sdk/go v0.2.1/go.mod h1:yKZhNZGB1FxjzTKqZUzaWXJ/myn1SA9JV3GZPnMBIyw=
6464
github.com/runapi-ai/qwen-2-sdk/go v0.2.9 h1:NyMJMSZ56S6iPzoOP1t9GvAP3BxM6II001tRZ9PYkhg=
@@ -75,8 +75,8 @@ github.com/runapi-ai/seedance-sdk/go v0.2.13 h1:E+CNrTt/zxHXlg4OWKhUSJ5BMehRGbH1
7575
github.com/runapi-ai/seedance-sdk/go v0.2.13/go.mod h1:KJsiJvHYeJj869+R4MBPaDgceRvm3RfvbQzJsDgOjmY=
7676
github.com/runapi-ai/seedream-sdk/go v0.2.11 h1:AObU6ztROFX1OKrTrBVwtqSUXfPzqBcP1vNF+ozaH3g=
7777
github.com/runapi-ai/seedream-sdk/go v0.2.11/go.mod h1:mx+eXKkLhwWRy+EJVOym/Vv8WxjuGktujf6sbRt34uw=
78-
github.com/runapi-ai/suno-sdk/go v0.3.2 h1:vtuq8sZNMubwlBDqTod/XDhIjj0a5kvPzyVq6Elr2TA=
79-
github.com/runapi-ai/suno-sdk/go v0.3.2/go.mod h1:jeNcHeDgpuXOSHKlgR56D2tDMviLukzMT4W9ZZ4rJz4=
78+
github.com/runapi-ai/suno-sdk/go v0.3.3 h1:9cF56Tne5q9Pbh3mcJvzfs3G6TCN3eo6VnqfOgIU940=
79+
github.com/runapi-ai/suno-sdk/go v0.3.3/go.mod h1:X54DYsjVmxNnfc+CDp9HZtvLAvcdT8oTWVH1o+RUPsI=
8080
github.com/runapi-ai/topaz-sdk/go v0.2.9 h1:Ie6ulfVwFM5RpVSUD9EYudukMzifvkuZo7jxasFAnYc=
8181
github.com/runapi-ai/topaz-sdk/go v0.2.9/go.mod h1:iWAqtMv3T4K04q7RaeMvwc9WcL9FJi4U+y3+Qv+Zp1o=
8282
github.com/runapi-ai/veo-3.1-sdk/go v0.2.11 h1:vfK7gGD//wWwd8U+snI8coo/u4G7qNQBpek+PCVUqL4=

0 commit comments

Comments
 (0)