RelayVano

Docs

Connect your tools in a couple of minutes

Use the API host below in place of each vendor's address. The website lives on a different host; clients should always talk to the API host.

Endpoint your client callshttps://api.relayvano.com/v1

Call the API from your language

Install the official SDK and pass our API host as the base URL.

pip install openai
Python
import openai as gateway

voyage = gateway.OpenAI(api_key="rlv_your_key", base_url="https://api.relayvano.com/v1")
leg = voyage.chat.completions.create(model="gpt-6.1-sol", messages=[
    {"role": "user", "content": "Plan a three-stop refactor for my parser"},
])
print(leg.choices[0].message.content.strip())

Same SDK family for JavaScript and TypeScript; keep the key in an environment variable.

npm install openai
Node.js
import { OpenAI } from "openai";

const relay = new OpenAI({ apiKey: process.env.RELAYVANO_KEY, baseURL: "https://api.relayvano.com/v1" });
const reply = await relay.chat.completions.create({
  model: "gpt-6.1-sol",
  messages: [{ role: "user", content: "Suggest a name for a packing-list app" }],
});
console.log(reply.choices[0].message.content);

No SDK needed: a plain HTTP request with a Bearer header works.

Go
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	payload := []byte(`{"model":"gpt-6.1-sol","messages":[{"role":"user","content":"Name a city on the Danube"}]}`)
	req, _ := http.NewRequest("POST", "https://api.relayvano.com/v1/chat/completions", bytes.NewReader(payload))
	req.Header.Set("Authorization", "Bearer "+os.Getenv("RELAYVANO_KEY"))
	req.Header.Set("Content-Type", "application/json")
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	answer, _ := io.ReadAll(res.Body)
	fmt.Println(string(answer))
}

Send the key as a bearer token. The example asks GPT-6.1 Sol for a greeting in three languages.

cURL · chat
curl https://api.relayvano.com/v1/chat/completions \
  --oauth2-bearer rlv_your_key \
  --json '{"model": "gpt-6.1-sol", "messages": [{"role": "user", "content": "Say hello in Hindi, Spanish and French"}]}'

Gemini models use their native route and the x-goog-api-key header:

cURL · Gemini generateContent
curl "https://api.relayvano.com/v1beta/models/gemini-3.8-flash:generateContent" \
  --header "x-goog-api-key: rlv_your_key" \
  --json '{"contents": [{"role": "user", "parts": [{"text": "Name three night trains in Europe"}]}]}'

GPT ids worth starting with:

Set up coding clients

Claude Code · Claude Desktop

Set the Anthropic base address to the API host (without /v1) and use your API key as the auth token, then start claude.

bash or zsh on macOS and Linux
export ANTHROPIC_BASE_URL=https://api.relayvano.com
export ANTHROPIC_AUTH_TOKEN=rlv_your_key
claude
Windows with setx
setx ANTHROPIC_BASE_URL "https://api.relayvano.com"
setx ANTHROPIC_AUTH_TOKEN "rlv_your_key"

Claude models are served only to the official Claude Code and Claude Desktop clients, and the upstream requires Claude Code 2.1.285 or newer. GPT, Gemini and the other families work with any OpenAI-compatible client or SDK.

Codex

Use https://api.relayvano.com/v1 as the base URL and your API key as the API key. Chat requests go to /v1/chat/completions; the Responses API is at /v1/responses.

Codex
export OPENAI_BASE_URL=https://api.relayvano.com/v1
export OPENAI_API_KEY=rlv_your_key
codex

Gemini CLI

Set the Gemini base URL to the bare API host and your API key as the Gemini key, then run gemini.

Gemini CLI
export GOOGLE_GEMINI_BASE_URL=https://api.relayvano.com
export GEMINI_API_KEY=rlv_your_key
gemini

Gemini ids on the board:

How requests are billed

Each request is metered on the tokens the model really processed, with cache stores and cache hits priced separately. You can follow every charge in the dashboard.

An HTTP 402 reply means your balance is empty. Top up in the dashboard and send the request again.