@runapi.ai/suno 0.2.7 → 0.2.8

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.
package/dist/index.js CHANGED
@@ -41,6 +41,1174 @@ var import_core22 = require("@runapi.ai/core");
41
41
  // src/resources/text-to-music.ts
42
42
  var import_core = require("@runapi.ai/core");
43
43
  var import_internal = require("@runapi.ai/core/internal");
44
+
45
+ // src/contract_gen.ts
46
+ var contract = {
47
+ "add-instrumental": {
48
+ "models": [
49
+ "suno-v4.5-plus",
50
+ "suno-v5",
51
+ "suno-v5.5"
52
+ ],
53
+ "fields_by_model": {
54
+ "suno-v4.5-plus": {
55
+ "model": {
56
+ "required": true
57
+ },
58
+ "upload_url": {
59
+ "required": true
60
+ },
61
+ "vocal_gender": {
62
+ "enum": [
63
+ "male",
64
+ "female"
65
+ ]
66
+ }
67
+ },
68
+ "suno-v5": {
69
+ "model": {
70
+ "required": true
71
+ },
72
+ "upload_url": {
73
+ "required": true
74
+ },
75
+ "vocal_gender": {
76
+ "enum": [
77
+ "male",
78
+ "female"
79
+ ]
80
+ }
81
+ },
82
+ "suno-v5.5": {
83
+ "model": {
84
+ "required": true
85
+ },
86
+ "upload_url": {
87
+ "required": true
88
+ },
89
+ "vocal_gender": {
90
+ "enum": [
91
+ "male",
92
+ "female"
93
+ ]
94
+ }
95
+ }
96
+ }
97
+ },
98
+ "add-vocals": {
99
+ "models": [
100
+ "suno-v4.5-plus",
101
+ "suno-v5"
102
+ ],
103
+ "fields_by_model": {
104
+ "suno-v4.5-plus": {
105
+ "lyrics": {
106
+ "required": true
107
+ },
108
+ "model": {
109
+ "required": true
110
+ },
111
+ "upload_url": {
112
+ "required": true
113
+ },
114
+ "vocal_gender": {
115
+ "enum": [
116
+ "male",
117
+ "female"
118
+ ]
119
+ }
120
+ },
121
+ "suno-v5": {
122
+ "lyrics": {
123
+ "required": true
124
+ },
125
+ "model": {
126
+ "required": true
127
+ },
128
+ "upload_url": {
129
+ "required": true
130
+ },
131
+ "vocal_gender": {
132
+ "enum": [
133
+ "male",
134
+ "female"
135
+ ]
136
+ }
137
+ }
138
+ }
139
+ },
140
+ "boost-style": {
141
+ "models": [],
142
+ "fields_by_model": {
143
+ "_": {}
144
+ }
145
+ },
146
+ "check-voice": {
147
+ "models": [],
148
+ "fields_by_model": {
149
+ "_": {
150
+ "task_id": {
151
+ "required": true
152
+ }
153
+ }
154
+ }
155
+ },
156
+ "convert-audio": {
157
+ "models": [],
158
+ "fields_by_model": {
159
+ "_": {}
160
+ }
161
+ },
162
+ "cover-audio": {
163
+ "models": [
164
+ "suno-v4",
165
+ "suno-v4.5",
166
+ "suno-v4.5-all",
167
+ "suno-v4.5-plus",
168
+ "suno-v5",
169
+ "suno-v5.5"
170
+ ],
171
+ "fields_by_model": {
172
+ "suno-v4": {
173
+ "model": {
174
+ "required": true
175
+ },
176
+ "persona_type": {
177
+ "enum": [
178
+ "style",
179
+ "voice"
180
+ ]
181
+ },
182
+ "upload_url": {
183
+ "required": true
184
+ },
185
+ "vocal_gender": {
186
+ "enum": [
187
+ "male",
188
+ "female"
189
+ ]
190
+ },
191
+ "vocal_mode": {
192
+ "enum": [
193
+ "auto_lyrics",
194
+ "exact_lyrics",
195
+ "instrumental"
196
+ ],
197
+ "required": true
198
+ }
199
+ },
200
+ "suno-v4.5": {
201
+ "model": {
202
+ "required": true
203
+ },
204
+ "persona_type": {
205
+ "enum": [
206
+ "style",
207
+ "voice"
208
+ ]
209
+ },
210
+ "upload_url": {
211
+ "required": true
212
+ },
213
+ "vocal_gender": {
214
+ "enum": [
215
+ "male",
216
+ "female"
217
+ ]
218
+ },
219
+ "vocal_mode": {
220
+ "enum": [
221
+ "auto_lyrics",
222
+ "exact_lyrics",
223
+ "instrumental"
224
+ ],
225
+ "required": true
226
+ }
227
+ },
228
+ "suno-v4.5-all": {
229
+ "model": {
230
+ "required": true
231
+ },
232
+ "persona_type": {
233
+ "enum": [
234
+ "style",
235
+ "voice"
236
+ ]
237
+ },
238
+ "upload_url": {
239
+ "required": true
240
+ },
241
+ "vocal_gender": {
242
+ "enum": [
243
+ "male",
244
+ "female"
245
+ ]
246
+ },
247
+ "vocal_mode": {
248
+ "enum": [
249
+ "auto_lyrics",
250
+ "exact_lyrics",
251
+ "instrumental"
252
+ ],
253
+ "required": true
254
+ }
255
+ },
256
+ "suno-v4.5-plus": {
257
+ "model": {
258
+ "required": true
259
+ },
260
+ "persona_type": {
261
+ "enum": [
262
+ "style",
263
+ "voice"
264
+ ]
265
+ },
266
+ "upload_url": {
267
+ "required": true
268
+ },
269
+ "vocal_gender": {
270
+ "enum": [
271
+ "male",
272
+ "female"
273
+ ]
274
+ },
275
+ "vocal_mode": {
276
+ "enum": [
277
+ "auto_lyrics",
278
+ "exact_lyrics",
279
+ "instrumental"
280
+ ],
281
+ "required": true
282
+ }
283
+ },
284
+ "suno-v5": {
285
+ "model": {
286
+ "required": true
287
+ },
288
+ "persona_type": {
289
+ "enum": [
290
+ "style",
291
+ "voice"
292
+ ]
293
+ },
294
+ "upload_url": {
295
+ "required": true
296
+ },
297
+ "vocal_gender": {
298
+ "enum": [
299
+ "male",
300
+ "female"
301
+ ]
302
+ },
303
+ "vocal_mode": {
304
+ "enum": [
305
+ "auto_lyrics",
306
+ "exact_lyrics",
307
+ "instrumental"
308
+ ],
309
+ "required": true
310
+ }
311
+ },
312
+ "suno-v5.5": {
313
+ "model": {
314
+ "required": true
315
+ },
316
+ "persona_type": {
317
+ "enum": [
318
+ "style",
319
+ "voice"
320
+ ]
321
+ },
322
+ "upload_url": {
323
+ "required": true
324
+ },
325
+ "vocal_gender": {
326
+ "enum": [
327
+ "male",
328
+ "female"
329
+ ]
330
+ },
331
+ "vocal_mode": {
332
+ "enum": [
333
+ "auto_lyrics",
334
+ "exact_lyrics",
335
+ "instrumental"
336
+ ],
337
+ "required": true
338
+ }
339
+ }
340
+ },
341
+ "rules": [
342
+ {
343
+ "when": {
344
+ "vocal_mode": "auto_lyrics"
345
+ },
346
+ "required": [
347
+ "prompt"
348
+ ],
349
+ "forbidden": [
350
+ "lyrics",
351
+ "style",
352
+ "title"
353
+ ]
354
+ },
355
+ {
356
+ "when": {
357
+ "vocal_mode": "exact_lyrics"
358
+ },
359
+ "required": [
360
+ "lyrics",
361
+ "style",
362
+ "title"
363
+ ],
364
+ "forbidden": [
365
+ "prompt"
366
+ ]
367
+ },
368
+ {
369
+ "when": {
370
+ "vocal_mode": "instrumental"
371
+ },
372
+ "required": [
373
+ "style",
374
+ "title"
375
+ ],
376
+ "forbidden": [
377
+ "prompt",
378
+ "lyrics"
379
+ ]
380
+ }
381
+ ]
382
+ },
383
+ "create-mashup": {
384
+ "models": [
385
+ "suno-v4",
386
+ "suno-v4.5",
387
+ "suno-v4.5-all",
388
+ "suno-v4.5-plus",
389
+ "suno-v5",
390
+ "suno-v5.5"
391
+ ],
392
+ "fields_by_model": {
393
+ "suno-v4": {
394
+ "model": {
395
+ "required": true
396
+ },
397
+ "persona_type": {
398
+ "enum": [
399
+ "style",
400
+ "voice"
401
+ ]
402
+ },
403
+ "upload_url_list": {
404
+ "required": true
405
+ },
406
+ "vocal_gender": {
407
+ "enum": [
408
+ "male",
409
+ "female"
410
+ ]
411
+ },
412
+ "vocal_mode": {
413
+ "enum": [
414
+ "auto_lyrics",
415
+ "exact_lyrics",
416
+ "instrumental"
417
+ ],
418
+ "required": true
419
+ }
420
+ },
421
+ "suno-v4.5": {
422
+ "model": {
423
+ "required": true
424
+ },
425
+ "persona_type": {
426
+ "enum": [
427
+ "style",
428
+ "voice"
429
+ ]
430
+ },
431
+ "upload_url_list": {
432
+ "required": true
433
+ },
434
+ "vocal_gender": {
435
+ "enum": [
436
+ "male",
437
+ "female"
438
+ ]
439
+ },
440
+ "vocal_mode": {
441
+ "enum": [
442
+ "auto_lyrics",
443
+ "exact_lyrics",
444
+ "instrumental"
445
+ ],
446
+ "required": true
447
+ }
448
+ },
449
+ "suno-v4.5-all": {
450
+ "model": {
451
+ "required": true
452
+ },
453
+ "persona_type": {
454
+ "enum": [
455
+ "style",
456
+ "voice"
457
+ ]
458
+ },
459
+ "upload_url_list": {
460
+ "required": true
461
+ },
462
+ "vocal_gender": {
463
+ "enum": [
464
+ "male",
465
+ "female"
466
+ ]
467
+ },
468
+ "vocal_mode": {
469
+ "enum": [
470
+ "auto_lyrics",
471
+ "exact_lyrics",
472
+ "instrumental"
473
+ ],
474
+ "required": true
475
+ }
476
+ },
477
+ "suno-v4.5-plus": {
478
+ "model": {
479
+ "required": true
480
+ },
481
+ "persona_type": {
482
+ "enum": [
483
+ "style",
484
+ "voice"
485
+ ]
486
+ },
487
+ "upload_url_list": {
488
+ "required": true
489
+ },
490
+ "vocal_gender": {
491
+ "enum": [
492
+ "male",
493
+ "female"
494
+ ]
495
+ },
496
+ "vocal_mode": {
497
+ "enum": [
498
+ "auto_lyrics",
499
+ "exact_lyrics",
500
+ "instrumental"
501
+ ],
502
+ "required": true
503
+ }
504
+ },
505
+ "suno-v5": {
506
+ "model": {
507
+ "required": true
508
+ },
509
+ "persona_type": {
510
+ "enum": [
511
+ "style",
512
+ "voice"
513
+ ]
514
+ },
515
+ "upload_url_list": {
516
+ "required": true
517
+ },
518
+ "vocal_gender": {
519
+ "enum": [
520
+ "male",
521
+ "female"
522
+ ]
523
+ },
524
+ "vocal_mode": {
525
+ "enum": [
526
+ "auto_lyrics",
527
+ "exact_lyrics",
528
+ "instrumental"
529
+ ],
530
+ "required": true
531
+ }
532
+ },
533
+ "suno-v5.5": {
534
+ "model": {
535
+ "required": true
536
+ },
537
+ "persona_type": {
538
+ "enum": [
539
+ "style",
540
+ "voice"
541
+ ]
542
+ },
543
+ "upload_url_list": {
544
+ "required": true
545
+ },
546
+ "vocal_gender": {
547
+ "enum": [
548
+ "male",
549
+ "female"
550
+ ]
551
+ },
552
+ "vocal_mode": {
553
+ "enum": [
554
+ "auto_lyrics",
555
+ "exact_lyrics",
556
+ "instrumental"
557
+ ],
558
+ "required": true
559
+ }
560
+ }
561
+ },
562
+ "rules": [
563
+ {
564
+ "when": {
565
+ "vocal_mode": "auto_lyrics"
566
+ },
567
+ "required": [
568
+ "prompt"
569
+ ],
570
+ "forbidden": [
571
+ "lyrics",
572
+ "style",
573
+ "title"
574
+ ]
575
+ },
576
+ {
577
+ "when": {
578
+ "vocal_mode": "exact_lyrics"
579
+ },
580
+ "required": [
581
+ "lyrics",
582
+ "style",
583
+ "title"
584
+ ],
585
+ "forbidden": [
586
+ "prompt"
587
+ ]
588
+ },
589
+ {
590
+ "when": {
591
+ "vocal_mode": "instrumental"
592
+ },
593
+ "required": [
594
+ "style",
595
+ "title"
596
+ ],
597
+ "forbidden": [
598
+ "prompt",
599
+ "lyrics"
600
+ ]
601
+ }
602
+ ]
603
+ },
604
+ "extend-music": {
605
+ "models": [
606
+ "suno-v4",
607
+ "suno-v4.5",
608
+ "suno-v4.5-all",
609
+ "suno-v4.5-plus",
610
+ "suno-v5",
611
+ "suno-v5.5"
612
+ ],
613
+ "fields_by_model": {
614
+ "suno-v4": {
615
+ "model": {
616
+ "required": true
617
+ },
618
+ "parameter_mode": {
619
+ "enum": [
620
+ "source",
621
+ "custom"
622
+ ]
623
+ },
624
+ "persona_type": {
625
+ "enum": [
626
+ "style",
627
+ "voice"
628
+ ]
629
+ },
630
+ "vocal_gender": {
631
+ "enum": [
632
+ "male",
633
+ "female"
634
+ ]
635
+ }
636
+ },
637
+ "suno-v4.5": {
638
+ "model": {
639
+ "required": true
640
+ },
641
+ "parameter_mode": {
642
+ "enum": [
643
+ "source",
644
+ "custom"
645
+ ]
646
+ },
647
+ "persona_type": {
648
+ "enum": [
649
+ "style",
650
+ "voice"
651
+ ]
652
+ },
653
+ "vocal_gender": {
654
+ "enum": [
655
+ "male",
656
+ "female"
657
+ ]
658
+ }
659
+ },
660
+ "suno-v4.5-all": {
661
+ "model": {
662
+ "required": true
663
+ },
664
+ "parameter_mode": {
665
+ "enum": [
666
+ "source",
667
+ "custom"
668
+ ]
669
+ },
670
+ "persona_type": {
671
+ "enum": [
672
+ "style",
673
+ "voice"
674
+ ]
675
+ },
676
+ "vocal_gender": {
677
+ "enum": [
678
+ "male",
679
+ "female"
680
+ ]
681
+ }
682
+ },
683
+ "suno-v4.5-plus": {
684
+ "model": {
685
+ "required": true
686
+ },
687
+ "parameter_mode": {
688
+ "enum": [
689
+ "source",
690
+ "custom"
691
+ ]
692
+ },
693
+ "persona_type": {
694
+ "enum": [
695
+ "style",
696
+ "voice"
697
+ ]
698
+ },
699
+ "vocal_gender": {
700
+ "enum": [
701
+ "male",
702
+ "female"
703
+ ]
704
+ }
705
+ },
706
+ "suno-v5": {
707
+ "model": {
708
+ "required": true
709
+ },
710
+ "parameter_mode": {
711
+ "enum": [
712
+ "source",
713
+ "custom"
714
+ ]
715
+ },
716
+ "persona_type": {
717
+ "enum": [
718
+ "style",
719
+ "voice"
720
+ ]
721
+ },
722
+ "vocal_gender": {
723
+ "enum": [
724
+ "male",
725
+ "female"
726
+ ]
727
+ }
728
+ },
729
+ "suno-v5.5": {
730
+ "model": {
731
+ "required": true
732
+ },
733
+ "parameter_mode": {
734
+ "enum": [
735
+ "source",
736
+ "custom"
737
+ ]
738
+ },
739
+ "persona_type": {
740
+ "enum": [
741
+ "style",
742
+ "voice"
743
+ ]
744
+ },
745
+ "vocal_gender": {
746
+ "enum": [
747
+ "male",
748
+ "female"
749
+ ]
750
+ }
751
+ }
752
+ }
753
+ },
754
+ "generate-artwork": {
755
+ "models": [],
756
+ "fields_by_model": {
757
+ "_": {
758
+ "task_id": {
759
+ "required": true
760
+ }
761
+ }
762
+ }
763
+ },
764
+ "generate-lyrics": {
765
+ "models": [],
766
+ "fields_by_model": {
767
+ "_": {}
768
+ }
769
+ },
770
+ "generate-midi": {
771
+ "models": [],
772
+ "fields_by_model": {
773
+ "_": {}
774
+ }
775
+ },
776
+ "generate-persona": {
777
+ "models": [],
778
+ "fields_by_model": {
779
+ "_": {}
780
+ }
781
+ },
782
+ "generate-voice": {
783
+ "models": [],
784
+ "fields_by_model": {
785
+ "_": {
786
+ "singer_skill_level": {
787
+ "enum": [
788
+ "beginner",
789
+ "intermediate",
790
+ "advanced",
791
+ "professional"
792
+ ]
793
+ },
794
+ "task_id": {
795
+ "required": true
796
+ },
797
+ "verify_url": {
798
+ "required": true
799
+ }
800
+ }
801
+ }
802
+ },
803
+ "get-timestamped-lyrics": {
804
+ "models": [],
805
+ "fields_by_model": {
806
+ "_": {}
807
+ }
808
+ },
809
+ "regenerate-validation-phrase": {
810
+ "models": [],
811
+ "fields_by_model": {
812
+ "_": {
813
+ "task_id": {
814
+ "required": true
815
+ }
816
+ }
817
+ }
818
+ },
819
+ "replace-section": {
820
+ "models": [],
821
+ "fields_by_model": {
822
+ "_": {
823
+ "full_lyrics": {
824
+ "required": true
825
+ },
826
+ "infill_end_time": {
827
+ "required": true
828
+ },
829
+ "infill_start_time": {
830
+ "required": true
831
+ },
832
+ "lyrics": {
833
+ "required": true
834
+ },
835
+ "model": {
836
+ "enum": [
837
+ "suno-v4",
838
+ "suno-v4.5",
839
+ "suno-v4.5-all",
840
+ "suno-v4.5-plus",
841
+ "suno-v5",
842
+ "suno-v5.5"
843
+ ]
844
+ },
845
+ "tags": {
846
+ "required": true
847
+ },
848
+ "title": {
849
+ "required": true
850
+ }
851
+ }
852
+ }
853
+ },
854
+ "separate-audio-stems": {
855
+ "models": [],
856
+ "fields_by_model": {
857
+ "_": {
858
+ "audio_id": {
859
+ "required": true
860
+ },
861
+ "task_id": {
862
+ "required": true
863
+ }
864
+ }
865
+ }
866
+ },
867
+ "text-to-music": {
868
+ "models": [
869
+ "suno-v4",
870
+ "suno-v4.5",
871
+ "suno-v4.5-all",
872
+ "suno-v4.5-plus",
873
+ "suno-v5",
874
+ "suno-v5.5"
875
+ ],
876
+ "fields_by_model": {
877
+ "suno-v4": {
878
+ "duration_seconds": {
879
+ "type": "integer"
880
+ },
881
+ "model": {
882
+ "required": true
883
+ },
884
+ "persona_type": {
885
+ "enum": [
886
+ "style",
887
+ "voice"
888
+ ]
889
+ },
890
+ "vocal_gender": {
891
+ "enum": [
892
+ "male",
893
+ "female"
894
+ ]
895
+ },
896
+ "vocal_mode": {
897
+ "enum": [
898
+ "auto_lyrics",
899
+ "exact_lyrics",
900
+ "instrumental"
901
+ ],
902
+ "required": true
903
+ }
904
+ },
905
+ "suno-v4.5": {
906
+ "duration_seconds": {
907
+ "type": "integer"
908
+ },
909
+ "model": {
910
+ "required": true
911
+ },
912
+ "persona_type": {
913
+ "enum": [
914
+ "style",
915
+ "voice"
916
+ ]
917
+ },
918
+ "vocal_gender": {
919
+ "enum": [
920
+ "male",
921
+ "female"
922
+ ]
923
+ },
924
+ "vocal_mode": {
925
+ "enum": [
926
+ "auto_lyrics",
927
+ "exact_lyrics",
928
+ "instrumental"
929
+ ],
930
+ "required": true
931
+ }
932
+ },
933
+ "suno-v4.5-all": {
934
+ "duration_seconds": {
935
+ "type": "integer"
936
+ },
937
+ "model": {
938
+ "required": true
939
+ },
940
+ "persona_type": {
941
+ "enum": [
942
+ "style",
943
+ "voice"
944
+ ]
945
+ },
946
+ "vocal_gender": {
947
+ "enum": [
948
+ "male",
949
+ "female"
950
+ ]
951
+ },
952
+ "vocal_mode": {
953
+ "enum": [
954
+ "auto_lyrics",
955
+ "exact_lyrics",
956
+ "instrumental"
957
+ ],
958
+ "required": true
959
+ }
960
+ },
961
+ "suno-v4.5-plus": {
962
+ "duration_seconds": {
963
+ "type": "integer"
964
+ },
965
+ "model": {
966
+ "required": true
967
+ },
968
+ "persona_type": {
969
+ "enum": [
970
+ "style",
971
+ "voice"
972
+ ]
973
+ },
974
+ "vocal_gender": {
975
+ "enum": [
976
+ "male",
977
+ "female"
978
+ ]
979
+ },
980
+ "vocal_mode": {
981
+ "enum": [
982
+ "auto_lyrics",
983
+ "exact_lyrics",
984
+ "instrumental"
985
+ ],
986
+ "required": true
987
+ }
988
+ },
989
+ "suno-v5": {
990
+ "duration_seconds": {
991
+ "type": "integer"
992
+ },
993
+ "model": {
994
+ "required": true
995
+ },
996
+ "persona_type": {
997
+ "enum": [
998
+ "style",
999
+ "voice"
1000
+ ]
1001
+ },
1002
+ "vocal_gender": {
1003
+ "enum": [
1004
+ "male",
1005
+ "female"
1006
+ ]
1007
+ },
1008
+ "vocal_mode": {
1009
+ "enum": [
1010
+ "auto_lyrics",
1011
+ "exact_lyrics",
1012
+ "instrumental"
1013
+ ],
1014
+ "required": true
1015
+ }
1016
+ },
1017
+ "suno-v5.5": {
1018
+ "duration_seconds": {
1019
+ "type": "integer"
1020
+ },
1021
+ "model": {
1022
+ "required": true
1023
+ },
1024
+ "persona_type": {
1025
+ "enum": [
1026
+ "style",
1027
+ "voice"
1028
+ ]
1029
+ },
1030
+ "vocal_gender": {
1031
+ "enum": [
1032
+ "male",
1033
+ "female"
1034
+ ]
1035
+ },
1036
+ "vocal_mode": {
1037
+ "enum": [
1038
+ "auto_lyrics",
1039
+ "exact_lyrics",
1040
+ "instrumental"
1041
+ ],
1042
+ "required": true
1043
+ }
1044
+ }
1045
+ },
1046
+ "rules": [
1047
+ {
1048
+ "when": {
1049
+ "vocal_mode": "auto_lyrics"
1050
+ },
1051
+ "required": [
1052
+ "prompt"
1053
+ ],
1054
+ "forbidden": [
1055
+ "lyrics",
1056
+ "style",
1057
+ "title"
1058
+ ]
1059
+ },
1060
+ {
1061
+ "when": {
1062
+ "vocal_mode": "exact_lyrics"
1063
+ },
1064
+ "required": [
1065
+ "lyrics",
1066
+ "style",
1067
+ "title"
1068
+ ],
1069
+ "forbidden": [
1070
+ "prompt"
1071
+ ]
1072
+ },
1073
+ {
1074
+ "when": {
1075
+ "vocal_mode": "instrumental"
1076
+ },
1077
+ "required": [
1078
+ "style",
1079
+ "title"
1080
+ ],
1081
+ "forbidden": [
1082
+ "prompt",
1083
+ "lyrics"
1084
+ ]
1085
+ }
1086
+ ]
1087
+ },
1088
+ "text-to-sound": {
1089
+ "models": [
1090
+ "suno-v5",
1091
+ "suno-v5.5"
1092
+ ],
1093
+ "fields_by_model": {
1094
+ "suno-v5": {
1095
+ "model": {
1096
+ "required": true
1097
+ },
1098
+ "prompt": {
1099
+ "required": true
1100
+ },
1101
+ "sound_key": {
1102
+ "enum": [
1103
+ "Cm",
1104
+ "C#m",
1105
+ "Dm",
1106
+ "D#m",
1107
+ "Em",
1108
+ "Fm",
1109
+ "F#m",
1110
+ "Gm",
1111
+ "G#m",
1112
+ "Am",
1113
+ "A#m",
1114
+ "Bm",
1115
+ "C",
1116
+ "C#",
1117
+ "D",
1118
+ "D#",
1119
+ "E",
1120
+ "F",
1121
+ "F#",
1122
+ "G",
1123
+ "G#",
1124
+ "A",
1125
+ "A#",
1126
+ "B"
1127
+ ]
1128
+ },
1129
+ "sound_tempo": {
1130
+ "type": "integer"
1131
+ }
1132
+ },
1133
+ "suno-v5.5": {
1134
+ "model": {
1135
+ "required": true
1136
+ },
1137
+ "prompt": {
1138
+ "required": true
1139
+ },
1140
+ "sound_key": {
1141
+ "enum": [
1142
+ "Cm",
1143
+ "C#m",
1144
+ "Dm",
1145
+ "D#m",
1146
+ "Em",
1147
+ "Fm",
1148
+ "F#m",
1149
+ "Gm",
1150
+ "G#m",
1151
+ "Am",
1152
+ "A#m",
1153
+ "Bm",
1154
+ "C",
1155
+ "C#",
1156
+ "D",
1157
+ "D#",
1158
+ "E",
1159
+ "F",
1160
+ "F#",
1161
+ "G",
1162
+ "G#",
1163
+ "A",
1164
+ "A#",
1165
+ "B"
1166
+ ]
1167
+ },
1168
+ "sound_tempo": {
1169
+ "type": "integer"
1170
+ }
1171
+ }
1172
+ }
1173
+ },
1174
+ "visualize-music": {
1175
+ "models": [],
1176
+ "fields_by_model": {
1177
+ "_": {}
1178
+ }
1179
+ },
1180
+ "voice-to-validation-phrase": {
1181
+ "models": [],
1182
+ "fields_by_model": {
1183
+ "_": {
1184
+ "language": {
1185
+ "enum": [
1186
+ "en",
1187
+ "zh",
1188
+ "es",
1189
+ "fr",
1190
+ "pt",
1191
+ "de",
1192
+ "ja",
1193
+ "ko",
1194
+ "hi",
1195
+ "ru"
1196
+ ]
1197
+ },
1198
+ "vocal_end_seconds": {
1199
+ "required": true,
1200
+ "type": "integer"
1201
+ },
1202
+ "vocal_start_seconds": {
1203
+ "required": true,
1204
+ "type": "integer"
1205
+ }
1206
+ }
1207
+ }
1208
+ }
1209
+ };
1210
+
1211
+ // src/resources/text-to-music.ts
44
1212
  var ENDPOINT = "/api/v1/suno/text_to_music";
