Erreurs et limites
Chaque code d’erreur renvoyé par l’API Partenaire, et chaque limite qu’elle applique.
Chaque échec a la même structure. Basculez sur error.error_code; journalisez description pour un humain ; ne faites jamais de correspondance sur son texte. error.error_attributes contient les détails qu'un code définit, et est null null pour le reste.
{
"description": "story_document : le lien sert \"text/html\", que cet input n'accepte pas. Pointez vers le fichier lui-même.",
"code": "url_type_not_allowed",
"error": {
"id": null,
"error_code": "url_type_not_allowed",
"error_attributes": null,
"user_readable_message": null,
"locale": "en"
}
}code se répète error.error_code pour les anciens clients ; consultez error.error_code.
Codes d'erreur
| HTTP | error_code | Signifie | Que faire |
|---|---|---|---|
| 400 | invalid_request | un corps ou une valeur d'entrée est incorrect ; la description nomme l'entrée | corrigez-le et renvoyez-le. Ne réessayez jamais sans modification |
| 400 | url_not_fetchable | un lien n'a pas pu être récupéré, a enfreint l'une des règles des liens, ou a servi un fichier vide | vérifiez-le par rapport à Transmission de fichiers par URL |
| 400 | url_type_not_allowed | le lien a servi un type de contenu que cet input n'accepte pas, ou des octets qui ne correspondent pas au type annoncé | servez le fichier lui-même, avec son vrai type |
| 400 | url_too_large | le fichier dépasse la max_bytes, ou dépasse ce qu'il reste au run de son budget d'octets | envoyez un fichier plus petit |
| 401 | non autorisé | la clé est absente, mal formée, révoquée ou expirée | arrêtez-vous et prévenez quelqu'un. Un nouvel essai ne pourra pas aider |
| 403 | api_key_credit_limit_reached | la clé a atteint l'une de ses propres limites de crédits ; error_attributes.period indique laquelle | demandez à un administrateur d'augmenter la limite de la clé dans Studio, ou attendez la réinitialisation d'une limite journalière ou mensuelle |
| 403 | credits_exhausted | l'organisation n'a plus de crédits | rechargez l'organisation |
| 403 | access_denied | org_id n'est pas l'organisation de la clé, la clé n'a pas le scope requis, ou elle ne peut pas exécuter ce workflow | vérifiez les scopes de la clé et la liste d'autorisation du workflow dans Studio |
| 404 | entity_not_found | aucun workflow, projet, run ou point de terminaison de webhook de ce type dans votre organisation — ou un run d'un workflow en dehors de la liste d'autorisation de la clé | vérifiez l'ID |
| 409 | idempotency_conflict | la même idempotency_key est arrivé avec un corps différent | utilisez une nouvelle clé pour un nouveau travail |
| 429 | too_many_requests | une limite de lecture a été atteinte | attendez Retry-After, puis renvoyez |
| 500 | internal_error | nôtre | réessayez avec une temporisation exponentielle ; si cela persiste, envoyez-nous le x-morphic-trace-id |
Limites
| Limite | Par défaut | Notes |
|---|---|---|
| Crédits | les limites propres de la clé | un total que chaque clé possède, et des plafonds quotidiens et mensuels facultatifs — voir Limites de crédit |
| Lectures d'un run | 30 par minute, par clé | une lecture par minute et par run suffit largement ; wait=45 est encore moins coûteux |
| Lectures de tous les runs | 1 200 par minute, par clé | de la marge pour suivre des centaines de runs à la fois |
| Liens par run | 10 | sur tous les inputs de fichiers combinés |
| Octets par run | 500 Mo | sur tous les liens combinés |
| Octets par fichier | de l'input max_bytes | documents jusqu'à 100 Mo ; les plafonds média sont par input |
| Durée de vie du run | 24 heures | un run non terminé avant expires_at devient expiré |
| Points de terminaison de webhook | 10 par organisation | supprimez-en un avant d'en ajouter un autre |
Le démarrage des runs n'est jamais soumis à une limitation de débit : les limites de crédit d'une clé plafonnent ce qu'une boucle de réessai peut dépenser, et un idempotency_key transforme un réessai en relecture. Les limites de lecture sont augmentées sur demande pour un volume que nous avons discuté.
Facturation
Les crédits d'un run démarré via l'API sont facturés à l'organisation propriétaire de la clé, et imputés à la clé qui l'a lancé. Un administrateur voit la dépense sous Facturation et utilisation → Activité des crédits dans Studio, et les limites de chaque clé sur la Clés API page.
Un run continue d'être imputé à la clé qui l'a lancé même si quelqu'un prend la main dans le chat dans Studio, donc le budget restant de la clé est le budget pour l'ensemble du run.
Un run refusé avant son démarrage — un mauvais lien, ou une clé ou une organisation sans crédits — ne coûte rien. Un run qui échoue en cours de route a consommé le coût de toutes les étapes qu'il a exécutées ; credits_used sur le run indique combien.