For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /docs/developers/files/uploading.md.

Subir archivos

Subida básica

const files = new KivoxFiles(kivox);

const file = await files.upload({
    workspaceId,
    purpose: "chat",
    filename: "factura.pdf",
    mimeType: "application/pdf",
    data: pdfBytes, // Blob, ArrayBuffer o ArrayBufferView
});
Integrando directamente contra la API

Sin un SDK, el equivalente son tres solicitudes por separado: POST /v1/workspaces/{workspace_id}/files/upload-url para obtener la URL firmada, una subida directa hacia esa URL, y PATCH /v1/files/{file_id} para reportar el resultado a Kivox. Ver la arquitectura completa en Concepto y arquitectura.

De dónde vienen los bytes

En TypeScript, data acepta un Blob, un ArrayBuffer o cualquier ArrayBufferView (Uint8Array, Buffer, DataView). En el navegador, el caso más común es un objeto File de un <input type="file">. En Node o Bun, típicamente un Buffer leído del sistema de archivos.

El tamaño se calcula automáticamente cuando puede derivarse de data; solo es necesario pasarlo explícitamente si la fuente de datos no expone un tamaño confiable de antemano.

Seguir el progreso

const files = new KivoxFiles(kivox);

await files.upload({
    workspaceId,
    purpose: "rag",
    filename: "manual.pdf",
    mimeType: "application/pdf",
    data,
    onProgress: ({ percent }) => console.log(`${percent?.toFixed(0) ?? "?"}%`),
});

Para archivos grandes, la subida se divide automáticamente en bloques enviados en paralelo; el progreso reportado refleja ese avance agregado.

Esperar a que el archivo esté listo

Los archivos con propósito rag, o cualquier documento que requiera extracción de texto, pasan por un procesamiento asíncrono después de subirse.

const files = new KivoxFiles(kivox);

const file = await files.upload({
    workspaceId,
    purpose: "rag",
    filename: "manual.pdf",
    mimeType: "application/pdf",
    data,
    waitUntilReady: true,
    waitOptions: { timeoutMs: 60_000 },
});

// file.status === 'ready' aquí, o la promesa ya rechazó
Sin SDK: sondeo manual

El equivalente es consultar GET /v1/files/{file_id} en un intervalo regular hasta que status sea ready, upload_failed o processing_failed.

Si su aplicación solo necesita registrar el archivo y usarlo más tarde, omita la espera y consulte el estado por separado cuando lo necesite.

Verificación de integridad

Puede adjuntar un checksum SHA-256 calculado por su aplicación antes de la subida, para verificación de integridad posterior.

const files = new KivoxFiles(kivox);

await files.upload({
    workspaceId,
    purpose: "asset",
    filename: "logo.png",
    mimeType: "image/png",
    data,
    checksumSha256: computedChecksum,
});