SDKs
Instale un SDK de RunAPI con tipos, autentíquelo con una clave de API y elija el ciclo de vida de Task adecuado para su aplicación.
Los SDKs de RunAPI proporcionan clientes tipados para las familias de modelos compatibles en JavaScript, Python, PHP, Java, Ruby y Go. Elija el paquete del lenguaje correspondiente a la familia de modelos que utiliza su aplicación.
Instalar un SDK de modelo
Instale el paquete que coincida con su idioma y familia de modelos. Por ejemplo, instale el SDK de JavaScript de Suno:
npm install @runapi.ai/[email protected]
La misma familia de modelos está disponible a través del gestor de paquetes para cada entorno de ejecución compatible:
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]
Para Java, agregue el módulo Suno con Gradle o Maven:
dependencies {
implementation("ai.runapi:runapi-suno:0.5.0")
}
<dependency>
<groupId>ai.runapi</groupId>
<artifactId>runapi-suno</artifactId>
<version>0.5.0</version>
</dependency>
Autenticar el cliente
Establezca RUNAPI_API_KEY en el entorno antes de crear un cliente. El SDK utiliza una Clave de API de RunAPI para el mismo contexto de cuenta que sus solicitudes REST y el flujo de trabajo de la CLI.
export RUNAPI_API_KEY="runapi_..."
Cree y rote claves en la Guía de Autenticación. Guarde las claves en su administrador de secretos en lugar del código fuente de la aplicación.
Trabajar con archivos y cargas
Cada cliente de proveedor expone los recursos files persistentes y uploads multiparte
desde su paquete principal. El método files.create existente
sigue creando una URL temporal; use files.createFile en JavaScript,
Java y PHP, files.create_file en Python y Ruby, o
Files.CreateFile en Go para crear un objeto File persistente.
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);
Usa uploads.create, addPart, complete y cancel cuando una solicitud
se divida en Parts. Python y Ruby usan add_part; Go usa AddPart.
Consulta Files and Uploads para conocer los límites, los
ejemplos REST y el ciclo de vida completo.
Transcribir audio de forma síncrona
El SDK de transcripción de OpenAI sube un archivo de audio local y devuelve la transcripción completada en la misma solicitud. Los formatos de respuesta JSON devuelven un objeto nativo del lenguaje; los formatos de texto, SRT y VTT devuelven la cadena de respuesta exacta.
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",
});
Consulte la referencia de la API de Transcripción de audio para conocer los formatos de archivo, los campos específicos de cada modelo y los formatos de respuesta.
Trabajar con tareas asíncronas
Muchas operaciones de medios son asíncronas. Use create para enviar una Tarea
y recibir su id inmediatamente, get para recuperar su estado actual, o
run para enviar y sondear hasta que alcance un estado terminal. En un controlador de
solicitudes web, prefiera create más una devolución de llamada o un sondeo posterior con get
para que la solicitud no mantenga un trabajador abierto.
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()
);
Reutilizar un Style Persona
Crea un Style Persona a partir de una URL de audio pública y reutiliza el
persona.id devuelto con las cuatro operaciones de música compatibles. persona_type:
"style" aplica características reutilizables de género y estado de ánimo. No
garantiza la clonación de la voz de la grabación original, la preservación sin pérdidas de
su estilo ni ninguna similitud particular con el audio fuente.
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,
});
Elegir el siguiente flujo de trabajo
Usa un SDK cuando tu aplicación se beneficie de constructores de solicitudes tipadas y helpers de Task nativos del lenguaje. Usa la RunAPI CLI para automatización de shell, comprobaciones locales y depuración de devoluciones de llamada. Para conocer los campos exactos de solicitud, las respuestas de Task y los errores, usa la Referencia de la API.
Vidu Q4
Los paquetesViduproporcionan recursos de imagen a video y de referencia a video con asistentes de creación, recuperación y tareas asincrónicas. Utilice vidu-q4-image-to-video o vidu-q4-reference-to-video para el recurso correspondiente. Los nombres de los paquetes son @runapi.ai/vidu paraJavaScript, runapi-vidu paraPythonyRuby, runapi-ai/vidu paraPHP, ai.runapi:runapi-vidu paraJavay github.com/runapi-ai/vidu-sdk/go porGo.
Consulta los requisitos de imágenes de referencia y MP3 en la guía de la API de tareas。 Consulta también Precios de imagen a vídeo · Precios de referencias a vídeo。