Naar inhoud springen
Developer Resources
Developer Resources

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:

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

Dezelfde modelfamilie is beschikbaar via de pakketbeheerder voor elke ondersteunde runtime:

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

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

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

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);

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.

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",
});

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

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()
);

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.

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,
});

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.