Saltar al contenido principal
Usa el modo background cuando una respuesta pueda tardar mucho en completarse, como en el uso de herramientas de varios pasos o tareas de generación grandes. La API responde de inmediato con una respuesta en cola, y puedes recuperar el resultado más tarde mediante sondeo o streaming.

Crear una respuesta en segundo plano

Establece background en true y stream en false. La API crea la respuesta, comienza a procesarla de forma asíncrona y responde de inmediato con status: "queued".
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: 'Write a 500-word essay about the history of the internet.',
  background: true,
  stream: false,
}, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });

const response = result.createResponseResponse;
console.log(response.id, response.status); // resp_abc123 queued
Guarda el id para recuperar el resultado más tarde.

Sondear para obtener el resultado

Llama a GET /responses/{response_id} hasta que el estado alcance un estado terminal.
let polled = await mka1.llm.responses.get({ responseId: response.id });

while (polled.status === 'queued' || polled.status === 'in_progress') {
  await new Promise(r => setTimeout(r, 2000));
  polled = await mka1.llm.responses.get({ responseId: response.id });
}

console.log(polled.status); // completed
console.log(polled.output);
Una respuesta pasa por estos estados mientras se procesa:
EstadoSignificado
queuedLa solicitud está esperando ser procesada
in_progressEl modelo está generando la salida
completedLa generación finalizó correctamente
failedOcurrió un error durante el procesamiento
incompleteLa respuesta se interrumpió (por ejemplo, límite de tokens)
cancelledLa respuesta fue cancelada antes de completarse
Sondea a un intervalo razonable (por ejemplo, cada dos segundos) hasta que el estado ya no sea queued o in_progress.

Recibir eventos de una respuesta en segundo plano

Si quieres actualizaciones en tiempo real en lugar de sondeo, recupera la respuesta con stream en true. La API devuelve eventos enviados por el servidor a medida que se procesa la respuesta.
const stream = await openai.responses.retrieve(response.id, {
  stream: true,
});

for await (const event of stream) {
  console.log(event.type);
}
Los eventos llegan a medida que se producen. El stream se cierra tras un evento terminal como response.completed o response.failed. Si la respuesta ya se completó cuando llamas a este endpoint, recibes un solo evento terminal con la respuesta final y el stream se cierra inmediatamente.

Recibir eventos al momento de la creación

También puedes recibir eventos directamente al crear una respuesta en segundo plano estableciendo tanto background como stream en true.
const stream = await openai.responses.create({
  model: 'gpt-5',
  input: 'Write a 500-word essay about the history of the internet.',
  background: true,
  stream: true,
});

for await (const event of stream) {
  console.log(event.type);
  // response.queued → response.created → ... → response.completed
}
El primer evento es response.queued, seguido de response.created, eventos intermedios como response.output_text.delta, y finalmente un evento terminal como response.completed. Esto es útil cuando quieres mostrar el progreso en una interfaz de usuario mientras el trabajo se ejecuta en segundo plano. Si el cliente se desconecta, la respuesta sigue procesándose y puede recuperarse más tarde.

Cancelar una respuesta en segundo plano

Si ya no necesitas el resultado, cancela una respuesta en cola o en progreso.
const cancelled = await mka1.llm.responses.cancel({
  responseId: response.id,
});

console.log(cancelled.status); // cancelled
El estado de la respuesta cambia a cancelled. Las respuestas que ya han finalizado o fallado no pueden ser canceladas.

Próximos pasos