45
1213
  var TextToMusic = class {
46
1214
  constructor(http) {
@@ -68,8 +1236,10 @@ var TextToMusic = class {
68
1236
  * @returns The task creation result.
69
1237
  */
70
1238
  async create(params, options) {
1239
+ const body = (0, import_core.compactParams)(params);
1240
+ (0, import_core.validateParams)(contract["text-to-music"], body);
71
1241
  return this.http.request("POST", ENDPOINT, {
72
- body: (0, import_core.compactParams)(params),
1242
+ body,
73
1243
  ...options
74
1244
  });
75
1245
  }
@@ -212,8 +1382,10 @@ var CoverAudio = class {
212
1382
  * @returns The task creation result.
213
1383
  */
214
1384
  async create(params, options) {
1385
+ const body = (0, import_core4.compactParams)(params);
1386
+ (0, import_core4.validateParams)(contract["cover-audio"], body);
215
1387
  return this.http.request("POST", ENDPOINT4, {
216
- body: (0, import_core4.compactParams)(params),
1388
+ body,
217
1389
  ...options
218
1390
  });
219
1391
  }
@@ -618,8 +1790,11 @@ var ReplaceSection = class {
618
1790
  * @returns The task creation result.
619
1791
  */
620
1792
  async create(params, options) {
1793
+ const body = (0, import_core13.compactParams)(params);
1794
+ (0, import_core13.validateParams)(contract["replace-section"], body);
1795
+ validateReplaceSection(body);
621
1796
  return this.http.request("POST", ENDPOINT13, {
622
- body: (0, import_core13.compactParams)(params),
1797
+ body,
623
1798
  ...options
624
1799
  });
625
1800
  }
@@ -635,6 +1810,59 @@ var ReplaceSection = class {
635
1810
  });
636
1811
  }
637
1812
  };
1813
+ function validateReplaceSection(body) {
1814
+ validateReplaceSectionSource(body);
1815
+ const startTime = body.infill_start_time;
1816
+ const endTime = body.infill_end_time;
1817
+ if (typeof startTime !== "number" || Number.isNaN(startTime)) {
1818
+ throw new import_core13.ValidationError("infill_start_time must be a number");
1819
+ }
1820
+ if (typeof endTime !== "number" || Number.isNaN(endTime)) {
1821
+ throw new import_core13.ValidationError("infill_end_time must be a number");
1822
+ }
1823
+ if (endTime <= startTime) {
1824
+ throw new import_core13.ValidationError("infill_end_time must be greater than infill_start_time");
1825
+ }
1826
+ const duration = endTime - startTime;
1827
+ if (duration < 6 || duration > 60) {
1828
+ throw new import_core13.ValidationError("replacement duration must be between 6 and 60 seconds");
1829
+ }
1830
+ }
1831
+ function validateReplaceSectionSource(body) {
1832
+ const hasExistingSource = isPresent(body.task_id) || isPresent(body.audio_id);
1833
+ const hasUploadedSource = isPresent(body.upload_url) || isPresent(body.model);
1834
+ if (hasExistingSource && hasUploadedSource) {
1835
+ throw new import_core13.ValidationError("task_id/audio_id cannot be combined with upload_url/model");
1836
+ }
1837
+ if (hasExistingSource) {
1838
+ requireField(body, "task_id");
1839
+ requireField(body, "audio_id");
1840
+ return;
1841
+ }
1842
+ if (hasUploadedSource) {
1843
+ requireField(body, "upload_url");
1844
+ requireField(body, "model");
1845
+ return;
1846
+ }
1847
+ throw new import_core13.ValidationError("task_id and audio_id, or upload_url and model are required");
1848
+ }
1849
+ function requireField(body, field) {
1850
+ if (!isPresent(body[field])) {
1851
+ throw new import_core13.ValidationError(`${field} is required`);
1852
+ }
1853
+ }
1854
+ function isPresent(value) {
1855
+ if (value === void 0 || value === null) {
1856
+ return false;
1857
+ }
1858
+ if (typeof value === "string") {
1859
+ return value.length > 0;
1860
+ }
1861
+ if (Array.isArray(value)) {
1862
+ return value.length > 0;
1863
+ }
1864
+ return true;
1865
+ }
638
1866
 
639
1867
  // src/resources/create-mashup.ts
640
1868
  var import_core14 = require("@runapi.ai/core");
@@ -666,8 +1894,10 @@ var CreateMashup = class {
666
1894
  * @returns The task creation result.
667
1895
  */
668
1896
  async create(params, options) {
1897
+ const body = (0, import_core14.compactParams)(params);
1898
+ (0, import_core14.validateParams)(contract["create-mashup"], body);
669
1899
  return this.http.request("POST", ENDPOINT14, {
670
- body: (0, import_core14.compactParams)(params),
1900
+ body,
671
1901
  ...options
672
1902
  });
673
1903
  }