Saltar al contenido principal
La API de Respuestas acepta texto, imágenes, audio y archivos en una sola solicitud. Utiliza input estructurado con arreglos de contenido para combinar modalidades.

Tipos de entrada admitidos

TipoTipo de contenidoFormatosEntrega
Textoinput_textTexto planoInline
Imageninput_imageJPEG, PNG, WebP, GIF, TIFFURL, URI de datos base64 o file_id
Audioinput_audioWAV, MP3Base64
Documentoinput_filePDF, DOCX, XLSX, PPTX, RTF, TXT, CSVURL, URI de datos base64 o file_id
Videoinput_fileMP4URI de datos base64 o file_id

Entrada de imagen

Envía una imagen para que el modelo la describa, analice o responda preguntas sobre ella. Proporciona la imagen como una URL, una URI de datos base64 o un file_id previamente subido.

Imagen vía URL

import { SDK } from '@meetkai/mka1';

const mka1 = new SDK({
  bearerAuth: `Bearer ${YOUR_API_KEY}`,
});

const result = await mka1.llm.responses.create({
  model: 'gpt-5',
  input: [
    {
      type: 'message',
      role: 'user',
      content: [
        { type: 'input_text', text: 'Describe what you see in this image.' },
        {
          type: 'input_image',
          image_url: 'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg',
        },
      ],
    },
  ],
}, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });

Imagen vía base64

Codifica la imagen como una URI de datos con el tipo MIME apropiado.
import { readFileSync } from 'fs';

const imageBase64 = readFileSync('photo.jpg').toString('base64');

const result = await mka1.llm.responses.create({
  model: 'gpt-5',
  input: [
    {
      type: 'message',
      role: 'user',
      content: [
        { type: 'input_text', text: 'What is in this photo?' },
        {
          type: 'input_image',
          image_url: `data:image/jpeg;base64,${imageBase64}`,
        },
      ],
    },
  ],
});

Imagen vía file_id

Sube una imagen primero con la API de Archivos, luego haz referencia a ella por su ID.
// Sube la imagen
const uploadResult = await mka1.llm.files.create({
  file: { fileName: 'photo.jpg', content: imageBuffer },
  purpose: 'assistants',
});

// Usa el file_id en una respuesta
const result = await mka1.llm.responses.create({
  model: 'gpt-5',
  input: [
    {
      type: 'message',
      role: 'user',
      content: [
        { type: 'input_text', text: 'Describe this image.' },
        { type: 'input_image', file_id: uploadResult.id },
      ],
    },
  ],
});

Entrada de audio

Envía audio para que el modelo lo procese. El audio se transcribe automáticamente y el modelo responde al contenido hablado. Formatos admitidos: WAV y MP3 (máx 25 MB).
import { readFileSync } from 'fs';

const audioBase64 = readFileSync('recording.wav').toString('base64');

const result = await mka1.llm.responses.create({
  model: 'gpt-5',
  input: [
    {
      type: 'message',
      role: 'user',
      content: [
        {
          type: 'input_audio',
          input_audio: {
            data: audioBase64,
            format: 'wav',
          },
        },
      ],
    },
  ],
}, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });
El modelo transcribe automáticamente el audio y responde al contenido hablado. Por ejemplo, enviar un archivo WAV que contiene “Hello, how are you today?” devuelve:
{
  "status": "completed",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "type": "output_text",
          "text": "Hello! I'm doing well, thank you for asking. I'm here and ready to help you with any questions or tasks you might have. How can I assist you today?"
        }
      ]
    }
  ]
}

Entrada de documentos

Envía documentos para que el modelo los lea y razone sobre ellos. Los PDF y documentos escaneados se procesan automáticamente con OCR — no se necesita configuración adicional.

Documento vía URL

const result = await mka1.llm.responses.create({
  model: 'gpt-5',
  input: [
    {
      type: 'message',
      role: 'user',
      content: [
        { type: 'input_text', text: 'Summarize this document in three bullet points.' },
        {
          type: 'input_file',
          file_url: 'https://example.com/report.pdf',
          filename: 'report.pdf',
        },
      ],
    },
  ],
});

Documento vía base64

Codifica el archivo como una URI de datos. Incluye el tipo MIME para que la API pueda enrutarlo al procesador correcto.
import { readFileSync } from 'fs';

const pdfBase64 = readFileSync('contract.pdf').toString('base64');

const result = await mka1.llm.responses.create({
  model: 'gpt-5',
  input: [
    {
      type: 'message',
      role: 'user',
      content: [
        { type: 'input_text', text: 'What are the key terms in this contract?' },
        {
          type: 'input_file',
          file_data: `data:application/pdf;base64,${pdfBase64}`,
          filename: 'contract.pdf',
        },
      ],
    },
  ],
});

Documentos escaneados y OCR

Los PDF escaneados y las imágenes de documentos se procesan automáticamente. La API utiliza OCR para extraer texto de:
  • Páginas PDF escaneadas (convertidas a imágenes a 150 DPI, luego con OCR)
  • Fotos de documentos (JPEG, PNG, TIFF)
  • Archivos de Office (DOCX, XLSX, PPTX — convertidos a PDF primero, luego OCR)
Los documentos de varias páginas se procesan en paralelo. El texto extraído se devuelve como Markdown y se pasa al modelo para el razonamiento. No se necesitan parámetros especiales — simplemente envía el archivo como input_file y el pipeline se encarga de la detección, conversión y OCR.

Formatos de documento admitidos

FormatoTipo MIMEProcesamiento
PDFapplication/pdfOCR por página a 150 DPI
JPEG / PNG / TIFF / WebP / GIFimage/*OCR directo
Word (.doc, .docx)application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.documentConvertir a PDF, luego OCR
Excel (.xls, .xlsx)application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheetConvertir a PDF, luego OCR
PowerPoint (.ppt, .pptx)application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentationConvertir a PDF, luego OCR
RTFapplication/rtfConvertir a PDF, luego OCR
Texto plano / CSVtext/plain, text/csvLeer directamente
Límite de tamaño: 30 MB por archivo.

Entrada mixta

Combina múltiples tipos de contenido en un solo mensaje. El modelo ve todas las entradas juntas y puede razonar entre ellas.
const result = await mka1.llm.responses.create({
  model: 'gpt-5',
  input: [
    {
      type: 'message',
      role: 'user',
      content: [
        { type: 'input_text', text: 'Compare the chart in the image with the data in the spreadsheet. Are the numbers consistent?' },
        {
          type: 'input_image',
          image_url: 'https://example.com/chart.png',
        },
        {
          type: 'input_file',
          file_url: 'https://example.com/data.xlsx',
          filename: 'data.xlsx',
        },
      ],
    },
  ],
});

Próximos pasos