SDKs
Ein typisiertes RunAPI-SDK installieren, es mit einem API-Schlüssel authentifizieren und den richtigen Task-Lebenszyklus für Ihre Anwendung auswählen.
RunAPI SDKs stellen typisierte Clients für unterstützte Modellfamilien in JavaScript, Python, PHP, Java, Ruby und Go bereit. Wählen Sie das Sprachpaket für die Modellfamilie, die Ihre Anwendung aufruft.
Ein Modell-SDK installieren
Das Paket installieren, das zu Ihrer Sprache und Modellfamilie passt. Zum Beispiel das Suno JavaScript SDK installieren:
npm install @runapi.ai/[email protected]
Dieselbe Modellfamilie ist über den Paketmanager für jede unterstützte Laufzeitumgebung verfügbar:
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]
Fügen Sie für Java das Suno-Modul mit Gradle oder Maven hinzu:
dependencies {
implementation("ai.runapi:runapi-suno:0.5.0")
}
<dependency>
<groupId>ai.runapi</groupId>
<artifactId>runapi-suno</artifactId>
<version>0.5.0</version>
</dependency>
Den Client authentifizieren
Setzen Sie RUNAPI_API_KEY in der Umgebung, bevor Sie einen Client erstellen. Das
SDK verwendet einen RunAPI-API-Schlüssel für denselben Kontokontext wie Ihre REST-
Anfragen und den CLI-Workflow.
export RUNAPI_API_KEY="runapi_..."
Erstellen und rotieren Sie Schlüssel im Authentifizierungsleitfaden. Bewahren Sie Schlüssel in Ihrem Secret-Manager auf, nicht im Quellcode der Anwendung.
Mit Dateien und Uploads arbeiten
Jeder Provider-Client stellt persistente files- und mehrteilige uploads-Ressourcen aus seinem Kernpaket bereit. Die vorhandene Methode files.create erstellt weiterhin eine temporäre URL; verwenden Sie files.createFile in JavaScript, Java und PHP, files.create_file in Python und Ruby oder Files.CreateFile in Go, um ein persistentes Datei-Objekt zu erstellen.
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);
Verwende uploads.create, addPart, complete und cancel, wenn eine Anfrage
in Parts aufgeteilt ist. Python und Ruby verwenden add_part; Go verwendet AddPart.
Siehe Files and Uploads für Limits, REST-
Beispiele und den vollständigen Lebenszyklus.
Audio synchron transkribieren
Das OpenAI Transcription SDK lädt eine lokale Audiodatei hoch und gibt die abgeschlossene Transkription in derselben Anfrage zurück. JSON-Antwortformate geben ein sprachnatives Objekt zurück; Text-, SRT- und VTT-Formate geben den exakten Antwort-String zurück.
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",
});
Siehe die Audio-Transkriptions-API- Referenz für Dateiformate, modellspezifische Felder und Antwortformate.
Mit asynchronen Tasks arbeiten
Viele Medienoperationen sind asynchron. Verwenden Sie create, um einen Task einzureichen und seine ID sofort zu erhalten, get, um seinen aktuellen Status abzurufen, oder run, um ihn einzureichen und zu pollen, bis er einen Endzustand erreicht. Bevorzugen Sie in einem Web-Request-Handler create mit einem Callback oder späterem get-Polling, damit der Request keinen Worker blockiert.
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()
);
Eine Style Persona wiederverwenden
Erstellen Sie eine Style Persona aus einer öffentlichen Audio-URL und verwenden Sie die zurückgegebene
persona.id dann mit den vier unterstützten Musikoperationen wieder. persona_type:
"style" wendet wiederverwendbare Genre- und Stimmungsmerkmale an. Dies garantiert weder das Klonen der Stimme der Quellaufnahme noch die verlustfreie Beibehaltung ihres Stils oder eine bestimmte Ähnlichkeit mit dem Quell-Audio.
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,
});
Den nächsten Workflow auswählen
Verwende ein SDK, wenn deine Anwendung von typisierten Anfrage-Buildern und sprachnnativen Task-Helfern profitiert. Verwende die RunAPI CLI für Shell-Automatisierung, lokale Prüfungen und Callback-Debugging. Für genaue Anfrage-Felder, Task-Antworten und Fehler verwende die API Reference.
Vidu Q4
Die Vidu-Pakete bieten Bild-zu-Video und Referenz-zu-Video
Ressourcen mit Helfern zum Erstellen, Abrufen und asynchronen Aufgaben. Benutzen vidu-q4-image-to-video oder vidu-q4-reference-to-video für
entsprechende Ressource. Paketnamen sind @runapi.ai/vidu für
JavaScript, runapi-vidu für Python und Ruby, runapi-ai/vidu für PHP, ai.runapi:runapi-vidu für Java und github.com/runapi-ai/vidu-sdk/go für Go.
Die Anforderungen für Referenzbilder und MP3-Dateien finden Sie in der Task-API-Anleitung。 Siehe auch Preise für Bild zu Video · Preise für Referenzen zu Video。