SDK TypeScript para usar Codex Responses con OAuth, streaming SSE y herramientas upstream.
codex-openai-api es una librería TypeScript para autenticar con OAuth y consumir Codex Responses desde una API simple, tipada y reutilizable.
Incluye soporte para:
- login OAuth y refresh de credenciales
- requests al endpoint Codex Responses
- respuestas en streaming SSE
- herramientas upstream como
web_search - catálogo de modelos
- control explícito de
reasoningEffort
Contrato operativo principal:
codex-auth.json
Úsalo si quieres:
- integrar Codex Responses en una app o servicio TypeScript
- reutilizar credenciales OAuth sin repetir el login manualmente
- trabajar con streaming SSE y tools desde una superficie tipada
- instalar el cliente como paquete npm en otros proyectos
npm install codex-openai-apiTambién puedes consumirlo desde un checkout local:
npm install ../codex-APISi lo instalas desde el repositorio sin publicar, prepare recompila dist/ automáticamente.
import { createCodexAuth, createCodexClient } from "codex-openai-api";
const auth = createCodexAuth();
await auth.login();
const client = createCodexClient({
auth,
defaultInstructions: "Responde en una sola frase.",
});
const result = await client.responses({
model: "gpt-5.4",
input: "Hola",
});
console.log(result.outputText);const result = await client.responses({
model: "gpt-5.4",
input: "Busca una noticia reciente de IA y resúmela en una frase.",
tools: [{ type: "web_search" }],
toolChoice: "auto",
});La librería reenvía estos campos al upstream de Codex casi sin transformación. La principal adaptación es toolChoice, que se serializa como tool_choice en HTTP.
reasoningEffort permite controlar el esfuerzo de razonamiento de forma explícita.
Se serializa como reasoning.effort en el payload de Codex Responses.
const result = await client.responses({
model: "gpt-5.4",
input: "Resume esto en una frase.",
reasoningEffort: "low",
});Expone:
authFileloadCredential()saveCredential(credential)login()getFreshCredential()
Expone:
defaultModeldefaultInstructionsresponsesEndpointusage()listModels({ source })responses({ input, model, instructions, reasoningEffort, tools, toolChoice, includeEvents })streamResponses({ input, model, instructions, reasoningEffort, tools, toolChoice })
responses() devuelve:
statusoutputTextresponseStateeventscuando usasincludeEvents: truebodycuando el upstream responde con error serializable
CODEX_AUTH_FILE: ruta del archivo OAuthCODEX_MODEL: modelo por defecto para requests upstreamCODEX_RESPONSES_URL: endpoint upstream de Codex ResponsesCODEX_INSTRUCTIONS: instrucciones por defectoCODEX_CLIENT_VERSION:client_versionusado para el catálogo live
npm run build
npm run testEl build genera dist/ con JS ESM, d.ts y sourcemaps.
Para publicar una nueva versión:
npm run release:patch
npm run release:minor
npm run release:majorFlujo recomendado:
- corre tests
- actualiza
version - crea el tag
vX.Y.Z - hace push del commit y del tag
- GitHub Actions publica en npm con
NPM_TOKEN - GitHub Actions genera release notes en español automáticamente
- GitHub Actions crea el GitHub Release
Convención recomendada:
- usa siempre tags
vX.Y.Z - para previsualizar las notas antes de publicar puedes correr
npm run release:notes -- vX.Y.Z
Si quieres validar el paquete sin publicar:
npm run release:dry- El acceso al backend upstream depende de que la cuenta autenticada tenga acceso al modelo y a las herramientas solicitadas.
- El proyecto está publicado en npm como
codex-openai-api.