ES ▾
Obtener clave de API

URL base de la API Codex: Cómo apuntar tu cliente al nuestro

La URL base de la API codex para este servicio es https://api.getcodexapi.com/v1, el ID del modelo es uncensored y tu clave va en un encabezado Bearer estándar. Cualquier SDK o cliente compatible con OpenAI funciona una vez que cambies esos valores.

Actualizado

Un cable brillante que conecta un portátil a un cubo de servidor, ilustrando cómo apuntar un cliente a una URL base de API

Puntos clave

  • URL base: https://api.getcodexapi.com/v1 (incluye /v1, omite la ruta del endpoint).
  • El ID del modelo es uncensored y la autenticación es Authorization: Bearer con tu clave.
  • Prueba la conexión primero con GET /v1/models antes de conectar una aplicación más grande.
  • La mayoría de los fallos provienen de un /v1 duplicado, una ruta extraña o una clave incorrecta.

Los tres valores que necesitas

Cada cliente compatible con OpenAI solicita las mismas tres cosas. Aquí están para este servicio.

AjusteValor
URL basehttps://api.getcodexapi.com/v1
Clave de APITu clave de la página de clave de API
Modelouncensored

La clave se envía como Authorization: Bearer YOUR_KEY. Los dos endpoints que puedes llamar son POST /v1/chat/completions y GET /v1/models. Este es un servicio independiente que ejecuta un único modelo de pesos abiertos, no el Codex de OpenAI, así que no pegues el endpoint propio de OpenAI ni una clave de OpenAI en la misma configuración.

Verifica la conexión con curl

Antes de editar cualquier configuración de aplicación, confirma que la clave y la URL funcionan desde una terminal. Listar modelos es la comprobación más barata, ya que no necesita un prompt:

curl https://api.getcodexapi.com/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

Deberías obtener una lista JSON que incluya el modelo uncensored. Luego envía una completación real:

curl https://api.getcodexapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Say hello in five words."}]
  }'

Si ambas llamadas funcionan, el problema en cualquier fallo posterior está en la configuración de tu cliente, no en el servicio. Las cabeceras de respuesta incluyen X-Request-Id, que es útil conservar si alguna vez necesitas rastrear una llamada específica, y X-Balance-USD, que muestra tu crédito restante.

Python con el SDK de OpenAI

El paquete oficial openai toma la URL base en el constructor del cliente. El resto de tu código no cambia.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.getcodexapi.com/v1",
    api_key="YOUR_API_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise assistant."},
        {"role": "user", "content": "Explain what a base URL is in two sentences."},
    ],
)
print(resp.choices[0].message.content)

Si prefieres mantener la configuración fuera del código, el SDK también lee OPENAI_BASE_URL y OPENAI_API_KEY del entorno:

export OPENAI_BASE_URL="https://api.getcodexapi.com/v1"
export OPENAI_API_KEY="YOUR_API_KEY"

Con eso configurado, OpenAI() sin argumentos los toma. Esto es útil porque muchas herramientas de terceros basadas en el SDK heredan las mismas variables sin ningún cambio de código.

Node.js

El SDK de JavaScript usa el mismo nombre de opción, escrito como baseURL.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.getcodexapi.com/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Write a haiku about version control." }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

El streaming se devuelve como eventos enviados por el servidor con stream: true, y el uso se incluye al final. Ten en cuenta que una petición en streaming ocupa una de tus ranuras de concurrencia hasta que finalice la transmisión, por lo que una transmisión que abandones sin cerrar sigue contando contra el límite.

Aplicaciones con pantalla de configuración

Las herramientas de escritorio y editores suelen etiquetar el campo de una de estas tres formas: "Base URL", "API Base" o "endpoint compatible con OpenAI". Todos quieren la misma cadena. Algunas notas que ahorran tiempo:

  • Selecciona el tipo de proveedor OpenAI o "OpenAI compatible personalizado", no uno específico del proveedor.
  • Escribe el nombre del modelo a mano si la app tiene un cuadro de texto libre. uncensored es el ID exacto.
  • Si la app tiene un botón de "probar conexión", suele llamar a la lista de modelos, que esta API soporta.
  • Algunas apps almacenan en caché la lista de modelos de un proveedor anterior. Elimina la entrada antigua y añade una nueva si el menú desplegable se ve incorrecto.

Para un ejemplo práctico en un editor específico, consulta la guía para conectar Cursor, o la página de la API de codificación para la visión general. La referencia completa de parámetros está en la documentación de la API.

Una vez que la conexión funciona, guarda los valores exactos en algún lugar donde puedas encontrarlos de nuevo: la URL, el nombre del modelo y la fecha en que creaste la clave. Los equipos suelen perder una hora después a causa de una copia de la configuración que aún contiene un valor antiguo. Un único archivo de ejemplo compartido en el repositorio, con un marcador de posición en lugar de la clave real, evita eso.

