🎁 Nouveau Inscription gratuite, 10 appels offerts. Jusqu'à 1 $, sans carte.

Dépannage

La forme de l'erreur correspond au protocole que vous avez appelé. /v1/chat/completions et /v1/responses renvoient des erreurs au format OpenAI ; /v1/messages renvoie des erreurs au format Anthropic. Les codes de statut HTTP sont identiques pour les trois protocoles.

Format de réponse d'erreur

Format OpenAI (/v1/chat/completions, /v1/responses)

{
  "error": {
    "message": "Invalid API key",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}

Format Anthropic (/v1/messages)

{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key"
  }
}

401 · Échec de l'authentification authentication_error

{"error":{"message":"missing API key in Authorization header or X-API-Key","type":"authentication_error"}}

Causes

  • Aucun en-tête Authorization: Bearer (ni X-API-Key) — message : missing API key in Authorization header or X-API-Key.
  • La clé ne correspond à aucune clé active — message : invalid API key.
  • La clé a dépassé sa date d'expiration — message : API key expired.

Solution

  1. Envoyez Authorization: Bearer sk-syn-… (ou X-API-Key: sk-syn-…).
  2. Vérifiez que la clé est active dans la console et qu'elle a été copiée intégralement.

Non réessayable — corrigez les identifiants.

400 · Requête invalide invalid_request

{"error":{"message":"model or models field is required","type":"invalid_request"}}

Causes

  • Le champ model est absent, ou le corps JSON est vide ou mal formé.

Solution

  1. Incluez un model et un corps JSON bien formé. Consultez la référence Chat Completions.

Non réessayable — corrigez la requête.

403 · Quota épuisé quota_exhausted

{"error":{"message":"API key quota exhausted","type":"quota_exhausted"}}

Causes

  • Le solde prépayé de la clé ou de l'espace de travail est épuisé.

Solution

  1. Rechargez le solde de l'espace de travail. Remarque : Synthorai renvoie 403 quota_exhausted pour un solde épuisé, et non 429 — le backoff exponentiel n'aidera donc pas ; seul un rechargement le débloque.

Non réessayable par backoff — rechargez.

403 · Conformité — pas de partage de données compliance_blocked / compliance_no_data_share

{"error":{"type":"compliance_blocked","code":"compliance_no_data_share","message":"model 'MODEL' is unavailable: your workspace compliance setting disallows providers that retain/train on data"}}

Causes

  • Votre espace de travail a no_provider_data_share activé, et le modèle demandé n'est fourni que par un fournisseur exigeant la conservation/le partage des données (p. ex. un modèle Bedrock ou Vertex en partage de données uniquement).

Solution

  1. Routez la requête vers un modèle sans conservation, ou désactivez le commutateur de conformité de l'espace de travail si le partage de données est acceptable pour cette charge. La classe de conservation est un critère de routage par modèle — voir l'analyse de la conservation sur 30 jours.

Non réessayable — une décision de politique, pas une erreur transitoire.

429 · Débit limité rate_limit_exceeded

{"error":{"message":"rate limit exceeded: max 60 requests per minute","type":"rate_limit_exceeded"}}

Causes

  • Vous avez dépassé le plafond de requêtes par minute (RPM). Le message indique la limite exacte.

Solution

  1. Temporisez et réessayez avec un backoff exponentiel + jitter (extrait ci-dessous). Demandez une limite plus élevée si vous avez besoin d'un débit soutenu.

Réessayable — temporisez et réessayez.

502 · Aucun canal pour le modèle upstream_error

{"error":{"message":"no channels available for model \"MODEL\" in group \"default\"","type":"upstream_error"}}

Causes

  • L'id du modèle ne correspond à aucun canal routable pour votre espace de travail — une faute de frappe, un modèle retiré ou un modèle inaccessible à votre offre.

Solution

  1. Vérifiez l'id exact dans la liste des modèles en direct. Si un modèle a été récemment retiré, choisissez-en un actuel.

