Documentation Index
Fetch the complete documentation index at: https://docs.youka.io/llms.txt
Use this file to discover all available pages before exploring further.
Esta guía recorre la ruta más rápida desde un archivo de audio en bruto hasta un video de karaoke renderizado usando @youka/sdk.
Antes de empezar
- Node.js 20 o posterior
- Una clave de API de Youka en
YOUKA_API_KEY (crea una en online.youka.io/account en API keys)
- Un archivo de audio local (
./song.mp3) o una URL remota
Instalación
Crear, esperar, exportar
import { YoukaClient, YoukaRequestError, YoukaTaskError } from "@youka/sdk";
const client = new YoukaClient({
apiKey: process.env.YOUKA_API_KEY!,
});
async function main() {
// 1. Create a project from a local file
const projectOperation = await client.projects.create({
source: { type: "path", path: "./song.mp3" },
lyricsSource: { type: "transcribe" },
});
// 2. Wait for stems and lyrics sync to finish
const { project } = await client.projects.wait(projectOperation);
console.log("Project ready:", project.id, project.title);
// 3. Start an export
const exportOperation = await client.exports.create(project.id, {
resolution: "1080p",
quality: "high",
});
// 4. Wait for the export to finish
const finishedExport = await client.exports.wait(exportOperation);
await client.exports.download(finishedExport, {
output: "./exports",
});
console.log("Export ready:", finishedExport.url);
}
main().catch((error) => {
if (error instanceof YoukaRequestError) {
console.error("Request failed:", error.code, error.status, error.message);
process.exit(1);
}
if (error instanceof YoukaTaskError) {
console.error("Task failed:", error.code, error.status, error.message);
process.exit(1);
}
throw error;
});
client.projects.create() gestiona las subidas para fuentes path, bytes y url.
Para un control de subida de más bajo nivel, usa client.uploads.*.
Tres tipos de fuente
Archivo local
Bytes en memoria
URL remota
const operation = await client.projects.create({
source: { type: "path", path: "./song.mp3" },
});
const fileBuffer = new Uint8Array([/* audio bytes */]);
const operation = await client.projects.create({
source: {
type: "bytes",
data: fileBuffer,
filename: "song.mp3",
},
});
const operation = await client.projects.create({
source: {
type: "url",
url: "https://example.com/song.mp4",
},
});
Qué sigue
- Projects — API completa de projects
- Exports — renderizado local y
client.exports.prepareLocal
- Errors — gestionar
YoukaRequestError y YoukaTaskError
- AI agents — patrones recomendados de polling y reintento