Zum Inhalt springen
Entwickler-Ressourcen
Entwickler-Ressourcen

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:

SHELL
npm install @runapi.ai/[email protected]

Dieselbe Modellfamilie ist über den Paketmanager für jede unterstützte Laufzeitumgebung verfügbar:

SHELL
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:

KOTLIN
dependencies {
  implementation("ai.runapi:runapi-suno:0.5.0")
}
XML
<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.

SHELL
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.

JAVASCRIPT
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.

JAVASCRIPT
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

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

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
<?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

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

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

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.

JAVASCRIPT
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。