Quick start

Routtx est un proxy API compatible OpenAI. Remplacez simplement la base_url dans votre code existant.

1. Creez un compte

Rendez-vous sur le dashboard et inscrivez-vous. Aucune carte bancaire requise.

2. Generez une clé API

Dans le dashboard, allez dans Gateway Keys et generez une clé. Elle commence par sk-gw-.

3. Ajoutez vos clés providers

Dans Provider Keys, ajoutez au moins une clé gratuite. Nous recommandons :

4. Premiere requête

from openai import OpenAI

client = OpenAI(
    base_url="https://app.routtx.fr/v1",
    api_key="sk-gw-votre-clé",
)

response = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)

Authentification

Toutes les requêtes API necessitent une clé gateway dans le header :

Authorization: Bearer sk-gw-votre-clé

Vos clés gateway sont hashees en SHA-256 cote serveur. Vous ne pouvez pas les recuperer après création — sauvegardez-les.

Providers

Routtx supporte 18 providers. Utilisez model="auto" pour le routage intelligent, ou spécifiez un modèle directement. Les quotas ci-dessous sont ceux appliqués par le gateway (configurables par l'admin) — ils ne remplacent pas les limites du provider lui-même.

Free tier (10 providers)

Quotas appliqués pour rester dans les limites gratuites des providers :

ProviderModèle exempleQuota Routtx
Groqllama-3.3-70b-versatile1 000 req/jour
Geminigemini-2.0-flash10 req/min
Mistralmistral-small-latest60 req/min
Cerebrasllama3.1-8b30 req/min
NVIDIAmeta/llama-3.1-8b-instruct40 req/min
AI21jamba-mini200 req/min
Coherecommand-r1 000 req/mois
Cloudflare@cf/meta/llama-3.1-8b-instruct100 req/jour
GitHub Modelsgpt-4o-mini150 req/jour
OpenRoutergoogle/gemini-2.0-flash-exp:free50 req/jour

Payants (8 providers)

Aucun quota appliqué par Routtx — vous payez directement le provider à l'usage. L'utilisation est tout de même trackée dans le dashboard.

ProviderModèle exempleTarification
OpenAIgpt-4o$2.50 / 1M tokens input
Anthropicclaude-sonnet-4-6$3.00 / 1M tokens input
DeepSeekdeepseek-chat$0.14 / 1M tokens input
xAI (Grok)grok-2-latest$2.00 / 1M tokens input
Perplexityllama-3.1-sonar-large$1.00 / 1M tokens + web search
Togethermeta-llama/Llama-3.3-70B-Instruct-Turbo$0.88 / 1M tokens (variable)
SambaNovaMeta-Llama-3.3-70B-InstructCrédits trial puis payant
Arceearcee-spotlightVariable selon modèle

Note — quota = 0 signifie illimité côté gateway (l'usage est tracké mais jamais bloqué). Les limites réelles sont celles imposées par le provider à votre clé API.

Python — OpenAI SDK

from openai import OpenAI

client = OpenAI(
    base_url="https://app.routtx.fr/v1",
    api_key="sk-gw-...",
)

# Routing automatique
response = client.chat.completions.create(
    model="auto",
    messages=[
        {"role": "system", "content": "Vous etes un assistant utile."},
        {"role": "user", "content": "Explique la relativite."},
    ],
    temperature=0.7,
)

print(response.choices[0].message.content)
print("Provider utilise:", response._response.headers["X-LLM-Gateway-Provider"])

Streaming

stream = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Raconte-moi une histoire."}],
    stream=True,
)

for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

Node.js

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://app.routtx.fr/v1",
  apiKey: "sk-gw-...",
});

const response = await client.chat.completions.create({
  model: "auto",
  messages: [{ role: "user", content: "Hello!" }],
});

console.log(response.choices[0].message.content);

cURL

curl https://app.routtx.fr/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-gw-..." \
  -d '{
    "model": "auto",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

API — Chat completions

POST Cree une réponse a partir d'une liste de messages. Compatible OpenAI.

POST https://app.routtx.fr/v1/chat/completions

Paramètres (body JSON)

ChampTypeDescription
model*string"auto" ou nom d'un modèle spécifique
messages*arrayListe de messages {role, content}
temperaturenumber0.0 - 2.0, defaut 1.0
max_tokensintegerNombre max de tokens dans la réponse
streambooleanSSE streaming, defaut false
top_pnumber0.0 - 1.0

Réponse

{
  "id": "chatcmpl-xyz",
  "model": "llama-3.3-70b-versatile",
  "choices": [{
    "index": 0,
    "message": {"role": "assistant", "content": "..."},
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 85,
    "total_tokens": 97
  }
}

API — Conversations

Persistez les conversations cote serveur pour une gestion automatique de l'historique.

Créer une conversation

POST/v1/conversations
{"title": "Brainstorming produit"}

Utiliser dans une requête

Ajoutez le header X-LLM-Gateway-Conversation-Id et envoyez uniquement le nouveau message :

curl -X POST https://app.routtx.fr/v1/chat/completions \
  -H "Authorization: Bearer sk-gw-..." \
  -H "X-LLM-Gateway-Conversation-Id: conv_abc123" \
  -d '{
    "model": "auto",
    "messages": [{"role": "user", "content": "Continue notre discussion..."}]
  }'

Lister / Supprimer

GET/v1/conversations
GET/v1/conversations/{id}
PATCH/v1/conversations/{id}
DELETE/v1/conversations/{id}

API — Documents

Uploadez un document pour extraire son contenu. Formats : PDF, DOCX, TXT, MD.

POST/v1/documents/extract
curl -X POST https://app.routtx.fr/v1/documents/extract \
  -H "Authorization: Bearer sk-gw-..." \
  -F "file=@contrat.pdf"

Réponse

{
  "filename": "contrat.pdf",
  "text": "CONTRAT DE SERVICE...",
  "char_count": 12846
}

API — Gateway keys

Gérer vos clés API gateway.

GET/v1/gateway-keys
POST/v1/gateway-keys
DELETE/v1/gateway-keys/{id}

Headers — Requête

HeaderValeursDescription
Authorization*Bearer sk-gw-...Clé API gateway
X-LLM-Gateway-Redacttrue / falseActiver l'anonymisation PII (plan Pro+)
X-LLM-Gateway-Conversation-IduuidUtiliser une conversation persistante

Headers — Réponse

HeaderDescription
X-LLM-Gateway-ProviderProvider utilise (groq, gemini, etc.)
X-LLM-Gateway-TaskType de tache classifie
X-LLM-Gateway-CacheHIT ou MISS
X-LLM-Gateway-Threat-Score0.00 a 1.00
X-LLM-Gateway-RedactedNombre de champs PII masques
X-LLM-Gateway-Redacted-FieldsJSON detaille des champs masques
X-LLM-Gateway-Conversation-IdID de la conversation (si mode persistant)