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 openaiimport 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 openaiimport { 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.
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 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 "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:
gpt-5.6-solgpt-6-astragpt-6.1-sol
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.
export ANTHROPIC_BASE_URL=https://api.relayvano.com
export ANTHROPIC_AUTH_TOKEN=rlv_your_key
claudesetx 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.
export OPENAI_BASE_URL=https://api.relayvano.com/v1
export OPENAI_API_KEY=rlv_your_key
codexGemini CLI
Set the Gemini base URL to the bare API host and your API key as the Gemini key, then run gemini.
export GOOGLE_GEMINI_BASE_URL=https://api.relayvano.com
export GEMINI_API_KEY=rlv_your_key
gemini- Give the bare host only; do not append /v1beta yourself.
- Gemini speaks its native protocol only; for streaming call :streamGenerateContent?alt=sse.
- Gemini models cannot be called through /v1/chat/completions.
Gemini ids on the board:
gemini-3.1-progemini-3.8-flashgemini-4-argon
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.