SDK's
Installeer een getypeerde RunAPI SDK, authenticeer deze met een API-sleutel en kies de juiste Task-levenscyclus voor uw applicatie.
RunAPI SDK’s bieden getypte clients voor ondersteunde modelfamilies in JavaScript, Python, PHP, Java, Ruby en Go. Kies het taalpakket voor de modelfamilie die uw applicatie aanroept.
Een model-SDK installeren
Installeer het pakket dat overeenkomt met uw taal en modelfamilie. Installeer bijvoorbeeld de Suno JavaScript SDK:
npm install @runapi.ai/[email protected]
Dezelfde modelfamilie is beschikbaar via de pakketbeheerder voor elke ondersteunde runtime:
pip install runapi-suno==0.4.3
composer require runapi-ai/suno:0.3.1
gem install runapi-suno --version 0.4.3
go get github.com/runapi-ai/suno-sdk/[email protected]
Voor Java voegt u de Suno-module toe met Gradle of Maven:
dependencies {
implementation("ai.runapi:runapi-suno:0.3.2")
}
<dependency>
<groupId>ai.runapi</groupId>
<artifactId>runapi-suno</artifactId>
<version>0.3.2</version>
</dependency>
De client authenticeren
Stel RUNAPI_API_KEY in de omgeving in voordat u een client aanmaakt. De SDK gebruikt een RunAPI API-sleutel voor dezelfde accountcontext als uw REST-verzoeken en CLI-workflow.
export RUNAPI_API_KEY="runapi_..."
Maak sleutels aan en roteer ze in de Authenticatie- Handleiding. Bewaar sleutels in uw geheimenbeheerder in plaats van in de broncode van de applicatie.
Werken met bestanden en uploads
Elke providerclient biedt persistente files- en meerdelige uploads-
resources vanuit het kernpakket. De bestaande methode files.create
maakt nog steeds een tijdelijke URL aan; gebruik files.createFile in JavaScript,
Java en PHP, files.create_file in Python en Ruby, of
Files.CreateFile in Go om een persistent bestandsobject aan te maken.
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);
Gebruik uploads.create, addPart, complete en cancel wanneer een verzoek
is opgesplitst in Parts. Python en Ruby gebruiken add_part; Go gebruikt AddPart.
Zie Files and Uploads voor limieten, REST-
voorbeelden en de volledige levenscyclus.
Audio synchroon transcriberen
De OpenAI Transcription SDK uploadt een lokaal audiobestand en retourneert de voltooide transcriptie in hetzelfde verzoek. JSON-antwoordformaten retourneren een taalnatief object; tekst-, SRT- en VTT-formaten retourneren de exacte antwoordstring.
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",
});
Zie de Audio Transcription API-referentie voor bestandsindelingen, modelspecifieke velden en responsindelingen.
Werken met asynchrone taken
Veel mediabewerkingen zijn asynchroon. Gebruik create om een taak in te dienen en direct het id te ontvangen, get om de huidige status op te halen, of run om in te dienen en te pollen totdat een eindstatus is bereikt. Gebruik in een webverzoekhandler bij voorkeur create in combinatie met een callback of later get-polling, zodat het verzoek geen worker bezet houdt.
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()
);
Een Style Persona hergebruiken
Maak een Style Persona aan via een openbare audio-URL en hergebruik vervolgens het geretourneerde
persona.id bij de vier ondersteunde muziekbewerkingen. persona_type:
"style" past herbruikbare genre- en sfeerkenmerken toe. Dit garandeert niet het klonen van de stem van de bronopname, het verliesvrij behouden van de stijl ervan, of enige specifieke gelijkenis met de bronaudio.
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,
});
De volgende workflow kiezen
Gebruik een SDK wanneer uw applicatie baat heeft bij getypeerde verzoekbouwers en taalnative Task-helpers. Gebruik de RunAPI CLI voor shellautomatisering, lokale controles en het debuggen van Callbacks. Voor exacte verzoeksvelden, Task-antwoorden en fouten gebruikt u de API-referentie.