Démarrage rapide

Un point d’accès /v1 pour tous les fournisseurs. Pointez votre client OpenAI vers une autre URL et une clé, avec vos clés et 0 % de majoration.

Cinq étapes. Chaque requête passe par votre propre clé de fournisseur (étape 4), à une exception près : là où ce déploiement sert les modèles gratuits sans clé, votre première requête peut aller à l’un d’eux avant l’étape 4 — l’étape 3 explique comment le savoir.

1. Obtenir une clé de gestion

Connectez-vous à autonomousrelay.com/signin avec Google, GitHub ou un portefeuille. Votre première clé de gestion est créée avec votre compte et affichée une seule fois, dans Espace de travail → Clés API.

2. Créer une clé d’inférence

Une clé de gestion administre le compte et ne peut pas envoyer de requêtes d’inférence. Créez une clé d’inférence distincte pour votre application :

curl
curl -X POST https://autonomousrelay.com/v1/keys \
  -H "Authorization: Bearer $AUTONOMOUSRELAY_MANAGEMENT_KEY" \
  -H 'content-type: application/json' \
  -d '{"name":"my-app","class":"inference"}'
La clé est retournée une seule fois, dans cette réponse, et jamais de nouveau. Conservez-la avant de fermer le terminal.

3. Les modèles gratuits, avec ou sans clé

Les modèles gratuits — tous les prix à zéro, listés par GET /v1/models?free=true — ne coûtent rien avec votre propre clé de fournisseur. Un déploiement peut aussi les servir sans clé à vous, sur la sienne : GET /v1/free-tier répond available, la limite quotidienne et les modèles concernés. Quand available vaut true, une requête comme celle-ci fonctionne avant l’étape 4 (avec un modèle qu’il nomme) ; quand il vaut false, passez d’abord à l’étape 4. Rien n’est facturé dans les deux cas.

curl
curl -X POST https://autonomousrelay.com/v1/chat/completions \
  -H "Authorization: Bearer $AUTONOMOUSRELAY_API_KEY" \
  -H 'content-type: application/json' \
  -d '{
    "model": "minimax/minimax-m3:free",
    "messages": [{"role": "user", "content": "Bonjour"}]
  }'
Sans clé à vous, les modèles gratuits permettent daily_limit requêtes par jour par organisation, tous modèles confondus. Au-delà, la réponse est un 429 avec metadata.reason: free_model_daily_limit et l’heure de remise à zéro ; ajoutez votre propre clé pour un usage illimité. Les limites de l’offre gratuite du fournisseur s’appliquent toujours.

4. Ajouter une clé de fournisseur

Tous les autres modèles fonctionnent uniquement avec vos propres clés : chacun passe par votre clé pour le fournisseur qui le sert. Votre clé OpenAI, Anthropic ou Google existante convient. Dès que vous ajoutez une clé pour un fournisseur, ses modèles gratuits l’utilisent aussi, sans limite quotidienne.

curl
curl -X POST https://autonomousrelay.com/v1/byok \
  -H "Authorization: Bearer $AUTONOMOUSRELAY_MANAGEMENT_KEY" \
  -H 'content-type: application/json' \
  -d '{"provider":"anthropic","api_key":"sk-ant-...","name":"prod"}'

Ou exécutez ./deploy/byok.sh, qui vous invite à saisir la clé sans la laisser dans l’historique de votre shell. La clé est chiffrée avant d’être conservée et n’est jamais retournée par aucun point d’accès — la liste de vos justificatifs donne un indice de quatre caractères, rien de plus.

5. Envoyer une requête à n’importe quel modèle

curl
curl -X POST https://autonomousrelay.com/v1/chat/completions \
  -H "Authorization: Bearer $AUTONOMOUSRELAY_API_KEY" \
  -H 'content-type: application/json' \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{"role": "user", "content": "Bonjour"}]
  }'

Depuis le SDK OpenAI : deux lignes changent

L’API parle le format Chat Completions d’OpenAI, donc les SDK officiels fonctionnent tels quels : pointez base_url sur https://autonomousrelay.com/v1 et utilisez votre clé d’inférence. Les identifiants de modèle sont auteur/modèle, et n’importe quel modèle du catalogue fonctionne, pas seulement ceux d’OpenAI. Le guide OpenAI SDK couvre le reste du SDK.

Python

bash
pip install openai
python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://autonomousrelay.com/v1",                         # 1
    api_key=os.environ["AUTONOMOUSRELAY_API_KEY"],  # 2
)

resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "Bonjour"}],
)
print(resp.choices[0].message.content)

La diffusion en continu fonctionne sans changement : passez stream=True et lisez les morceaux.

Node.js et TypeScript

bash
npm install openai
javascript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://autonomousrelay.com/v1',
  apiKey: process.env.AUTONOMOUSRELAY_API_KEY,
});

const resp = await client.chat.completions.create({
  model: 'anthropic/claude-sonnet-5',
  messages: [{ role: 'user', content: 'Bonjour' }],
});
console.log(resp.choices[0].message.content);

curl, ou tout client HTTP

Tout client capable d’envoyer du JSON en POST fonctionne : la requête de l’étape 5 est tout le protocole. Avec "stream": true, la réponse arrive en événements envoyés par le serveur ; -N les affiche au fil de l’eau.

curl
curl -N https://autonomousrelay.com/v1/chat/completions \
  -H "Authorization: Bearer $AUTONOMOUSRELAY_API_KEY" \
  -H 'content-type: application/json' \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "stream": true,
    "messages": [{"role": "user", "content": "Bonjour"}]
  }'

Claude, Gemini ou tout autre modèle par le SDK OpenAI

Le même client appelle les modèles de tous les fournisseurs : seul l’identifiant change. Chaque fournisseur a besoin de sa propre clé (étape 4) ; sans elle, la requête répond 404 en nommant le fournisseur.

python
for model in ["anthropic/claude-sonnet-5", "google/gemini-3.1-pro", "openai/gpt-5.5"]:
    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "Bonjour"}],
    )
    print(model, resp.choices[0].message.content)

Pour une chaîne de repli, passez models : si le premier ne peut pas être servi, le suivant est essayé (jusqu’à trois tentatives, voir Replis et basculement). Le SDK Python l’envoie par extra_body ; en Node, ajoutez models à l’objet de la requête (TypeScript demande une conversion de type, le SDK ne connaissant pas ce champ). Quand models est présent, il remplace model.

python
resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "Bonjour"}],
    extra_body={"models": ["anthropic/claude-sonnet-5", "openai/gpt-5.5", "google/gemini-3.1-pro"]},
)
Vous obtenez un 404 avec « is BYOK-only and you have no <provider> credential » ? L’étape 4 n’a pas été faite pour le fournisseur qui sert ce modèle. L’erreur nomme lequel — ou choisissez plutôt un modèle gratuit.