Saltar al contenido principal
Utiliza el recurso Extract cuando quieras que la API de MKA1 convierta un documento o imagen subido en un JSON estructurado. Puedes definir el esquema en línea para una solicitud puntual, o guardar primero una plantilla de esquema reutilizable.

Crear un esquema reutilizable

Guarda una plantilla de esquema cuando quieras ejecutar la misma forma de extracción muchas veces.
import { SDK } from '@meetkai/mka1';

const mka1 = new SDK({
  apiKey: '<mka1-api-key>',
  headers: { 'X-On-Behalf-Of': '<end-user-id>' },
});

const schema = await mka1.llm.extract.createSchema({
  name: 'Extracción de factura',
  description: 'Extraer los campos de cabecera de facturas PDF',
  schema: {
    type: 'object',
    properties: {
      invoice_number: { type: 'string' },
      vendor_name: { type: 'string' },
      total_amount: { type: 'number' },
      date: { type: 'string', format: 'date' },
    },
    required: ['invoice_number', 'total_amount'],
  },
  metadata: {
    document_type: 'invoice',
  },
});

console.log(schema.id); // por ejemplo, "schema_invoice_123"
Esto devuelve un ID de esquema como schema_invoice_123.

Extraer con el esquema guardado

Utiliza el ID del esquema guardado para extraer datos de un archivo. La especificación OpenAPI admite multipart/form-data para esta solicitud.
const file = Bun.file('./invoice.pdf');

const result = await mka1.llm.extract.extractWithSchema({
  schemaId: 'schema_invoice_123',
  extractWithSchemaRequestBody: {
    model: 'gpt-5',
    prompt: 'Extrae los campos estructurados de la factura.',
    file,
  },
});

console.log(result.data);
Una respuesta exitosa devuelve un objeto JSON con:
  • success
  • data que contiene los campos extraídos
  • metadata sobre la ejecución de la extracción

Usar un esquema en línea para trabajos puntuales

Si no necesitas reutilizar el esquema, llama a POST /api/v1/llm/extract en su lugar. Proporciona tu esquema JSON en línea junto con los campos de la solicitud de extracción. Nota: en la especificación OpenAPI, este endpoint está definido como application/json (el campo file se envía como una cadena codificada en binario).
const file = Bun.file('./invoice.pdf');

const result = await mka1.llm.extract.extract({
  model: 'gpt-5',
  prompt: 'Extrae el número de factura y el total.',
  schema: {
    type: 'object',
    properties: {
      invoice_number: { type: 'string' },
      total_amount: { type: 'number' },
    },
    required: ['invoice_number', 'total_amount'],
  },
  file,
});

console.log(result.data);
Utiliza el flujo de esquema reutilizable cuando quieras un contrato estable entre muchos archivos.

Administrar esquemas guardados

El recurso Extract también te permite:
  • Obtener un esquema guardado por ID.
  • Actualizar un esquema guardado.
  • Eliminar un esquema guardado.
Utiliza estos endpoints cuando tu contrato de extracción cambie con el tiempo y necesites mantener el esquema sincronizado.