L'API
La Gateway expose les routes de l'API OpenAI, et celle de l'API Anthropic pour Claude Code. Toute bibliothèque compatible OpenAI fonctionne en changeant l'adresse et la clé.
Authentification
La clé (sv_gw_…) se passe dans l'un de ces en-têtes :
Authorization: Bearer sv_gw_…
x-api-key: sv_gw_…
Le type de la clé est lu dans Supervise, jamais dans la requête, et vérifié avant tout le reste. Un type inconnu est refusé.
Les routes
| Route | Format | Clé Script | Clé Développeur |
|---|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Oui | Oui |
GET /v1/models | Liste des modèles ouverts | Oui | Oui |
POST /v1/images/generations | OpenAI Images | Oui | Oui |
POST /v1/audio/speech | OpenAI Audio (synthèse) | Oui | Oui |
POST /v1/audio/transcriptions | OpenAI Audio (transcription) | Oui | Oui |
POST /v1/embeddings | OpenAI Embeddings | Oui | Oui |
POST /v1/ocr | Mistral OCR | Oui | Oui |
POST /v1/videos, GET /v1/videos/{id}, GET /v1/videos/{id}/content | OpenAI Videos | Oui | Oui |
POST /v1/responses | OpenAI Responses (Codex) | Non | Oui |
POST /v1/messages, POST /v1/messages/count_tokens | Anthropic Messages (Claude Code) | Non | Oui |
Le streaming (SSE) est accepté partout où l'API d'origine le propose. Chaque route n'accepte que les modèles de son type.
Paramètres acceptés
Seuls les paramètres connus de chaque route partent chez le fournisseur.
- Chat Completions : un paramètre inconnu est refusé (
400). - Responses : un paramètre inconnu est retiré, pour rester compatible avec Codex.
- Partout : les paramètres qui choisissent le serveur ou les accès du fournisseur (adresse d'API, identifiants…) sont refusés (
400).
/v1/messages
La requête et les en-têtes anthropic-* sont transmis tels quels à Anthropic ; seul model est traduit, et la clé Supervise est remplacée par l'accès du fournisseur : celui de l'organisation si un administrateur en a connecté un pour Anthropic, sinon celui de Supervise. Modèles Claude uniquement. Les erreurs suivent le format d'Anthropic.
Les champs propres à Supervise
| Champ | Où | Rôle |
|---|---|---|
metadata.flag, metadata.sub_flag | Corps, Chat Completions | Étiquettes de l'appel, 1 à 64 caractères. Un sous-flag exige un flag. |
metadata.backup_model | Corps, Chat Completions | Modèle de secours. Voir Flags et modèle de secours. |
metadata | Corps, Chat Completions | 16 clés au plus. Les autres clés sont conservées avec l'appel. |
X-Supervise-Flag, X-Supervise-Sub-Flag | En-têtes, autres routes | Mêmes étiquettes, pour les images, l'audio, les embeddings, l'OCR, la vidéo, Codex et Claude Code. |
En-têtes de réponse
| En-tête | Quand |
|---|---|
X-Supervise-Backup-Used: true | L'appel a été servi par le modèle de secours |
Retry-After | Limite d'appels par minute atteinte : secondes à attendre |
X-Request-Id | Sur une erreur : l'identifiant à donner pour signaler un problème |
Format des erreurs
{
"error": {
"message": "The model `…` does not exist or you do not have access to it.",
"type": "invalid_request_error",
"code": "model_not_found",
"param": "model"
}
}
{
"type": "error",
"error": { "type": "not_found_error", "message": "…" }
}
Aucune erreur ne contient de clé, de trace interne ou de détail brut du fournisseur. La liste des erreurs : Erreurs et limites.