Non réessayable tel quel — corrigez l'id du modèle.

BYOK : erreurs du fournisseur en amont

Avec bring-your-own-key, la requête s'exécute sur votre compte fournisseur (AWS Bedrock, Google Vertex AI ou l'API Anthropic), donc Synthorai transmet l'erreur d'origine du fournisseur sans la modifier — les réponses portent usage.is_byok: true. Le correctif se trouve dans la console ou la configuration de ce fournisseur, pas dans la passerelle. Les plus courants sont les paramètres d'accès aux modèles et de partage de données au niveau du compte :

Erreur / config du fournisseurCauseSolution
model "…" is currently unavailableSur votre compte BYOK, le modèle n'est pas activé, a été retiré ou est limité en capacité (p. ex. Claude Fable 5, temporairement retiré sur Bedrock).Activez l'accès au modèle dans la console du fournisseur (Bedrock → Model access ; Vertex → Model Garden), ou routez vers un modèle disponible.
setPublisherModelConfig / dataSharingEnabledProvider: "anthropic" (Vertex AI)Google Vertex AI conditionne les modèles partenaires Anthropic à un opt-in de partage de données au niveau du projet et à l'acceptation des conditions de Model Garden.Appelez setPublisherModelConfig avec dataSharingEnabledProvider: "anthropic" et acceptez les conditions. Voir la documentation des modèles partenaires Vertex de Google.
data_retention_mode: provider_data_share (AWS Bedrock)Bedrock conditionne certains modèles Claude à un opt-in explicite de conservation des données au niveau du compte ; sans cela, le modèle apparaît comme indisponible.Définissez data_retention_mode: provider_data_share sur le compte (éventuellement, verrouillez-le avec une SCP sur bedrock:DataRetentionMode).

Erreurs du fournisseur en amont

Ces erreurs sont transmises par le fournisseur du modèle avec son propre statut HTTP et son type. Seuls 500 et 529 indiquent le côté fournisseur ; traitez-les (ainsi que 429) comme transitoires et réessayez, tandis que les 4xx reflètent la requête. Référence complète : la documentation des erreurs d'Anthropic.

StatutTypeSignification
413request_too_largeLe corps de la requête dépasse la limite de taille — réduisez la charge utile.
500api_errorLe fournisseur en amont a rencontré une erreur interne — transitoire ; réessayez avec backoff.
529overloaded_errorLe fournisseur en amont est temporairement surchargé — transitoire ; réessayez avec backoff.

Limites de débit

Les limites de débit sont appliquées par clé API pour garantir un usage équitable entre tous les utilisateurs.

Limites par défaut

ParamètreTypeDescription
RPMintegerRequêtes par minute. Par défaut : 60 RPM par clé.
TPMintegerTokens par minute. Par défaut : 100 000 TPM par clé.
Quota quotidienintegerTotal de tokens par jour. Configurable par l'administrateur pour chaque utilisateur.

Lorsqu'une limite de débit est atteinte, vous recevez une réponse 429 avec un en-tête Retry-After indiquant le temps d'attente en secondes.

Vous budgétisez le débit de tokens par rapport aux prix réels par token ? Passez votre charge de travail dans le calculateur de coûts d'API LLM.

Gérer les erreurs 429

import time
import openai

client = openai.OpenAI(base_url="https://synthorai.io/v1", api_key="YOUR_API_KEY")

for attempt in range(5):
    try:
        response = client.chat.completions.create(
            model="gpt-5.4-mini",
            messages=[{"role": "user", "content": "Hello"}]
        )
        break
    except openai.RateLimitError as e:
        wait = 2 ** attempt  # exponential backoff
        print(f"Rate limited. Retrying in {wait}s...")
        time.sleep(wait)

Vous rencontrez un 502 ou une surcharge sur un modèle ? Choisissez une solution de repli dans la comparaison des prix des modèles — chaque modèle routable et son prix au token dans un seul tableau.