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

# Exportaciones

> Renderiza vídeos de karaoke en la nube o localmente

Las exportaciones renderizan un karaoke terminado como un archivo de vídeo. Usa `client.exports.create(...)` como punto de entrada principal. Elige `target: "local"` cuando quieras que el SDK renderice directamente en la máquina actual; de lo contrario, la exportación en la nube es la opción predeterminada.

## `client.exports.create(projectId, input, options?)`

Elige el destino de exportación con `target: "cloud" | "local"`.

```ts theme={null}
const cloud = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});
// => ExportOperation

const local = await client.exports.create("prj_abc123", {
  target: "local",
  resolution: "1080p",
  quality: "high",
  outputPath: "./karaoke.mp4",
});
// => { outputPath, fileSize, duration, ... }
```

Usa la nube cuando quieras una exportación asíncrona gestionada. Usa local cuando quieras renderizar directamente en la máquina del caller.

### Campos comunes

| Campo              | Tipo                                  | Descripción                                                                                      |
| ------------------ | ------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `resolution`       | `"540p" \| "720p" \| "1080p" \| "4k"` | Resolución de salida.                                                                            |
| `quality`          | `"low" \| "average" \| "high"`        | Calidad de codificación.                                                                         |
| `fps`              | `30 \| 60`                            | Fotogramas por segundo. El valor predeterminado es `30`. Usa `60` para un movimiento más fluido. |
| `playbackRate`     | `number`                              | Multiplicador de velocidad (p. ej., `0.9`).                                                      |
| `toneFrequency`    | `number`                              | Cambio de tono en semitonos.                                                                     |
| `transparent`      | `boolean`                             | Renderiza con un fondo transparente.                                                             |
| `presetId`         | `string`                              | Aplica un preset antes de renderizar.                                                            |
| `stemVolumes`      | `Record<string, number>`              | Overrides de volumen por stem, con clave por id de stem.                                         |
| `settingsOverride` | `object`                              | Parchea la configuración del proyecto solo para esta exportación.                                |

Usa `fps: 60` para un movimiento más fluido. Las cotizaciones en la nube aplican un multiplicador de créditos de `1.5x` a `60 fps`. Las exportaciones transparentes en la nube a 60 fps están disponibles cuando la duración y la resolución seleccionadas caben en los límites de la nube.

### Ejemplo con volúmenes de stem

```ts theme={null}
const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  stemVolumes: {
    vocals: 0,
    instrumental: 1,
    backing: 0.5,
  },
});
```

### Ejemplo con override de configuración

```ts theme={null}
const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  settingsOverride: {
    trim: { startSeconds: 5, endSeconds: 180 },
    style: {
      background: { type: "color", color: "#101010" },
    },
  },
});
```

Consulta [Referencia de configuración de renderizado](/en/render-settings-reference) para ver la forma completa de `settingsOverride`.

## `client.exports.quote(projectId, input, options?)`

Cotiza los créditos necesarios para una exportación en la nube sin iniciar la exportación.

```ts theme={null}
const quote = await client.exports.quote("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  transparent: false,
});

console.log(quote.creditsRequired, quote.sufficientBalance);
```

Las exportaciones locales se ejecutan en la máquina del caller y no usan créditos de exportación en la nube, por lo que `quote(...)` es solo para exportaciones en la nube.

## `client.exports.list(projectId, input?, options?)`

Lista las exportaciones de un proyecto, con paginación.

```ts theme={null}
const exports = await client.exports.list("prj_abc123", {
  page: 1,
  pageSize: 50,
});
```

<ParamField path="page" type="number">
  Número de página. El valor predeterminado en el servidor es `1`.
</ParamField>

<ParamField path="pageSize" type="number">
  Tamaño de página. El valor predeterminado es `100`. Máximo `100`.
</ParamField>

## `client.exports.get(exportId, options?)`

Obtén una exportación solo por ID, sin conocer el proyecto padre.

```ts theme={null}
const exported = await client.exports.get("exp_xyz");
```

## Exportación local

```ts theme={null}
const result = await client.exports.create("prj_abc123", {
  target: "local",
  resolution: "1080p",
  quality: "high",
  outputPath: "./karaoke.mp4",
  onProgress(progress) {
    console.log(progress.stage, progress.percent);
  },
});

console.log(result.outputPath);
```

Usa `onDependencyProgress` si quieres actualizaciones mientras se instala o verifica la toolchain de renderizado local.

## `client.exports.prepareLocal(projectId, body, options?)`

Devuelve el payload preparado necesario para renderizar una exportación localmente. Úsalo al integrarte con `@youka/remotion` u otro renderer local. El servidor devuelve los inputs de composición, las URLs de assets y los parámetros de renderizado sin poner en cola un render en la nube.

```ts theme={null}
const payload = await client.exports.prepareLocal("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});

// Hand payload off to your local renderer
await renderLocally(payload);
```

<Note>
  `client.exports.prepareLocal(...)` no inicia un render en la nube. No se consume
  compute facturable del lado de Youka.
</Note>

## Esperar a una exportación

Las exportaciones en la nube son asíncronas. Usa `client.exports.wait(...)`:

```ts theme={null}
const operation = await client.exports.create("prj_abc123", {
  resolution: "1080p",
});

const finalized = await client.exports.wait(operation, {
  pollIntervalMs: 3_000,
});
console.log("Download from", finalized.url);
```

## Descargar el resultado

Las exportaciones en la nube terminan con una `url` firmada. Usa el helper integrado para transmitir el archivo al disco. `output` puede ser un directorio o una ruta de archivo completa, y `filename` es opcional:

```ts theme={null}
await client.exports.download(finalized, {
  output: "./exports",
});
```

## Qué sigue

* [Tasks](/es/sdk/tasks) — handles de operación y polling avanzado de tareas
* [Presets](/es/sdk/presets) — configuraciones de render reutilizables
* [Project settings](/es/sdk/project-settings) — parchear la configuración activa de un proyecto
