Iniciar sesión·Registrarse
BestRelay

Guía de integración

Conectar con BestRelay: un prefacio y seis capítulos

Dos ajustes lo determinan todo: a dónde envía las solicitudes tu cliente y qué clave incluye en ellas. Esta guía indica los valores exactos para cada protocolo.

Prefacio: qué abarca esta guía

Sea cual sea el cliente que uses, la configuración se reduce a dos datos: la dirección a la que se envían las solicitudes y la clave que las acompaña. Los capítulos siguientes indican los valores para cada protocolo y explican cómo se facturan las llamadas y qué códigos de estado puedes encontrar.

Lee el primer capítulo independientemente de la herramienta que uses; después, pasa al capítulo correspondiente.

I. La clave y la dirección base

Crea una clave en la sección Claves API del panel de control. Todo el tráfico de la API se dirige a un único host, separado del sitio web:

https://api.bestapirelay.com

La forma de indicar el host depende del protocolo que utilice tu cliente:

  • Clientes y SDK compatibles con OpenAI: el host seguido de /v1, con la clave enviada como token Bearer.
  • Clientes de Anthropic como Claude Code y Claude Desktop: el host sin ruta adicional, con la clave en x-api-key o ANTHROPIC_AUTH_TOKEN.
  • Clientes de Gemini: el host sin ruta adicional, con la clave en x-goog-api-key.

II. Llamadas compatibles con OpenAI: cURL, SDK y Codex

Las solicitudes de chat se envían a /v1/chat/completions y las de la API Responses, a /v1/responses. Una primera llamada desde la terminal permite comprobar que la clave funciona:

curl https://api.bestapirelay.com/v1/chat/completions \
  -H "Authorization: Bearer bsr_your_key_here" -H "Content-Type: application/json" \
  -d '{"model": "gpt-6.1-sol", "messages": [{"role": "user", "content": "Describe a well-made fountain pen in one sentence."}]}'

En el código, configura cualquier SDK de OpenAI con la misma URL base. Con el cliente asíncrono de Python, queda así:

import asyncio
from openai import AsyncOpenAI

bestrelay_client = AsyncOpenAI(base_url="https://api.bestapirelay.com/v1", api_key="bsr_your_key_here")

async def ask_the_atelier():
    fountain_pen = await bestrelay_client.chat.completions.create(
        model="gpt-6.1-sol",
        messages=[{"role": "user", "content": "Describe a well-made fountain pen in one sentence."}],
    )
    print(fountain_pen.choices[0].message.content)

asyncio.run(ask_the_atelier())

Codex lee la configuración de su proveedor desde un archivo:

# ~/.codex/config.toml (BestRelay as the provider)
model = "gpt-6.1-sol"            # any GPT id from the rate card
model_provider = "bestrelay"

[model_providers.bestrelay]
name = "BestRelay"
base_url = "https://api.bestapirelay.com/v1"
env_key = "BESTRELAY_API_KEY"      # export BESTRELAY_API_KEY=bsr_your_key_here
wire_api = "responses"             # Codex speaks the Responses API

Identificadores de GPT recomendados: gpt-6.1-sol, gpt-6-astra, gpt-5.6-sol

III. La ruta nativa de Gemini

Gemini CLI usa solo el host como URL base (sin añadir /v1beta) y tu clave de BestRelay como GEMINI_API_KEY:

export GOOGLE_GEMINI_BASE_URL=https://api.bestapirelay.com
export GEMINI_API_KEY=bsr_your_key_here
gemini

Las llamadas directas usan la ruta nativa generateContent, con la clave en un encabezado x-goog-api-key:

curl "https://api.bestapirelay.com/v1beta/models/gemini-3.8-flash:generateContent" \
  -H "x-goog-api-key: bsr_your_key_here" -H "Content-Type: application/json" \
  -d '{"contents": [{"role": "user", "parts": [{"text": "Which printing press came first?"}]}]}'

Los modelos de Gemini solo admiten su protocolo nativo. Para recibir respuestas en streaming, usa :streamGenerateContent?alt=sse; la ruta /v1/chat/completions de estilo OpenAI no permite acceder a ellos.

Identificadores de modelos Gemini que puedes enviar: gemini-3.1-pro, gemini-4-argon, gemini-3.8-flash, gemini-2.5-flash

IV. Claude Code y Claude Desktop

Define dos variables de entorno e inicia Claude Code como de costumbre. La URL base es solo el host, sin /v1:

export ANTHROPIC_BASE_URL=https://api.bestapirelay.com
export ANTHROPIC_AUTH_TOKEN=bsr_your_key_here
claude

En Windows (PowerShell o cmd), define las mismas dos variables con setx y luego abre una nueva terminal:

setx ANTHROPIC_BASE_URL https://api.bestapirelay.com
setx ANTHROPIC_AUTH_TOKEN bsr_your_key_here

Los modelos de Claude solo están disponibles para los clientes oficiales Claude Code y Claude Desktop, y el proveedor de origen exige Claude Code 2.1.285 o posterior. GPT, Gemini y las demás familias funcionan con cualquier cliente o SDK compatible.

V. Cómo se factura una llamada

Cada llamada se cobra una sola vez, una vez finalizada la respuesta, según los tokens de entrada, salida y caché que indique el proveedor y los precios de la tabla de tarifas. No se retiene saldo por adelantado.

Si una llamada se completa correctamente pero no incluye datos de uso, se cobra una estimación de 2,000 tokens de entrada y 2,000 de salida, y así se indica en el registro de movimientos. Si tu cliente se desconecta durante una respuesta en streaming, la llamada se factura igualmente según los datos que indique el proveedor.

Las solicitudes que el proveedor rechaza y las de recuento de tokens se registran con un importe de cero. Una última llamada puede dejar el saldo ligeramente por debajo de cero; a partir de ese momento, las solicitudes devuelven 402 hasta que recargues el saldo.

VI. Códigos de estado que puedes encontrar

Los errores se devuelven en la estructura JSON habitual, con un mensaje redactado por BestRelay:

400
La solicitud no especifica ningún modelo, indica uno desconocido o usa una ruta que no corresponde al protocolo del modelo.
401
No se ha enviado ninguna clave, o la clave es desconocida o no es válida.
402
El saldo se ha agotado; recárgalo para continuar.
403
La cuenta asociada a la clave está suspendida.
404
No existe ninguna ruta en esa dirección.
413
El cuerpo de la solicitud supera los 25 MB.
429
Se han superado las 120 solicitudes por minuto con una misma clave, o ya hay ocho llamadas en curso en una misma cuenta.
502
No se ha podido contactar con el proveedor; no se ha realizado ningún cobro.
503
La conexión con el proveedor para ese modelo aún no está configurada.