Migrar de OpenRouter a HiWay en 5 minutos
Un paso a paso concreto con código before/after completo
Migrar de OpenRouter a HiWay2LLM lleva 5 minutos. Código before/after completo en Python y Node.js, lo que se rompe, lo que sigue igual.
Migrar de OpenRouter a HiWay2LLM es una de las migraciones más pequeñas en infra moderna. Cambias un endpoint compatible OpenAI por otro. Tu SDK no cambia. Tu código de streaming no cambia. Tu tool use no cambia.
Lo que cambia: aportas tus propias claves de proveedor (BYOK), tu facturación se vuelve transparente, y los nombres de modelos pasan del formato author/model de OpenRouter a IDs de modelos directos.
Aquí tienes la ruta completa, cronometrada.
Los 5 pasos
- Registro en HiWay2LLM (60 segundos).
- Añadir tus claves de proveedor — Anthropic, OpenAI, Google, Mistral, lo que uses (2 minutos).
- Generar tu API key de HiWay (30 segundos).
- Cambiar
base_urly la API key en tu código, actualizar los nombres de modelos (1 minuto). - Lanzar tu test suite existente, verificar que nada se ha roto (1 minuto).
Eso es todo. El resto de este post es código.
Paso 1: Registro
Vete a app.hiway2llm.com, crea una cuenta. Sin tarjeta bancaria para el plan Free (2 500 requests/mes). Confirma tu email.
Paso 2: Añadir tus claves de proveedor
En el dashboard, ve a Providers y pega tus claves ya existentes:
- Anthropic (para los modelos Claude)
- OpenAI (para GPT y los modelos o-series)
- Google (para Gemini)
- Mistral, Groq, DeepSeek, xAI, Cerebras — opcionales
Tus claves se almacenan cifradas. Nunca salen de nuestra infra UE-hosted. HiWay las usa para llamar a los proveedores en tu nombre; los proveedores te facturan directamente al precio wholesale.
Este es el paso BYOK. Si vienes de OpenRouter, nunca has necesitado cuentas de proveedor — OpenRouter pagaba. Créalas ahora si hace falta; son 30 segundos de signup por proveedor.
Paso 3: Generar tu API key de HiWay
En el dashboard, ve a API Keys → Create new key. Dale un nombre (ej. production-web), cópiala. Tiene esta pinta:
hw_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Guárdala en tu secret manager o tu .env. No la commitees nunca.
Paso 4: Cambiar tu código
Aquí tienes todo el cambio de código. Como HiWay es compatible OpenAI, cualquier SDK que hable con OpenAI funciona sin modificar — solo cambias base_url y la API key.
Python (OpenAI SDK)
Antes (OpenRouter):
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4.6",
messages=[{"role": "user", "content": "Hello"}],
)
Después (HiWay):
from openai import OpenAI
client = OpenAI(
base_url="https://app.hiway2llm.com/v1",
api_key=os.environ["HIWAY_API_KEY"],
)
response = client.chat.completions.create(
model="claude-sonnet-4-6", # ID directo, sin prefijo author/
messages=[{"role": "user", "content": "Hello"}],
)
Dos líneas cambiadas. Imports del SDK, streaming, tool use, structured outputs — todo idéntico.
Node.js (OpenAI SDK)
Antes:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
});
const response = await client.chat.completions.create({
model: "openai/gpt-4.1",
messages: [{ role: "user", content: "Hello" }],
});
Después:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://app.hiway2llm.com/v1",
apiKey: process.env.HIWAY_API_KEY,
});
const response = await client.chat.completions.create({
model: "gpt-4-1",
messages: [{ role: "user", content: "Hello" }],
});
Vercel AI SDK
Antes:
import { createOpenAI } from "@ai-sdk/openai";
const openrouter = createOpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
});
const result = await streamText({
model: openrouter("anthropic/claude-sonnet-4.6"),
prompt: "Hello",
});
Después:
import { createOpenAI } from "@ai-sdk/openai";
const hiway = createOpenAI({
baseURL: "https://app.hiway2llm.com/v1",
apiKey: process.env.HIWAY_API_KEY,
});
const result = await streamText({
model: hiway("claude-sonnet-4-6"),
prompt: "Hello",
});
LangChain (Python)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://app.hiway2llm.com/v1",
api_key=os.environ["HIWAY_API_KEY"],
model="claude-sonnet-4-6",
)
curl
curl https://app.hiway2llm.com/v1/chat/completions \
-H "Authorization: Bearer $HIWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "Hello"}]
}'
Sin tarjeta de crédito
Lo que sigue igual
- SDK: mantén el SDK compatible OpenAI que tienes. Sin reescritura.
- Streaming:
stream: truefunciona idéntico. - Tool use / function calling: mismo schema.
- Structured outputs / JSON mode: igual.
- Objeto usage:
response.usage.prompt_tokensycompletion_tokensse devuelven como esperas. - Códigos de error: 429, 500, 502, 504 significan lo mismo.
Lo que cambia
Nombres de modelos
OpenRouter usa author/model (ej. anthropic/claude-sonnet-4.6). HiWay usa IDs directos (ej. claude-sonnet-4-6). Puedes encontrar el ID exacto para cualquier modelo soportado en el catálogo de modelos del dashboard.
Una tabla de mapeo rápida para los más habituales:
| OpenRouter | HiWay |
|---|---|
anthropic/claude-opus-4.7 | claude-opus-4-7 |
anthropic/claude-sonnet-4.6 | claude-sonnet-4-6 |
anthropic/claude-haiku-4.6 | claude-haiku-4-6 |
openai/gpt-4.1 | gpt-4-1 |
openai/gpt-4.1-mini | gpt-4-1-mini |
google/gemini-2.5-pro | gemini-2-5-pro |
mistralai/mistral-large | mistral-large |
Facturación
OpenRouter te facturaba directamente, markup incluido. HiWay no factura la inferencia — tus proveedores te facturan directamente al precio wholesale, y le pagas a HiWay una suscripción flat (Free, Build a 15 €, Scale a 39 €, o Business a 249 €/mes según el volumen). Dos facturas en lugar de una. Un poco más de setup, mucha más transparencia — y el smart routing recorta típicamente un 40-85% sobre la parte de inferencia encima.
Smart routing (opcional)
OpenRouter rutea hacia el modelo que especificas. HiWay puede hacer lo mismo — o, si pasas el ID mágico auto, elige el modelo óptimo por request según la complejidad en menos de 1 ms:
response = client.chat.completions.create(
model="auto", # HiWay elige el tier correcto
messages=[{"role": "user", "content": "Hello"}],
)
Los saludos cortos van a Haiku. El razonamiento duro a Opus. Todo lo intermedio a Sonnet. Ves qué modelo se ejecutó realmente en los metadata de la respuesta.
Es opcional. Si quieres control total, especifica los nombres de modelos explícitamente.
Paso 5: Verificar
Lanza tu test suite existente contra la nueva base_url. Las assertions que pasaban con OpenRouter deberían pasar idénticas con HiWay — misma superficie API, misma semántica.
Un smoke test rápido:
from openai import OpenAI
client = OpenAI(
base_url="https://app.hiway2llm.com/v1",
api_key=os.environ["HIWAY_API_KEY"],
)
r = client.chat.completions.create(
model="claude-haiku-4-6",
messages=[{"role": "user", "content": "Responde OK."}],
)
assert "ok" in r.choices[0].message.content.lower()
print("HiWay funciona.")
Si imprime HiWay funciona., tu migración está terminada.
Plan de rollback
Si algo falla, repunta base_url hacia https://openrouter.ai/api/v1 y tu app vuelve a OpenRouter al instante. HiWay no te hace lock-in — todo el sentido del BYOK es que tus claves de proveedor son tuyas, y cualquier router compatible OpenAI puede usarlas.
Trampas clásicas
- Typos en el ID del modelo: el formato es
claude-sonnet-4-6(guiones, sin puntos, sin prefijo author). El dashboard tiene un botón copy al lado de cada uno. - Clave de proveedor que falta: si llamas a
claude-sonnet-4-6pero no has añadido tu clave de Anthropic, HiWay devuelve un mensaje de error claro diciéndote qué proveedor falta. - Rate limits: aplican los rate limits de tu proveedor, no los de HiWay. Si pegabas en el quota compartido de OpenRouter, ahora pegarás en tu propio quota de Anthropic. Generalmente tienes más margen, no menos.
- Stats de uso: la UI de uso por request de OpenRouter está en su dashboard. La de HiWay está en el nuestro. Si tenías dashboards BI apuntando a OpenRouter, repúntalos.
El takeaway
Cinco minutos. Un cambio de base_url. Mismo SDK. Si la migración tarda más, algo va mal — generalmente una clave de proveedor olvidada o un typo en el ID del modelo.
La ganancia más grande es lo que pasa después: sin markup en la inferencia, facturación transparente de cada proveedor, smart routing opcional, y claves BYOK que te siguen si te marchas algún día.
Próximo: por qué construimos HiWay en primer lugar — la founder's story.
Was this useful?
Comments
Be the first to comment.