runapi-suno 0.3.1 → 0.3.3
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.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/lib/runapi/suno/client.rb +4 -0
- data/lib/runapi/suno/contract_gen.rb +313 -12
- data/lib/runapi/suno/resources/add_samples.rb +18 -0
- data/lib/runapi/suno/resources/audio_action.rb +26 -0
- data/lib/runapi/suno/resources/remaster_audio.rb +11 -0
- data/lib/runapi/suno/resources/stitch_audio.rb +11 -0
- data/lib/runapi/suno.rb +4 -0
- metadata +8 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0dd793483d6ace66eaf84f7f4e28a88642782e620169c4c7a442a71f36e6f9a4
|
|
4
|
+
data.tar.gz: a50038bc7efa5ff36f1f490eb1630c0d094dbce6ad13469ed765451aa710c2d1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 460bb0e80a4d86ec69eab534b8d28e9a257186f860c2cc92afb5a910a34082bbdf408fc5e07829a5bc6c2334cbe4daf9a3d7f334937a2ea12d044f6f40542f0d
|
|
7
|
+
data.tar.gz: dba87b509ef5f8a088176775925c720852c277c18d76009be43a490de2bd0ece54611381d462b3697cb6db298d1919f1cba54c3f0be24e20ce65b8ec313986ba
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The Suno Ruby SDK is the language-specific package for Suno on RunAPI. Use this package for song generation, lyrics, vocals, extension, and audio transformation workflows when your application needs request bodies, task status lookup, and consistent RunAPI errors in Ruby.
|
|
4
4
|
|
|
5
|
-
This README is the Ruby package guide inside the public `suno-sdk` repository. For the repository overview, start at `../README.md`; for model details, use https://runapi.ai/models/suno; for API reference, use https://runapi.ai/docs
|
|
5
|
+
This README is the Ruby package guide inside the public `suno-sdk` repository. For the repository overview, start at `../README.md`; for model details, use https://runapi.ai/models/suno; for API reference, use https://runapi.ai/docs/api/suno/text-to-music; for SDK docs, use https://runapi.ai/docs/resources/sdks.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -17,7 +17,7 @@ require "runapi/suno"
|
|
|
17
17
|
|
|
18
18
|
client = RunApi::Suno::Client.new
|
|
19
19
|
task = client.text_to_music.create(
|
|
20
|
-
# Pass the Suno JSON request body from https://runapi.ai/docs
|
|
20
|
+
# Pass the Suno JSON request body from https://runapi.ai/docs/api/suno/text-to-music.
|
|
21
21
|
)
|
|
22
22
|
status = client.text_to_music.get(task.id)
|
|
23
23
|
```
|
|
@@ -33,8 +33,8 @@ Use Ruby keyword arguments and the `RunApi::Suno` error classes when building mu
|
|
|
33
33
|
## Links
|
|
34
34
|
|
|
35
35
|
- Model page: https://runapi.ai/models/suno
|
|
36
|
-
- SDK docs: https://runapi.ai/docs
|
|
37
|
-
- Product docs: https://runapi.ai/docs
|
|
36
|
+
- SDK docs: https://runapi.ai/docs/resources/sdks
|
|
37
|
+
- Product docs: https://runapi.ai/docs/api/suno/text-to-music
|
|
38
38
|
- Pricing and rate limits: https://runapi.ai/models/suno/v4
|
|
39
39
|
- Provider comparison: https://runapi.ai/providers/suno
|
|
40
40
|
- Full catalog: https://runapi.ai/models
|
data/lib/runapi/suno/client.rb
CHANGED
|
@@ -16,6 +16,7 @@ module RunApi
|
|
|
16
16
|
attr_reader :text_to_music
|
|
17
17
|
# @return [Resources::ExtendMusic] continues an existing track from a specified timestamp
|
|
18
18
|
attr_reader :extend_music
|
|
19
|
+
attr_reader :stitch_audio, :remaster_audio, :add_samples
|
|
19
20
|
# @return [Resources::GenerateArtwork] creates cover artwork for an existing music task
|
|
20
21
|
attr_reader :generate_artwork
|
|
21
22
|
# @return [Resources::CoverAudio] re-records vocals over an uploaded audio file with a new style or voice
|
|
@@ -62,6 +63,9 @@ module RunApi
|
|
|
62
63
|
|
|
63
64
|
@text_to_music = Resources::TextToMusic.new(http)
|
|
64
65
|
@extend_music = Resources::ExtendMusic.new(http)
|
|
66
|
+
@stitch_audio = Resources::StitchAudio.new(http)
|
|
67
|
+
@remaster_audio = Resources::RemasterAudio.new(http)
|
|
68
|
+
@add_samples = Resources::AddSamples.new(http)
|
|
65
69
|
@generate_artwork = Resources::GenerateArtwork.new(http)
|
|
66
70
|
@cover_audio = Resources::CoverAudio.new(http)
|
|
67
71
|
@add_instrumental = Resources::AddInstrumental.new(http)
|
|
@@ -10,6 +10,15 @@ module RunApi
|
|
|
10
10
|
"model" => {
|
|
11
11
|
"required" => true
|
|
12
12
|
},
|
|
13
|
+
"negative_tags" => {
|
|
14
|
+
"required" => true
|
|
15
|
+
},
|
|
16
|
+
"tags" => {
|
|
17
|
+
"required" => true
|
|
18
|
+
},
|
|
19
|
+
"title" => {
|
|
20
|
+
"required" => true
|
|
21
|
+
},
|
|
13
22
|
"upload_url" => {
|
|
14
23
|
"required" => true
|
|
15
24
|
},
|
|
@@ -21,6 +30,15 @@ module RunApi
|
|
|
21
30
|
"model" => {
|
|
22
31
|
"required" => true
|
|
23
32
|
},
|
|
33
|
+
"negative_tags" => {
|
|
34
|
+
"required" => true
|
|
35
|
+
},
|
|
36
|
+
"tags" => {
|
|
37
|
+
"required" => true
|
|
38
|
+
},
|
|
39
|
+
"title" => {
|
|
40
|
+
"required" => true
|
|
41
|
+
},
|
|
24
42
|
"upload_url" => {
|
|
25
43
|
"required" => true
|
|
26
44
|
},
|
|
@@ -32,6 +50,15 @@ module RunApi
|
|
|
32
50
|
"model" => {
|
|
33
51
|
"required" => true
|
|
34
52
|
},
|
|
53
|
+
"negative_tags" => {
|
|
54
|
+
"required" => true
|
|
55
|
+
},
|
|
56
|
+
"tags" => {
|
|
57
|
+
"required" => true
|
|
58
|
+
},
|
|
59
|
+
"title" => {
|
|
60
|
+
"required" => true
|
|
61
|
+
},
|
|
35
62
|
"upload_url" => {
|
|
36
63
|
"required" => true
|
|
37
64
|
},
|
|
@@ -41,6 +68,91 @@ module RunApi
|
|
|
41
68
|
}
|
|
42
69
|
}
|
|
43
70
|
},
|
|
71
|
+
"add-samples" => {
|
|
72
|
+
"models" => ["suno-v4", "suno-v4.5", "suno-v4.5-plus", "suno-v5", "suno-v5.5"],
|
|
73
|
+
"fields_by_model" => {
|
|
74
|
+
"suno-v4" => {
|
|
75
|
+
"audio_url" => {
|
|
76
|
+
"required" => true
|
|
77
|
+
},
|
|
78
|
+
"end_seconds" => {
|
|
79
|
+
"required" => true,
|
|
80
|
+
"min" => 0
|
|
81
|
+
},
|
|
82
|
+
"model" => {
|
|
83
|
+
"required" => true
|
|
84
|
+
},
|
|
85
|
+
"start_seconds" => {
|
|
86
|
+
"required" => true,
|
|
87
|
+
"min" => 0
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"suno-v4.5" => {
|
|
91
|
+
"audio_url" => {
|
|
92
|
+
"required" => true
|
|
93
|
+
},
|
|
94
|
+
"end_seconds" => {
|
|
95
|
+
"required" => true,
|
|
96
|
+
"min" => 0
|
|
97
|
+
},
|
|
98
|
+
"model" => {
|
|
99
|
+
"required" => true
|
|
100
|
+
},
|
|
101
|
+
"start_seconds" => {
|
|
102
|
+
"required" => true,
|
|
103
|
+
"min" => 0
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"suno-v4.5-plus" => {
|
|
107
|
+
"audio_url" => {
|
|
108
|
+
"required" => true
|
|
109
|
+
},
|
|
110
|
+
"end_seconds" => {
|
|
111
|
+
"required" => true,
|
|
112
|
+
"min" => 0
|
|
113
|
+
},
|
|
114
|
+
"model" => {
|
|
115
|
+
"required" => true
|
|
116
|
+
},
|
|
117
|
+
"start_seconds" => {
|
|
118
|
+
"required" => true,
|
|
119
|
+
"min" => 0
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"suno-v5" => {
|
|
123
|
+
"audio_url" => {
|
|
124
|
+
"required" => true
|
|
125
|
+
},
|
|
126
|
+
"end_seconds" => {
|
|
127
|
+
"required" => true,
|
|
128
|
+
"min" => 0
|
|
129
|
+
},
|
|
130
|
+
"model" => {
|
|
131
|
+
"required" => true
|
|
132
|
+
},
|
|
133
|
+
"start_seconds" => {
|
|
134
|
+
"required" => true,
|
|
135
|
+
"min" => 0
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"suno-v5.5" => {
|
|
139
|
+
"audio_url" => {
|
|
140
|
+
"required" => true
|
|
141
|
+
},
|
|
142
|
+
"end_seconds" => {
|
|
143
|
+
"required" => true,
|
|
144
|
+
"min" => 0
|
|
145
|
+
},
|
|
146
|
+
"model" => {
|
|
147
|
+
"required" => true
|
|
148
|
+
},
|
|
149
|
+
"start_seconds" => {
|
|
150
|
+
"required" => true,
|
|
151
|
+
"min" => 0
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
},
|
|
44
156
|
"add-vocals" => {
|
|
45
157
|
"models" => ["suno-v4.5-plus", "suno-v5"],
|
|
46
158
|
"fields_by_model" => {
|
|
@@ -51,6 +163,15 @@ module RunApi
|
|
|
51
163
|
"model" => {
|
|
52
164
|
"required" => true
|
|
53
165
|
},
|
|
166
|
+
"negative_tags" => {
|
|
167
|
+
"required" => true
|
|
168
|
+
},
|
|
169
|
+
"style" => {
|
|
170
|
+
"required" => true
|
|
171
|
+
},
|
|
172
|
+
"title" => {
|
|
173
|
+
"required" => true
|
|
174
|
+
},
|
|
54
175
|
"upload_url" => {
|
|
55
176
|
"required" => true
|
|
56
177
|
},
|
|
@@ -65,6 +186,15 @@ module RunApi
|
|
|
65
186
|
"model" => {
|
|
66
187
|
"required" => true
|
|
67
188
|
},
|
|
189
|
+
"negative_tags" => {
|
|
190
|
+
"required" => true
|
|
191
|
+
},
|
|
192
|
+
"style" => {
|
|
193
|
+
"required" => true
|
|
194
|
+
},
|
|
195
|
+
"title" => {
|
|
196
|
+
"required" => true
|
|
197
|
+
},
|
|
68
198
|
"upload_url" => {
|
|
69
199
|
"required" => true
|
|
70
200
|
},
|
|
@@ -90,7 +220,11 @@ module RunApi
|
|
|
90
220
|
"boost-style" => {
|
|
91
221
|
"models" => [],
|
|
92
222
|
"fields_by_model" => {
|
|
93
|
-
"_" => {
|
|
223
|
+
"_" => {
|
|
224
|
+
"description" => {
|
|
225
|
+
"required" => true
|
|
226
|
+
}
|
|
227
|
+
}
|
|
94
228
|
}
|
|
95
229
|
},
|
|
96
230
|
"check-voice" => {
|
|
@@ -106,7 +240,14 @@ module RunApi
|
|
|
106
240
|
"convert-audio" => {
|
|
107
241
|
"models" => [],
|
|
108
242
|
"fields_by_model" => {
|
|
109
|
-
"_" => {
|
|
243
|
+
"_" => {
|
|
244
|
+
"audio_id" => {
|
|
245
|
+
"required" => true
|
|
246
|
+
},
|
|
247
|
+
"task_id" => {
|
|
248
|
+
"required" => true
|
|
249
|
+
}
|
|
250
|
+
}
|
|
110
251
|
}
|
|
111
252
|
},
|
|
112
253
|
"cover-audio" => {
|
|
@@ -393,7 +534,8 @@ module RunApi
|
|
|
393
534
|
"required" => true
|
|
394
535
|
},
|
|
395
536
|
"parameter_mode" => {
|
|
396
|
-
"enum" => ["source", "custom"]
|
|
537
|
+
"enum" => ["source", "custom"],
|
|
538
|
+
"required" => true
|
|
397
539
|
},
|
|
398
540
|
"persona_type" => {
|
|
399
541
|
"enum" => ["style", "voice"]
|
|
@@ -407,7 +549,8 @@ module RunApi
|
|
|
407
549
|
"required" => true
|
|
408
550
|
},
|
|
409
551
|
"parameter_mode" => {
|
|
410
|
-
"enum" => ["source", "custom"]
|
|
552
|
+
"enum" => ["source", "custom"],
|
|
553
|
+
"required" => true
|
|
411
554
|
},
|
|
412
555
|
"persona_type" => {
|
|
413
556
|
"enum" => ["style", "voice"]
|
|
@@ -421,7 +564,8 @@ module RunApi
|
|
|
421
564
|
"required" => true
|
|
422
565
|
},
|
|
423
566
|
"parameter_mode" => {
|
|
424
|
-
"enum" => ["source", "custom"]
|
|
567
|
+
"enum" => ["source", "custom"],
|
|
568
|
+
"required" => true
|
|
425
569
|
},
|
|
426
570
|
"persona_type" => {
|
|
427
571
|
"enum" => ["style", "voice"]
|
|
@@ -435,7 +579,8 @@ module RunApi
|
|
|
435
579
|
"required" => true
|
|
436
580
|
},
|
|
437
581
|
"parameter_mode" => {
|
|
438
|
-
"enum" => ["source", "custom"]
|
|
582
|
+
"enum" => ["source", "custom"],
|
|
583
|
+
"required" => true
|
|
439
584
|
},
|
|
440
585
|
"persona_type" => {
|
|
441
586
|
"enum" => ["style", "voice"]
|
|
@@ -449,7 +594,8 @@ module RunApi
|
|
|
449
594
|
"required" => true
|
|
450
595
|
},
|
|
451
596
|
"parameter_mode" => {
|
|
452
|
-
"enum" => ["source", "custom"]
|
|
597
|
+
"enum" => ["source", "custom"],
|
|
598
|
+
"required" => true
|
|
453
599
|
},
|
|
454
600
|
"persona_type" => {
|
|
455
601
|
"enum" => ["style", "voice"]
|
|
@@ -463,7 +609,8 @@ module RunApi
|
|
|
463
609
|
"required" => true
|
|
464
610
|
},
|
|
465
611
|
"parameter_mode" => {
|
|
466
|
-
"enum" => ["source", "custom"]
|
|
612
|
+
"enum" => ["source", "custom"],
|
|
613
|
+
"required" => true
|
|
467
614
|
},
|
|
468
615
|
"persona_type" => {
|
|
469
616
|
"enum" => ["style", "voice"]
|
|
@@ -497,13 +644,30 @@ module RunApi
|
|
|
497
644
|
"generate-midi" => {
|
|
498
645
|
"models" => [],
|
|
499
646
|
"fields_by_model" => {
|
|
500
|
-
"_" => {
|
|
647
|
+
"_" => {
|
|
648
|
+
"task_id" => {
|
|
649
|
+
"required" => true
|
|
650
|
+
}
|
|
651
|
+
}
|
|
501
652
|
}
|
|
502
653
|
},
|
|
503
654
|
"generate-persona" => {
|
|
504
655
|
"models" => [],
|
|
505
656
|
"fields_by_model" => {
|
|
506
|
-
"_" => {
|
|
657
|
+
"_" => {
|
|
658
|
+
"audio_id" => {
|
|
659
|
+
"required" => true
|
|
660
|
+
},
|
|
661
|
+
"description" => {
|
|
662
|
+
"required" => true
|
|
663
|
+
},
|
|
664
|
+
"name" => {
|
|
665
|
+
"required" => true
|
|
666
|
+
},
|
|
667
|
+
"task_id" => {
|
|
668
|
+
"required" => true
|
|
669
|
+
}
|
|
670
|
+
}
|
|
507
671
|
}
|
|
508
672
|
},
|
|
509
673
|
"generate-voice" => {
|
|
@@ -525,7 +689,14 @@ module RunApi
|
|
|
525
689
|
"get-timestamped-lyrics" => {
|
|
526
690
|
"models" => [],
|
|
527
691
|
"fields_by_model" => {
|
|
528
|
-
"_" => {
|
|
692
|
+
"_" => {
|
|
693
|
+
"audio_id" => {
|
|
694
|
+
"required" => true
|
|
695
|
+
},
|
|
696
|
+
"task_id" => {
|
|
697
|
+
"required" => true
|
|
698
|
+
}
|
|
699
|
+
}
|
|
529
700
|
}
|
|
530
701
|
},
|
|
531
702
|
"regenerate-validation-phrase" => {
|
|
@@ -538,6 +709,66 @@ module RunApi
|
|
|
538
709
|
}
|
|
539
710
|
}
|
|
540
711
|
},
|
|
712
|
+
"remaster-audio" => {
|
|
713
|
+
"models" => ["suno-v4", "suno-v4.5", "suno-v4.5-plus", "suno-v5", "suno-v5.5"],
|
|
714
|
+
"fields_by_model" => {
|
|
715
|
+
"suno-v4" => {
|
|
716
|
+
"audio_id" => {
|
|
717
|
+
"required" => true
|
|
718
|
+
},
|
|
719
|
+
"model" => {
|
|
720
|
+
"required" => true
|
|
721
|
+
},
|
|
722
|
+
"source_task_id" => {
|
|
723
|
+
"required" => true
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
"suno-v4.5" => {
|
|
727
|
+
"audio_id" => {
|
|
728
|
+
"required" => true
|
|
729
|
+
},
|
|
730
|
+
"model" => {
|
|
731
|
+
"required" => true
|
|
732
|
+
},
|
|
733
|
+
"source_task_id" => {
|
|
734
|
+
"required" => true
|
|
735
|
+
}
|
|
736
|
+
},
|
|
737
|
+
"suno-v4.5-plus" => {
|
|
738
|
+
"audio_id" => {
|
|
739
|
+
"required" => true
|
|
740
|
+
},
|
|
741
|
+
"model" => {
|
|
742
|
+
"required" => true
|
|
743
|
+
},
|
|
744
|
+
"source_task_id" => {
|
|
745
|
+
"required" => true
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
"suno-v5" => {
|
|
749
|
+
"audio_id" => {
|
|
750
|
+
"required" => true
|
|
751
|
+
},
|
|
752
|
+
"model" => {
|
|
753
|
+
"required" => true
|
|
754
|
+
},
|
|
755
|
+
"source_task_id" => {
|
|
756
|
+
"required" => true
|
|
757
|
+
}
|
|
758
|
+
},
|
|
759
|
+
"suno-v5.5" => {
|
|
760
|
+
"audio_id" => {
|
|
761
|
+
"required" => true
|
|
762
|
+
},
|
|
763
|
+
"model" => {
|
|
764
|
+
"required" => true
|
|
765
|
+
},
|
|
766
|
+
"source_task_id" => {
|
|
767
|
+
"required" => true
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
},
|
|
541
772
|
"replace-section" => {
|
|
542
773
|
"models" => [],
|
|
543
774
|
"fields_by_model" => {
|
|
@@ -591,6 +822,66 @@ module RunApi
|
|
|
591
822
|
"required" => ["stem_name"]
|
|
592
823
|
}]
|
|
593
824
|
},
|
|
825
|
+
"stitch-audio" => {
|
|
826
|
+
"models" => ["suno-v4", "suno-v4.5", "suno-v4.5-plus", "suno-v5", "suno-v5.5"],
|
|
827
|
+
"fields_by_model" => {
|
|
828
|
+
"suno-v4" => {
|
|
829
|
+
"audio_id" => {
|
|
830
|
+
"required" => true
|
|
831
|
+
},
|
|
832
|
+
"model" => {
|
|
833
|
+
"required" => true
|
|
834
|
+
},
|
|
835
|
+
"source_task_id" => {
|
|
836
|
+
"required" => true
|
|
837
|
+
}
|
|
838
|
+
},
|
|
839
|
+
"suno-v4.5" => {
|
|
840
|
+
"audio_id" => {
|
|
841
|
+
"required" => true
|
|
842
|
+
},
|
|
843
|
+
"model" => {
|
|
844
|
+
"required" => true
|
|
845
|
+
},
|
|
846
|
+
"source_task_id" => {
|
|
847
|
+
"required" => true
|
|
848
|
+
}
|
|
849
|
+
},
|
|
850
|
+
"suno-v4.5-plus" => {
|
|
851
|
+
"audio_id" => {
|
|
852
|
+
"required" => true
|
|
853
|
+
},
|
|
854
|
+
"model" => {
|
|
855
|
+
"required" => true
|
|
856
|
+
},
|
|
857
|
+
"source_task_id" => {
|
|
858
|
+
"required" => true
|
|
859
|
+
}
|
|
860
|
+
},
|
|
861
|
+
"suno-v5" => {
|
|
862
|
+
"audio_id" => {
|
|
863
|
+
"required" => true
|
|
864
|
+
},
|
|
865
|
+
"model" => {
|
|
866
|
+
"required" => true
|
|
867
|
+
},
|
|
868
|
+
"source_task_id" => {
|
|
869
|
+
"required" => true
|
|
870
|
+
}
|
|
871
|
+
},
|
|
872
|
+
"suno-v5.5" => {
|
|
873
|
+
"audio_id" => {
|
|
874
|
+
"required" => true
|
|
875
|
+
},
|
|
876
|
+
"model" => {
|
|
877
|
+
"required" => true
|
|
878
|
+
},
|
|
879
|
+
"source_task_id" => {
|
|
880
|
+
"required" => true
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
},
|
|
594
885
|
"text-to-music" => {
|
|
595
886
|
"models" => ["suno-v4", "suno-v4.5", "suno-v4.5-all", "suno-v4.5-plus", "suno-v5", "suno-v5.5"],
|
|
596
887
|
"fields_by_model" => {
|
|
@@ -759,7 +1050,14 @@ module RunApi
|
|
|
759
1050
|
"visualize-music" => {
|
|
760
1051
|
"models" => [],
|
|
761
1052
|
"fields_by_model" => {
|
|
762
|
-
"_" => {
|
|
1053
|
+
"_" => {
|
|
1054
|
+
"audio_id" => {
|
|
1055
|
+
"required" => true
|
|
1056
|
+
},
|
|
1057
|
+
"task_id" => {
|
|
1058
|
+
"required" => true
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
763
1061
|
}
|
|
764
1062
|
},
|
|
765
1063
|
"voice-to-validation-phrase" => {
|
|
@@ -776,6 +1074,9 @@ module RunApi
|
|
|
776
1074
|
"vocal_start_seconds" => {
|
|
777
1075
|
"required" => true,
|
|
778
1076
|
"type" => "integer"
|
|
1077
|
+
},
|
|
1078
|
+
"voice_url" => {
|
|
1079
|
+
"required" => true
|
|
779
1080
|
}
|
|
780
1081
|
}
|
|
781
1082
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module RunApi
|
|
2
|
+
module Suno
|
|
3
|
+
module Resources
|
|
4
|
+
class AddSamples < AudioAction
|
|
5
|
+
ENDPOINT = "/api/v1/suno/add_samples"
|
|
6
|
+
ACTION = "add-samples"
|
|
7
|
+
|
|
8
|
+
def create(options: nil, **params)
|
|
9
|
+
if params[:end_seconds].to_f <= params[:start_seconds].to_f
|
|
10
|
+
raise RunApi::Core::ValidationError, "end_seconds must be greater than start_seconds"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
super
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RunApi
|
|
4
|
+
module Suno
|
|
5
|
+
module Resources
|
|
6
|
+
class AudioAction
|
|
7
|
+
include RunApi::Core::ResourceHelpers
|
|
8
|
+
|
|
9
|
+
def initialize(http) = @http = http
|
|
10
|
+
|
|
11
|
+
def create(options: nil, **params)
|
|
12
|
+
params = compact_params(params)
|
|
13
|
+
validate_contract!(CONTRACT.fetch(self.class::ACTION), params)
|
|
14
|
+
request(:post, self.class::ENDPOINT, body: params, options: options)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def get(id, options: nil) = request(:get, "#{self.class::ENDPOINT}/#{id}", options: options)
|
|
18
|
+
|
|
19
|
+
def run(options: nil, **params)
|
|
20
|
+
task = create(options: options, **params)
|
|
21
|
+
poll_until_complete { get(task.id, options: options) }
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/runapi/suno.rb
CHANGED
|
@@ -6,6 +6,10 @@ require_relative "suno/contract_gen"
|
|
|
6
6
|
require_relative "suno/validators"
|
|
7
7
|
require_relative "suno/resources/text_to_music"
|
|
8
8
|
require_relative "suno/resources/extend_music"
|
|
9
|
+
require_relative "suno/resources/audio_action"
|
|
10
|
+
require_relative "suno/resources/stitch_audio"
|
|
11
|
+
require_relative "suno/resources/remaster_audio"
|
|
12
|
+
require_relative "suno/resources/add_samples"
|
|
9
13
|
require_relative "suno/resources/generate_artwork"
|
|
10
14
|
require_relative "suno/resources/cover_audio"
|
|
11
15
|
require_relative "suno/resources/add_instrumental"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: runapi-suno
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- RunAPI
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0.3.
|
|
18
|
+
version: 0.3.2
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0.3.
|
|
25
|
+
version: 0.3.2
|
|
26
26
|
description: The Suno Ruby SDK is the language-specific package for Suno on RunAPI.
|
|
27
27
|
Use this package for song generation, lyrics, vocals, extension, and audio transformation
|
|
28
28
|
workflows when your application needs request bodies, task status lookup, and consistent
|
|
@@ -41,7 +41,9 @@ files:
|
|
|
41
41
|
- lib/runapi/suno/client.rb
|
|
42
42
|
- lib/runapi/suno/contract_gen.rb
|
|
43
43
|
- lib/runapi/suno/resources/add_instrumental.rb
|
|
44
|
+
- lib/runapi/suno/resources/add_samples.rb
|
|
44
45
|
- lib/runapi/suno/resources/add_vocals.rb
|
|
46
|
+
- lib/runapi/suno/resources/audio_action.rb
|
|
45
47
|
- lib/runapi/suno/resources/blend_lyrics.rb
|
|
46
48
|
- lib/runapi/suno/resources/boost_style.rb
|
|
47
49
|
- lib/runapi/suno/resources/check_voice.rb
|
|
@@ -56,8 +58,10 @@ files:
|
|
|
56
58
|
- lib/runapi/suno/resources/generate_voice.rb
|
|
57
59
|
- lib/runapi/suno/resources/get_timestamped_lyrics.rb
|
|
58
60
|
- lib/runapi/suno/resources/regenerate_validation_phrase.rb
|
|
61
|
+
- lib/runapi/suno/resources/remaster_audio.rb
|
|
59
62
|
- lib/runapi/suno/resources/replace_section.rb
|
|
60
63
|
- lib/runapi/suno/resources/separate_audio_stems.rb
|
|
64
|
+
- lib/runapi/suno/resources/stitch_audio.rb
|
|
61
65
|
- lib/runapi/suno/resources/text_to_music.rb
|
|
62
66
|
- lib/runapi/suno/resources/text_to_sound.rb
|
|
63
67
|
- lib/runapi/suno/resources/visualize_music.rb
|
|
@@ -88,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
88
92
|
- !ruby/object:Gem::Version
|
|
89
93
|
version: '0'
|
|
90
94
|
requirements: []
|
|
91
|
-
rubygems_version: 4.0.
|
|
95
|
+
rubygems_version: 4.0.10
|
|
92
96
|
specification_version: 4
|
|
93
97
|
summary: Suno API Ruby SDK for RunAPI
|
|
94
98
|
test_files: []
|