El cambio en una línea
Los SDK de OpenAI envían solicitudes a OpenAI por defecto, pero aceptan una URL base. Apúntala a otro proveedor y usa la clave y los nombres de modelo de ese proveedor; el resto del código no cambia.
from openai import OpenAIclient = OpenAI( base_url="https://api.zurelay.com/v1", # the only line that changes api_key="YOUR_ZURELAY_KEY",)reply = client.chat.completions.create( model="claude-sonnet-5-5", messages=[{"role": "user", "content": "Hello"}],)print(reply.choices[0].message.content)Lo mismo funciona en TypeScript con baseURL, y en herramientas que piden una "URL base de OpenAI" o un "endpoint personalizado": OpenCode, Continue, Cline, Open WebUI y muchas más. Las guías de integración tienen los ajustes de cada una. Muchas herramientas también leen las variables de entorno OPENAI_BASE_URL y OPENAI_API_KEY, así que el cambio no requiere nada de código.
URLs base de los principales proveedores
Normalmente la URL base termina en /v1, y el SDK le añade /chat/completions. Algunos proveedores usan otras rutas, así que cópialas exactamente:
| Proveedor | URL base |
|---|---|
| OpenAI | https://api.openai.com/v1 |
| Google Gemini | https://generativelanguage.googleapis.com/v1beta/openai/ |
| DeepSeek | https://api.deepseek.com |
| xAI (Grok) | https://api.x.ai/v1 |
| Zurelay | https://api.zurelay.com/v1 |
| OpenRouter | https://openrouter.ai/api/v1 |
| Groq | https://api.groq.com/openai/v1 |
| Ollama | http://localhost:11434/v1/ |
La URL de cada proveedor, con un ID de modelo y qué sirve cada endpoint, está en la lista de URLs base compatibles con OpenAI, leída de la documentación de cada proveedor el 26 de octubre de 2026.
Qué se mantiene
- Mensajes, system prompts y streaming.
- Llamada a herramientas y salida estructurada con un esquema JSON.
- Imágenes y otros archivos en el mensaje, para los modelos que los leen.
- El bloque de uso, para que la contabilidad de tokens funcione igual.
Qué comprobar antes de cambiarte
- Nombres de modelos. Cada proveedor tiene sus propios IDs; lístalos con
GET /v1/models. - Qué APIs ofrece. Muchos proveedores ofrecen Chat Completions pero no las APIs Responses, Realtime, embeddings o batch de OpenAI. Zurelay ofrece Chat Completions, imágenes, video y voz, y la Messages API de Anthropic para Claude.
- Parámetros adicionales. Los niveles de razonamiento, los controles de caché y los límites de muestreo varían según el modelo. Un buen proveedor documenta cuáles acepta cada modelo.
- ¿Es el modelo que dice ser? Algunos proveedores baratos sirven un modelo más antiguo o más económico bajo un nombre más nuevo. Tienes cinco comprobaciones rápidas en qué venden realmente las APIs de IA baratas.
Cuando el cambio falla
- 404 Not Found. La base URL incluye el endpoint (
.../v1/chat/completions) o le falta la ruta propia del proveedor. Usa solo la base URL. - 401 Unauthorized. La clave pertenece a otro proveedor o, en Model Studio de Alibaba, a otra región.
- Model not found. Los IDs de modelo cambian entre proveedores para un mismo modelo:
claude-opus-5-5en Anthropic,anthropic/claude-opus-5en OpenRouter, el nombre de tu despliegue en Azure. - 400 en un parámetro. Algunos proveedores rechazan o ignoran parámetros que la API de OpenAI acepta, como
response_formaten la capa de compatibilidad de Anthropic. Quítalo o pásate a un proveedor que lo admita.
APIs compatibles con Anthropic
Claude Code y los SDK de Anthropic usan en cambio la Messages API de Anthropic y leen ANTHROPIC_BASE_URL. Varios proveedores ofrecen también esa API, entre ellos DeepSeek, Moonshot, Z.ai, MiniMax y Zurelay; sus URL nunca terminan en /v1. La lista los reúne, y precios de Claude Code compara cuánto cuesta Claude Code en cada plan y en la API.
Por qué cambiarse
Una sola clave compatible con OpenAI da acceso a modelos de muchos laboratorios, así que comparar Claude, GPT, Gemini y DeepSeek con tus propios prompts es solo cambiar el nombre del modelo, igual que pasarte a uno más barato. Consulta los modelos y precios.