Responses
POST /v1/responses es la OpenAI Responses API: el formato detrás de Codex y de los métodos más recientes del OpenAI SDK. Todos los modelos de texto del catálogo responden en ella.
Una solicitud
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.inferray.com/v1",
apiKey: process.env.INFERRAY_API_KEY,
});
const response = await client.responses.create({
model: "gpt-5.5",
instructions: "Answer in one sentence.",
input: "Why is the sky blue?",
});
console.log(response.output_text);
curl https://api.inferray.com/v1/responses \
-H "Authorization: Bearer $INFERRAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"instructions": "Answer in one sentence.",
"input": "Why is the sky blue?"
}'
input es un string o un array de input items (mensajes con partes de texto, imagen y archivo, outputs anteriores y resultados de function calls). instructions cumple el papel de un mensaje de sistema. max_output_tokens, tools, text.format para structured outputs y reasoning para reasoning effort funcionan igual que en la OpenAI API.
Respuestas almacenadas y conversaciones
Las Responses se almacenan por defecto, así que puedes continuar una conversación sin volver a enviarla:
const first = await client.responses.create({
model: "gpt-5.5",
input: "Pick a random fruit.",
});
const second = await client.responses.create({
model: "gpt-5.5",
previous_response_id: first.id,
input: "What colour is it?",
});
- Una respuesta almacenada se conserva durante 30 días.
- Solo las keys del mismo proyecto pueden leerla o continuar a partir de ella.
- Configura
store: falsecuando no quieras que se conserve la respuesta. En ese caso, tú mismo envías el historial, como lo harías con Chat Completions.
Recupera una respuesta almacenada por su ID:
curl https://api.inferray.com/v1/responses/$RESPONSE_ID \
-H "Authorization: Bearer $INFERRAY_API_KEY"
Leer una respuesta almacenada no se cobra de nuevo.
Compactación
POST /v1/responses/compact reduce una conversación larga a una forma compacta desde la que puedes continuar, lo que ahorra input tokens en agentes que se ejecutan durante muchos turnos. Envía un model y, o bien el input que quieres compactar, o bien un previous_response_id.
Streaming
Con stream: true, la respuesta llega como server-sent events tipados: response.output_text.delta para el texto, y termina con response.completed, que incluye el uso final. Consulta streaming.
No disponible
No es posible cancelar ni eliminar una respuesta, aunque un SDK tenga métodos para hacerlo. Las sesiones Realtime todavía no están disponibles.