Errores comunes y soluciones

La URL termina como /v1/v1

Algunos clientes añaden /v1 por su cuenta. Si tus peticiones fallan y el registro del cliente muestra una ruta con /v1/v1/chat/completions, elimina el /v1 de la URL base que ingresaste. También ocurre lo contrario: un cliente que no lo añade lo necesita en tu configuración. El registro de la ruta de la petición resuelve la duda rápidamente.

Pones el endpoint completo en la URL base

La URL base termina en /v1. No ingreses /chat/completions allí. El SDK añade la ruta para cada llamada.

Una barra final o un error tipográfico en el host

La mayoría de los SDKs toleran una barra final, pero algunas herramientas antiguas construyen rutas por concatenación simple y terminan con una doble barra. Elimínala si ves respuestas 404 extrañas.

Clave incorrecta o la clave de otro servicio

Una clave de OpenAI no funcionará aquí, y la nuestra no funcionará allí. Los errores de autenticación casi siempre significan un problema de copiar y pegar, como un carácter faltante o un espacio al final.

Funciona en curl pero no en tu aplicación

Si curl tiene éxito y la aplicación falla con la misma URL y clave, la diferencia está en el entorno. Verifica si la aplicación se ejecuta detrás de un proxy o dentro de un contenedor sin acceso de salida, si lee una variable de entorno antigua como un OPENAI_BASE_URL obsoleto dejado de otro proyecto, y si un archivo de configuración sobrescribe el valor que configuraste en el código. Imprimir la URL final que el cliente llamará, justo antes de la petición, resuelve la mayoría de estos casos en un minuto.

HTTP 429

Esto significa que se alcanzó un límite. El código de error rate_limited se refiere a peticiones por minuto, y concurrency a demasiadas peticiones a la vez. Una clave completa permite 8 peticiones concurrentes y 300 por minuto; una clave de prueba permite 2 y 60. En caso de sobrecarga temporal también recibes un 429 con una cabecera Retry-After: 5, así que espera cinco segundos y vuelve a intentarlo.

LangChain y mantener la URL en un solo lugar

Los frameworks basados en el cliente de OpenAI toman los mismos valores. En la integración de OpenAI de LangChain, los argumentos se nombran así:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="uncensored",
    base_url="https://api.getcodexapi.com/v1",
    api_key="YOUR_API_KEY",
)
print(llm.invoke("Name three uses of a base URL.").content)

Independientemente del framework, no disperses la URL por tu código. Ponla en una variable de entorno o en un archivo de configuración, y léela desde allí. De esa forma, cambiar entre una clave de prueba y una de producción, o entre máquinas, implica modificar una sola línea. También mantiene las claves fuera de tu repositorio: almacena la clave en una variable de entorno o en un gestor de secretos, nunca en un archivo guardado.

Si buscabas el endpoint propio de OpenAI para sus productos Codex, este no es. Su URL base y autenticación están documentadas por OpenAI, así que sigue su documentación actual para eso. La dirección en esta página pertenece a un servicio independiente y solo acepta claves emitidas aquí.

Lo que puedes enviar una vez conectado

El endpoint admite streaming, llamadas a funciones (tools, tool_choice, con los resultados devueltos como mensajes de role: "tool") y modo JSON a través de response_format: {"type": "json_object"}. Los parámetros temperature, top_p, stop, seed y las penalizaciones se pasan directamente. La ventana de contexto es de 100.000 tokens para el prompt más la completación, y el cuerpo máximo de la petición es de 8 MB.

Es solo texto. No hay generación de imágenes ni de audio, ni embeddings ni ajuste fino, por lo que una función del cliente que dependa de esas características no funcionará con esta URL base. El uso se factura por token a $0,15 por cada 1M de entrada y $0,50 por cada 1M de salida; la página de precios tiene ejemplos prácticos.

Preguntas y respuestas

¿Cuál es la URL base?

Es https://api.getcodexapi.com/v1. Úsala como URL base en cualquier SDK o aplicación compatible con OpenAI, con el modelo configurado como uncensored.

¿Es este el endpoint oficial de OpenAI Codex?

No. Es una API independiente compatible con OpenAI que ejecuta un modelo de pesos abiertos. No está gestionada por OpenAI ni por ningún otro proveedor de modelos.

¿Por qué obtengo un 404 después de cambiar la URL base?

Normalmente la ruta es incorrecta, ya sea por un /v1 duplicado o porque la ruta del endpoint está incluida en la URL base. Revisa el registro de peticiones de tu cliente y ajústalo.

¿Necesito un SDK especial?

No. Los SDK estándar de OpenAI para Python y Node funcionan, al igual que HTTP plano con curl. Solo cambias la URL base, la clave y el nombre del modelo.

Tu clave está a un formulario de distancia

Crea una cuenta, copia la clave, cambia la URL base. Esa es toda la configuración.

Obtener clave de API