Skip to main content

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

npm install @youka/sdk

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

const operation = await client.projects.create({
  source: { type: "path", path: "./song.mp3" },
});

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