# Conectar Codex a una API de modelos externa: configuración que se puede comprobar

> Configura un proveedor personalizado de Codex con Responses API, guarda la clave en una variable de entorno y separa fallos de autenticación, modelo, streaming y cuota.

- Source: https://www.aifreeapi.com/es/posts/codex-third-party-api
- Language: es
- Published: 2026-08-25
- Updated: 2026-08-25
- Publisher: AI Free API (https://www.aifreeapi.com)

Una clave válida no basta para que Codex funcione con un proveedor externo. El servicio debe implementar la API Responses, aceptar un identificador de modelo disponible en esa cuenta, aplicar el esquema de autenticación esperado y devolver un flujo que Codex pueda interpretar hasta el final.

La etiqueta «compatible con OpenAI» no demuestra todo eso. Puede referirse únicamente a `/v1/chat/completions`. Añadir `/responses` a una URL no implementa el protocolo que falta; antes de editar la configuración, la documentación oficial del proveedor debe indicar expresamente un endpoint Responses.

También conviene fijar el alcance. Aquí se cambia el proveedor del modelo que usa Codex. MCP conecta herramientas y datos externos, mientras que integrar Meta Ads, un CRM u otra API de negocio es trabajo que Codex puede ayudarte a programar. Son tareas distintas aunque las tres se describan a veces como “integrar una API”.

![Visión completa para configurar un provider seguro, verificar la ruta, interpretar síntomas, probar capacidades y revertir](https://www.aifreeapi.com/posts/es/codex-third-party-api/img/safe-provider-route-overview.webp)

## La compatibilidad es una cadena, no un interruptor

Antes del primer intento, reúne cuatro datos del proveedor:

| Dato | Evidencia suficiente | Señal que no basta |
|---|---|---|
| Base URL de Responses | Página del proveedor que documenta esa ruta | Ejemplo de Chat Completions |
| ID de modelo | ID exacto habilitado para la cuenta y esa ruta | Nombre comercial o alias de otro proveedor |
| Autenticación | Bearer token, header o query documentados | Tener una sesión de ChatGPT abierta |
| Streaming | Respuesta Codex completa o contrato explícito | Respuesta no streaming de otro SDK |

La [referencia actual de configuración de Codex](https://learn.chatgpt.com/docs/config-file/config-reference#configtoml) establece `responses` como único valor admitido de `wire_api`. Por tanto, una comparación de precios o modelos no sirve si el contrato de transporte falla primero.

La cuenta también cambia. La suscripción de ChatGPT no concede saldo, permisos ni límites en un tercero. La facturación, retención, registros, disponibilidad regional y soporte pertenecen al proveedor que recibe la petición.

## Prueba el provider sin reemplazar tu ruta habitual

Las claves `model_provider` y `model_providers` son configuración local de la máquina. Codex las ignora dentro del `.codex/config.toml` del repositorio; deben vivir en `~/.codex/config.toml` o en un profile de usuario situado junto a él.

Un profile independiente permite probar y volver atrás sin mezclar el cambio con sandbox, MCP o reglas existentes. Crea `~/.codex/third-party.config.toml`:

```toml
model = "provider-model-id"
model_provider = "acme"

[model_providers.acme]
name = "Acme Model API"
base_url = "https://api.example.com/v1"
env_key = "ACME_API_KEY"
wire_api = "responses"
```

Los valores del modelo y de la URL son ficticios. Sustitúyelos por los valores literales de la documentación del proveedor. El ID local `acme` debe coincidir en `model_provider` y en la tabla. `openai`, `ollama` y `lmstudio` están reservados y no pueden redefinirse. La [configuración avanzada oficial](https://learn.chatgpt.com/docs/config-file/config-advanced#custom-model-providers) muestra el contrato vigente de los proveedores personalizados.

## El TOML apunta al secreto; no debe contenerlo

`env_key = "ACME_API_KEY"` nombra una variable de entorno. No es el valor de la clave. En macOS, Linux o WSL, inicia Codex desde el mismo shell:

```bash
export ACME_API_KEY="clave-real"
codex --profile third-party
```

En la sesión actual de PowerShell:

```powershell
$env:ACME_API_KEY = "clave-real"
codex --profile third-party
```

No guardes la clave en TOML, un repositorio de dotfiles, `.env.example`, capturas o tickets. El campo literal `experimental_bearer_token` existe, pero la referencia de OpenAI desaconseja su uso y dirige a `env_key`. Si el proveedor requiere headers o parámetros especiales, usa únicamente su forma documentada con `env_http_headers`, `http_headers` o `query_params`.

Una aplicación abierta desde Dock, el menú de Windows o un IDE puede no heredar una variable exportada en otro terminal. Si CLI funciona y Desktop no encuentra la clave, comprueba primero el entorno del proceso que lo inicia; cambiar la base URL no resuelve ese límite.

## Verifica la ruta, no solo el nombre visible

![Guía de decisión por ruta, autenticación, modelo, protocolo y cuota con una prueba de ruta en tres pasos](https://www.aifreeapi.com/posts/es/codex-third-party-api/img/route-decision-guide.webp)

Que Codex muestre el modelo personalizado confirma que leyó el profile. No confirma el destino de red. Para una primera prueba, abre un directorio vacío, ejecuta `codex --profile third-party` y pide una cadena breve y fija sin leer archivos ni llamar herramientas.

La prueba queda demostrada cuando coinciden tres señales:

1. la sesión activa muestra el ID esperado;
2. la respuesta termina sin error de parseo ni reconexión del stream;
3. el panel del proveedor o gateway registra a la misma hora la petición, el modelo, el estado y el uso.

Conserva el request ID y la hora cuando estén disponibles, pero no la clave ni contenido innecesario del prompt. Esta correlación detecta un profile antiguo, aliases de modelo y gateways que reescriben el destino.

Las guías de primera parte sirven dentro de su alcance. DeepSeek, por ejemplo, declara en su [documentación oficial para Codex](https://api-docs.deepseek.com/quick_start/agent_integrations/codex/) que su API admite Responses y explica sus propios modelos. Esa página prueba la ruta de DeepSeek, no la de otro servicio “compatible”.

## El primer síntoma decide dónde mirar

| Síntoma | Propietario probable | Comprobación inicial |
|---|---|---|
| Clave de config desconocida o error TOML | Versión de Codex o sintaxis | `codex --version`, tablas, comillas y referencia vigente |
| Variable inexistente | Entorno del proceso | Lanzar desde el mismo shell o corregir Desktop/IDE |
| 401 / 403 | Credencial, header, proyecto o permisos | Estado de la clave y acceso al modelo en el proveedor |
| 404 / model not found | Base URL o mapeo de modelo | Ruta Responses e ID exactos |
| Error de parseo inmediato | Formato incompatible | Abandonar el endpoint solo Chat Completions |
| Salida parcial o reconexiones | SSE, timeout del intermediario o upstream | Cruzar hora y request ID en ambos registros |
| 429 | Cuenta externa, gateway o límite del modelo | Revisar el sistema que realmente devolvió el estado |

Si el problema confirmado es 429, sigue el [diagnóstico de límites de Codex](/es/posts/codex-rate-limits). Para una petición que queda esperando, usa la [guía de timeout](/es/posts/codex-timeout). Si los valores no se aplican, revisa las [capas y límites de config.toml](/es/posts/codex-config-toml).

Una respuesta de texto correcta tampoco garantiza paridad funcional. La búsqueda web independiente para custom providers parte desactivada; un flag no sustituye el endpoint, el modelo, el runtime ni la política necesarios. Entrada de imágenes, tool calls, reasoning summaries, WebSocket, plugins y funciones cloud se validan por separado cuando el flujo los necesita.

Para un uso ocasional, conserva el profile. Para regresar a la ruta oficial, cierra la sesión personalizada y ejecuta Codex sin `--profile third-party`. Si copiaste la configuración al archivo principal, elimina solo `model`, `model_provider` y la tabla añadida. Borrar todo `~/.codex` puede llevarse autenticación, MCP, reglas, profiles e historial sin reparar un protocolo incompatible.
