Llama a cualquier modelo con el SDK de OpenAI

· Hyperouter · 3 min de lectura

Hyperouter habla la API de OpenAI. Cualquier SDK de OpenAI funciona en cuanto cambias dos cosas: la URL base y la clave de API. Esta guía hace una llamada de chat y una de imagen en Python y TypeScript.

1. Obtén una clave

Inicia sesión con Google o GitHub y crea una clave de API. Las claves empiezan por sk-hr-v1- y se muestran una sola vez, así que guarda la tuya en una variable de entorno:

export HYPEROUTER_API_KEY="sk-hr-v1-..."

Las solicitudes se pagan con tu saldo prepagado: abre una solicitud de recarga en el panel antes de tu primera llamada. Mantén la clave en tu servidor, nunca en código de navegador ni de móvil.

2. Apunta el SDK a Hyperouter

La URL base es https://api.hyperouter.app/v1.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.hyperouter.app/v1",
    api_key=os.environ["HYPEROUTER_API_KEY"],
)

3. Chat

Indica un modelo con su id de Hyperouter, <provider>/<name>. Esta llamada usa Grok 4.3 de xAI:

res = client.chat.completions.create(
    model="x-ai/grok-4.3",
    messages=[{"role": "user", "content": "Explain idempotency in one sentence."}],
)
print(res.choices[0].message.content)

La respuesta es el chat completion de OpenAI con dos añadidos: provider, el proveedor que atendió la solicitud, y usage.cost, su cargo en USD. Define stream: true para recibir eventos enviados por el servidor, igual que con OpenAI.

Para recurrir a otros modelos cuando fallen todos los proveedores del primero, enuméralos en models. Los SDK de OpenAI lo envían como un campo adicional del cuerpo:

res = client.chat.completions.create(
    model="x-ai/grok-4.3",
    messages=[{"role": "user", "content": "Hello"}],
    extra_body={"models": ["x-ai/grok-4.20-0309-non-reasoning"]},
)

4. Imágenes

La API de imágenes funciona igual. Esta llamada genera una imagen con Grok Imagine:

img = client.images.generate(
    model="x-ai/grok-imagine-image",
    prompt="A lighthouse at dusk",
)
print(img.data[0].url)

El enlace está firmado y es válido durante 24 horas, y GET /v1/generations/{id} firma uno nuevo. qwen/qwen-image-2.0 se llama de la misma manera. En un modelo que responde de forma síncrona, una imagen que no está lista en 90 segundos devuelve 503 con el código timeout y su generation_id; Esperar el resultado explica cómo consultarla periódicamente en su lugar.

Qué sigue