Endpoints
Responses
Usa POST /responses con el formato de la Responses API de OpenAI: entrada, instrucciones, herramientas, streaming, razonamiento y uso facturado.
Pruébalo en el playgroundEl endpoint Responses acepta el formato de la Responses API de OpenAI, así que client.responses.create(...) en los SDK oficiales funciona sin cambios. Se ejecuta sobre los mismos modelos que Chat completions. api14 reenvía el cuerpo al proveedor sin modificarlo y factura el usage que devuelve.
POST https://api14.com/api/v1/responses
Authorization: Bearer sk-api14-...
Content-Type: application/json
Petición
| Parámetro | Tipo | Descripción |
|---|---|---|
model | string, obligatorio | Id del modelo, p. ej. openai/gpt-5-mini. |
input | string | array, obligatorio | Un prompt en texto o un array de elementos de entrada (mensajes { role, content }, function_call_output, …). |
instructions | string | Instrucciones a nivel de sistema. |
stream | boolean | Transmite eventos semánticos (response.output_text.delta, response.completed, …) mediante SSE. |
max_output_tokens | integer | Límite superior de tokens generados. |
temperature, top_p | number | Controles de muestreo. |
tools, tool_choice, parallel_tool_calls | Herramientas de función. La búsqueda web también está disponible como herramienta o mediante plugins. | |
text | object | Formato de salida, p. ej. { "format": { "type": "json_schema", "name": "...", "schema": {...} } }. |
reasoning | object | { "effort": "low" | "medium" | "high" }. Consulta Razonamiento. |
provider, models, plugins | Las mismas extensiones de la pasarela que en chat completions. |
La pasarela no almacena tus conversaciones, así que pasa el contexto completo en input en cada llamada. Es posible que no se admitan opciones con estado como previous_response_id.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.chat.completions.create({
"model": "openai/gpt-5-mini",
"messages": [
{
"role": "user",
"content": "Explain vector databases in two sentences."
}
]
});
console.log(result.choices[0].message.content);
El ejemplo anterior usa chat completions. Con el SDK de Node, el equivalente con Responses es así:
const response = await client.responses.create({
model: "openai/gpt-5-mini",
input: "Write a haiku about APIs.",
});
console.log(response.output_text);
Respuesta
{
"id": "resp-1760000000-abc123",
"object": "response",
"created_at": 1760000000,
"model": "openai/gpt-5-mini",
"status": "completed",
"output": [
{
"type": "message",
"role": "assistant",
"content": [{ "type": "output_text", "text": "Requests in flight,\nJSON answers drifting back,\none key opens all." }]
}
],
"usage": {
"input_tokens": 14,
"output_tokens": 22,
"total_tokens": 36,
"input_tokens_details": { "cached_tokens": 0 },
"output_tokens_details": { "reasoning_tokens": 0 },
"cost": 0.0000475
}
}
La pasarela lee usage del objeto final, o del evento response.completed cuando hay streaming, y descuenta cost en USD de tu saldo.
Errores
Los mismos que en chat completions: 400 model_required, 400 invalid_json, 401 invalid_api_key, 402 insufficient_balance, 403 model_not_allowed / plan_required, 404 model_not_found, 413 payload_too_large, 429 rate_limited / daily_limit_reached, 502 upstream_unavailable. Consulta Errores.