SDK'lar
Türü belirlenmiş bir RunAPI SDK'sı yükleyin, bir API anahtarıyla kimlik doğrulayın ve uygulamanız için doğru Görev yaşam döngüsünü seçin.
RunAPI SDK’ları, JavaScript, Python, PHP, Java, Ruby ve Go dillerinde desteklenen model aileleri için yazılı istemciler sağlar. Uygulamanızın çağırdığı model ailesine ait dil paketini seçin.
Bir model SDK'sı yükle
Dilinize ve model ailenize uygun paketi yükleyin. Örneğin, Suno JavaScript SDK’sını yüklemek için:
npm install @runapi.ai/[email protected]
Aynı model ailesi, desteklenen her çalışma zamanı için paket yöneticisi aracılığıyla kullanılabilir:
pip install runapi-suno==0.6.0
composer require runapi-ai/suno:0.4.0
gem install runapi-suno --version 0.6.0
go get github.com/runapi-ai/suno-sdk/[email protected]
Java için Suno modülünü Gradle veya Maven ile ekleyin:
dependencies {
implementation("ai.runapi:runapi-suno:0.5.0")
}
<dependency>
<groupId>ai.runapi</groupId>
<artifactId>runapi-suno</artifactId>
<version>0.5.0</version>
</dependency>
İstemcinin kimliğini doğrulayın
İstemci oluşturmadan önce ortamda RUNAPI_API_KEY değerini ayarlayın. SDK, REST istekleriniz ve CLI iş akışınızla aynı hesap bağlamı için bir RunAPI API anahtarı kullanır.
export RUNAPI_API_KEY="runapi_..."
Kimlik Doğrulama Kılavuzu‘nda anahtarları oluşturun ve döndürün. Anahtarları uygulama kaynak kodunda değil, gizli yöneticinizde saklayın.
Dosyalar ve Yüklemelerle Çalışma
Her Sağlayıcı İstemcisi, çekirdek paketinden kalıcı files ve çok parçalı uploads kaynaklarını kullanıma sunar. Mevcut files.create yöntemi geçici URL oluşturmaya devam eder; kalıcı bir Dosya nesnesi oluşturmak için JavaScript, Java ve PHP’de files.createFile, Python ve Ruby’de files.create_file ya da Go’da Files.CreateFile kullanın.
const file = await client.files.createFile({
file: new Blob([fileBytes], { type: "application/pdf" }),
filename: "knowledge.pdf",
purpose: "user_data",
});
const bytes = await client.files.content(file.id);
await client.files.deleteFile(file.id);
Bir istek Parçalara bölündüğünde uploads.create, addPart, complete ve cancel kullanın. Python ve Ruby add_part; Go ise AddPart kullanır. Sınırlar, REST örnekleri ve tam yaşam döngüsü için bkz. Dosyalar ve Yüklemeler.
Sesi eş zamanlı olarak transkrip et
OpenAI Transcription SDK yerel bir ses dosyasını yükler ve tamamlanmış transkripsiyonu aynı istekte döndürür. JSON yanıt biçimleri dile özgü bir nesne döndürür; metin, SRT ve VTT biçimleri ise tam yanıt dizesini döndürür.
import { OpenaiTranscriptionClient } from "@runapi.ai/openai-transcription";
const client = new OpenaiTranscriptionClient();
const transcript = await client.speechToText.run({
file: new Blob([audioBytes], { type: "audio/mpeg" }),
filename: "interview.mp3",
response_format: "json",
});
Dosya biçimleri, modele özgü alanlar ve yanıt biçimleri için Ses Transkripsiyon API başvurusuna bakın.
Asenkron Görevlerle Çalışma
Birçok medya işlemi eşzamansızdır. Bir Görev göndermek ve id’sini hemen almak için create, mevcut durumunu almak için get, göndermek ve terminal durumuna ulaşana kadar yoklamak için run kullanın. Bir web isteği işleyicisinde, isteğin bir çalışanı meşgul etmemesi için create ve bir geri çağırma ya da sonraki get yoklaması tercih edin.
JavaScript
import { SunoClient } from "@runapi.ai/suno";
const client = new SunoClient();
const result = await client.textToMusic.run({
model: "suno-v5",
vocal_mode: "auto_lyrics",
prompt: "A short piano theme",
});
console.log(result.audios[0].audio_url);
Python
from runapi.suno import SunoClient
client = SunoClient()
result = client.text_to_music.run(
model="suno-v4.5-plus",
vocal_mode="auto_lyrics",
prompt="A short piano theme",
)
print(result.audios[0].audio_url)
PHP
<?php
use RunApi\Suno\SunoClient;
$client = new SunoClient();
$result = $client->textToMusic->run([
'model' => 'suno-v5.5',
'vocal_mode' => 'auto_lyrics',
'prompt' => 'A short piano theme',
]);
print_r($result->toArray());
Ruby
require "runapi/suno"
client = RunApi::Suno::Client.new
result = client.text_to_music.run(
model: "suno-v4.5-plus",
vocal_mode: "auto_lyrics",
prompt: "A short piano theme"
)
puts result.dig("audios", 0, "audio_url")
Go
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/runapi-ai/core-sdk/go/option"
"github.com/runapi-ai/suno-sdk/go/suno"
)
func main() {
client, err := suno.NewClient(option.WithAPIKey(os.Getenv("RUNAPI_API_KEY")))
if err != nil {
log.Fatal(err)
}
result, err := client.TextToMusic.Run(context.Background(), suno.TextToMusicParams{
SunoBaseParams: suno.SunoBaseParams{Model: suno.ModelV45Plus},
VocalMode: suno.VocalModeAutoLyrics,
Prompt: "A short piano theme",
})
if err != nil {
log.Fatal(err)
}
fmt.Println(result.ID)
}
Java
import ai.runapi.suno.SunoClient;
import ai.runapi.suno.types.CompletedTextToMusicResponse;
import ai.runapi.suno.types.TextToMusicModel;
import ai.runapi.suno.types.TextToMusicParams;
SunoClient client = SunoClient.builder()
.apiKey(System.getenv("RUNAPI_API_KEY"))
.build();
CompletedTextToMusicResponse result = client.textToMusic().run(
TextToMusicParams.builder()
.model(TextToMusicModel.SUNO_V5)
.vocalMode("auto_lyrics")
.prompt("A short piano theme")
.build()
);
Bir Style Persona'yı Yeniden Kullanma
Herkese açık bir ses URL’sinden bir Style Persona oluşturun, ardından döndürülen
persona.id‘yi desteklenen dört müzik işlemiyle yeniden kullanın. persona_type:
"style" yeniden kullanılabilir tür ve ruh hali özelliklerini uygular. Kaynak kaydın sesini klonlamayı, stilini kayıpsız biçimde korumayı veya kaynak sesle belirli bir benzerliği garanti etmez.
import { SunoClient } from "@runapi.ai/suno";
const client = new SunoClient();
const referenceAudioUrl = "https://cdn.runapi.ai/public/samples/music.mp3";
const sampled = await client.addSamples.run({
model: "suno-v5",
audio_url: referenceAudioUrl,
start_seconds: 0,
end_seconds: 30,
});
const sourceAudioId = sampled.audios?.[0]?.id;
if (!sourceAudioId) throw new Error("The sample Task did not return an audio ID");
const { persona } = await client.generatePersona.run({
task_id: sampled.id,
audio_id: sourceAudioId,
name: "Studio Style",
description: "A warm and expressive acoustic pop style.",
});
const textToMusic = await client.textToMusic.run({
model: "suno-v5",
vocal_mode: "auto_lyrics",
prompt: "An uplifting acoustic pop song about a rainy city night",
persona_id: persona.id,
persona_type: "style",
});
const coverAudio = await client.coverAudio.run({
model: "suno-v5",
upload_url: referenceAudioUrl,
vocal_mode: "auto_lyrics",
prompt: "Rework the reference track as acoustic pop",
persona_id: persona.id,
persona_type: "style",
});
const createMashup = await client.createMashup.run({
model: "suno-v5",
upload_url_list: [
referenceAudioUrl,
"https://cdn.runapi.ai/public/samples/audio-2.mp3",
],
vocal_mode: "auto_lyrics",
prompt: "Blend both tracks into an energetic acoustic pop mashup",
persona_id: persona.id,
persona_type: "style",
});
const extendMusic = await client.extendMusic.run({
model: "suno-v5",
upload_url: referenceAudioUrl,
parameter_mode: "custom",
instrumental: false,
prompt: "Continue the arrangement with a brighter chorus",
style: "Acoustic pop with warm piano",
title: "Brighter Chorus",
continue_at: 60,
persona_id: persona.id,
persona_type: "style",
});
console.log({
textToMusic: textToMusic.audios[0]?.audio_url,
coverAudio: coverAudio.audios[0]?.audio_url,
createMashup: createMashup.audios[0]?.audio_url,
extendMusic: extendMusic.audios[0]?.audio_url,
});
Sonraki iş akışını seçin
Uygulamanız yazılı istek oluşturuculardan ve dile özgü Görev yardımcılarından yararlanıyorsa SDK kullanın. Kabuk otomasyonu, yerel denetimler ve geri çağırma hata ayıklaması için RunAPI CLI kullanın. Tam istek alanları, Görev yanıtları ve hatalar için API Başvurusu kullanın.
Vidu Q4
Vidu paketleri görüntüden videoya ve referanstan videoya geçiş sağlar
oluşturma, alma ve eşzamansız görev yardımcılarına sahip kaynaklar. Kullanım vidu-q4-image-to-video veya vidu-q4-reference-to-video karşılık gelen kaynak. Paket adları @runapi.ai/vidu ‘dir.
JavaScript, Python ve Ruby için runapi-vidu , PHP için runapi-ai/vidu ,
Java ve github.com/runapi-ai/vidu-sdk/go için ai.runapi:runapi-vidu Go için.
Referans görüntüsü ve MP3 gereksinimleri için şu kılavuza bakın. Görev API kılavuzu。 Ayrıca bakın Görüntüden video fiyatları · Referanslardan video fiyatları。