Cualquier biblioteca oficial de OpenAI funciona; solo cambia base_url. Los ejemplos usan gpt-5.6-sol; para el paquete Astra usa gpt-astra.
Chat Completions
base_url debe incluir /v1 y no debe terminar con /. La biblioteca añade /chat/completions por sí misma.
Las respuestas siguen exactamente el esquema de OpenAI: id es chatcmpl-..., usage tiene prompt_tokens, completion_tokens y completion_tokens_details.reasoning_tokens. El cupo se cobra exactamente usage.total_tokens.
Responses API
Codex y los SDK más nuevos usan este protocolo. La configuración de razonamiento está en reasoning.effort.
Esfuerzo de razonamiento
Con Chat Completions usa reasoning_effort (low, medium, high). Sin configurar, el gateway usa high. Para tareas simples establece low para ahorrar tokens:
reasoning_effort es solo para Chat Completions. Con la Responses API usa reasoning: {"effort": ...}; enviar reasoning_effort a /v1/responses se rechaza con “Unsupported parameter”.
Streaming
En preguntas difíciles el modelo puede pensar un rato antes del primer token. Usa stream: true para que la conexión no se corte. stream_options.include_usage hace que el último fragmento lleve usage para que puedas conciliar el cupo tú mismo.
Enviar imágenes (visión)
Las imágenes van en el array content, como URL pública o base64 para archivos locales.
Las imágenes cuestán tokens según su tamaño. Recorta la parte relevante en lugar de enviar una captura de pantalla 4K completa.
subscription devuelve el total en hard_limit_usd; usage devuelve lo usado en total_usage, en centavos (divide entre 100 antes de comparar). La página de verificación hace esto por ti.