Erreurs
Tous les codes d’erreur de la Direct API, leur signification et s’il faut réessayer, y compris la marche à suivre lorsqu’un appel payant échoue avec une 5xx.
Toutes les erreurs ont le même corps. Basez votre logique sur le statut HTTP et sur code ; montrez description ou error.message aux personnes.
{
"description": "Human-readable explanation, safe to log.",
"code": "machine_readable_code",
"data": { "request_id": "…", "…": "…" },
"error": { "error_code": "…", "message": "…" }
}Chaque réponse, succès comme erreur, porte X-Request-Id. Indiquez-le lorsque vous contactez le support.
Codes d’erreur
| HTTP | code | Signification | Réessayer |
|---|---|---|---|
| 400 | invalid_request | JSON mal formé, champ de corps inconnu, ou input non conforme au schéma de l’outil (chaque champ incorrect est nommé) | non, corrigez la requête |
| 401 | invalid_api_key | clé absente, mal formée, révoquée ou expirée | non |
| 402 | insufficient_credits | l’organisation ne peut pas payer l’appel | après un rechargement |
| 402 | api_key_credit_limit_reached | l’appel dépasserait la limite quotidienne, mensuelle ou totale de la clé (data.period indique laquelle) | après la réinitialisation de la période ou le relèvement de la limite |
| 402 | subscription_paused | l’abonnement de l’organisation est suspendu | après sa reprise |
| 402 | payment_required | l’abonnement de l’organisation présente un impayé | après le règlement du paiement |
| 403 | direct_api_disabled | la Direct API n’est pas activée pour cette organisation | non, contactez Morphic |
| 403 | insufficient_scope | la clé ne dispose pas de l’autorisation requise par cet outil (data.required_scopes) | non, utilisez une autre clé |
| 403 | plan_upgrade_required | le modèle ou la fonctionnalité ne fait pas partie de votre forfait | non |
| 403 | tool_not_available | l’outil facture des crédits et les outils payants ne sont pas encore activés pour votre organisation (data.tool le nomme) ; votre contact Morphic les active | non |
| 403 | model_disabled_by_organization | un administrateur de l’organisation a désactivé ce modèle, cette résolution ou cette option audio et ne l’a pas autorisé pour l’API | non, adressez-vous à votre administrateur |
| 404 | not_found | outil, génération ou webhook inconnu, ou hors de portée de cette clé | non |
| 409 | idempotency_conflict | Idempotency-Key réutilisé avec un corps ou un outil différent | non, utilisez une nouvelle clé |
| 409 | idempotency_in_progress | la requête d’origine avec cette clé est encore en cours | oui, après une seconde |
| 409 | idempotency_outcome_unknown | la requête d’origine avec cet Idempotency-Key a échoué ou n’a jamais répondu après avoir pu s’exécuter : son issue est donc inconnue | non : vérifiez son résultat, puis utilisez une nouvelle clé |
| 413 | payload_too_large | corps de plus de 1 Mo | non |
| 422 | tool_refused | l’entrée est bien formée mais ne peut pas être exécutée ; rien n’a été facturé | non, modifiez l’entrée |
| 429 | rate_limited | une limite de débit a été atteinte | oui, après Retry-After |
| 500 | internal_error | erreur de notre côté | appel gratuit : oui ; appel payant : voir ci-dessous |
| 503 | service_unavailable | surcharge temporaire ou maintenance | appel gratuit : oui, en espaçant les tentatives ; appel payant : voir ci-dessous |
| 504 | tool_timed_out | l’outil n’a pas répondu dans les 60 s ; un appel qui lance des générations peut néanmoins les avoir lancées | appel gratuit : oui ; appel payant : voir ci-dessous |
Une erreur 422 tool_refused indique le champ, la valeur et les valeurs qui auraient fonctionné ; voir Refus d’un outil. Une génération qui échoue après avoir démarré indique son propre error.error_code dans l’objet génération, et le montant facturé est remboursé.
Appels payants qui répondent par une 5xx
Un appel payant qui répond 500, 503 ou 504 peut avoir lancé du travail et l’avoir facturé avant d’échouer. Le réessayer avec le même Idempotency-Key ne l’exécute jamais deux fois : la nouvelle tentative répond 409 idempotency_outcome_unknown.
- Vérifiez ce que l’appel a fait :
list_generations, ouGET /v1/direct/usagefiltré par période. - N’envoyez un nouvel
Idempotency-Keyque pour le travail qui n’a pas démarré.
Si aucune réponse n’est arrivée (une connexion coupée), réessayez avec la même clé. Vous obtenez la réponse enregistrée, ou 409 idempotency_in_progress tant que l’appel est en cours. Voir Idempotence.
Si vous rencontrez le moindre problème ou si vous avez des questions, n’hésitez pas à nous contacter. Nous serons ravis de vous aider. Écrivez-nous à support@morphic.com.