Erreurs et troubleshooting
Prismatic retourne des payloads d’erreur compatibles protocole pour gérer clairement auth, billing, validation et disponibilité modèle.
Erreurs fréquentes
401invalid_api_keyLa clé API est manquante, invalide ou révoquée.403permission_deniedTu n’as pas l’autorisation d’effectuer cette requête.403ip_not_allowedCette requête n’est pas autorisée depuis l’adresse IP actuelle.403account_suspendedCe compte est suspendu. Contacte le support pour obtenir de l’aide.403model_not_allowedCette clé API n’est pas autorisée à utiliser le modèle demandé.404endpoint_not_foundL’endpoint API demandé est introuvable.405method_not_allowedLa méthode HTTP n’est pas autorisée pour cet endpoint.400invalid_requestLa requête est invalide. Vérifie ses paramètres puis réessaie.413request_too_largeLa requête dépasse la taille maximale autorisée.415unsupported_media_typeLe type de contenu de la requête n’est pas pris en charge par cet endpoint.400unsupported_featureCet endpoint ne prend pas en charge la fonctionnalité demandée.404model_not_foundLe modèle demandé est introuvable ou indisponible.400model_capability_unavailableLe modèle demandé ne prend pas en charge cette capacité.400context_length_exceededLa requête dépasse la limite de contexte du modèle. Réduis l’entrée ou le budget de sortie demandé puis réessaie.400output_limit_exceededLa limite de sortie demandée dépasse le maximum du modèle.400content_policy_violationLa requête ou le contenu généré a été bloqué par une politique de sécurité.429rate_limit_exceededLimite de débit dépassée. Réessaie plus tard.402billing_requiredUne facturation est nécessaire pour traiter cette requête.402credit_balance_exhaustedLe solde de crédits PAYG est insuffisant pour cette requête.429quota_exceededLe quota d’abonnement pour cette requête est épuisé.429spend_limit_exceededLa limite de dépenses configurée a été atteinte.403model_not_in_planLe modèle demandé n’est pas inclus dans le plan actif.503billing_unavailableLa facturation ne peut pas être vérifiée temporairement. Réessaie plus tard.409idempotency_conflictCette clé d’idempotence a déjà été utilisée avec une requête différente.409request_in_progressUne requête utilisant cette clé d’idempotence est toujours en cours.409outcome_unknownLe résultat de la requête est inconnu. Ne réessaie pas automatiquement avec une nouvelle clé d’idempotence.404resource_not_foundLa ressource demandée n’existe pas ou n’est pas accessible.409resource_conflictL’état de la ressource est incompatible avec cette opération.410resource_expiredLa ressource demandée a expiré.503resource_unavailableLa ressource demandée est temporairement indisponible. Réessaie plus tard.502model_errorLe modèle a retourné une réponse invalide ou incomplète.503model_unavailableLe modèle demandé est temporairement indisponible. Réessaie plus tard.503service_unavailableLe service est temporairement indisponible. Réessaie plus tard.504request_timeoutLa requête a expiré avant d’être terminée.500internal_errorUne erreur interne s’est produite. Contacte le support avec l’identifiant de requête.Formats d’erreur par protocole
- Les endpoints compatibles OpenAI retournent
error.message,error.type,error.code,error.paramet unrequest_idde premier niveau. - Les endpoints compatibles Anthropic retournent l’enveloppe native
type: erroravecerror.type,error.code, éventuellementerror.param, etrequest_id. - Les endpoints compatibles Gemini retournent une erreur Google.
google.rpc.ErrorInfo.metadata.prismatic_codecontient le code Prismatic etmetadata.request_idl’identifiant de requête. - Les streams SSE émettent le même code natif et le request ID dans au plus un événement d’erreur terminal. Le statut HTTP ne peut plus changer après le début d’un stream
200. - Considère
codecomme le contrat stable. Lemessageanglais peut évoluer et ne doit pas être parsé.
Headers d’erreur
x-request-idest généré par Prismatic sous la formereq_*pour chaque requête proxy ; toute valeur entrante portant ce nom est ignorée.x-client-request-idpeut contenir de 1 à 128 caractères sûrs et est renvoyé séparément lorsqu’il est valide.x-prismatic-error-coderépète le code canonique tant que les headers ne sont pas déjà engagés.Retry-Aftern’est présent que lorsque Prismatic dispose d’un délai de réessai fiable. Les erreurs utilisentCache-Control: no-store.
Politique de réessai et de compaction
- Utilise
context_length_exceededcomme signal pour compacter la conversation ou réduire l’entrée et le budget de sortie. - Réessaie
rate_limit_exceededaprèsRetry-Afterlorsqu’il est présent. Pour les erreurs temporaires*_unavailable,request_timeoutetbilling_unavailable, utilise un backoff exponentiel borné. - Ne réessaie pas les erreurs de validation, permission, solde, quota, limite de dépenses ou conflit tant que la requête ou l’état du compte n’a pas changé.
- Ne rejoue jamais automatiquement
outcome_unknownavec une nouvelle clé d’idempotence. Réconcilie d’abord la clé ou la ressource d’origine.
Troubleshooting
401 sur chaque requête
Régénère la clé dans le dashboard, confirme que le préfixe est correct et vérifie que l’intégration n’a pas tronqué le header.
Model not found
Appelle GET /v1/models avec la même clé API et utilise un des IDs publics retournés.
Erreurs billing
Vérifie d’abord le quota abonnement actif, puis le solde wallet et l’état PAYG.
Streaming interrompu tôt
Assure-toi que le client consomme le stream SSE jusqu’à la fin pour capturer l’usage final.