Erreurs et identifiants de requête

Le corps d'erreur, le requestId à communiquer au support, les codes possibles et les erreurs à réessayer.

Format des erreurs

Chaque erreur a un statut HTTP et un corps JSON avec un code stable (sur lequel brancher votre logique), un message lisible (non stable, ne l'analysez pas) et un requestId.

{
  "error": {
    "code": "agent_not_found",
    "message": "Agent not found",
    "requestId": "req_01J9Z3K8M2V5N7Q1R4T6W8Y0AB"
  }
}

Le même identifiant est renvoyé dans l'en-tête X-Request-Id de chaque réponse, réussie ou non. Journalisez-le à chaque appel : c'est avec lui que la requête se retrouve dans les journaux d'API du dashboard et que le support enquête.

const res = await fetch("https://infynia.quantylcore.com/api/v1/calls/CALL_ID", {
  headers: { Authorization: `Bearer ${process.env.INFYNIA_API_KEY}` },
});
if (!res.ok) {
  const { error } = await res.json();
  // Log requestId: support finds the request with it.
  console.error(error.code, error.message, error.requestId);
  throw new Error(error.code);
}

Codes

StatutCodesSignification
400invalid_body, invalid_number, invalid_query, invalid_idempotency_keyLa requête est mal formée. Corrigez-la, ne la renvoyez pas telle quelle.
401unauthorizedClé absente, invalide, expirée ou révoquée.
403forbidden, forbidden_agent, plan_required, test_mode_not_supported, country_not_allowed, do_not_callLa clé n'a pas le droit de le faire, ou l'appel est bloqué par une garde (pays, liste d'opposition).
404not_found, agent_not_foundLa ressource n'existe pas pour cette organisation.
409agent_inactive, not_cancellable, idempotency_in_progressLa ressource n'est pas dans un état qui permet l'action.
422outside_hours, idempotency_mismatchLa requête est valide mais refusée : hors de la plage d'appel, ou clé d'idempotence réutilisée avec un autre corps.
429rate_limited, concurrent_limit, hourly_limit, pending_limitTrop de requêtes ou trop d'appels. Patientez, puis réessayez.
500, 502internal_error, call_failedDéfaillance côté serveur. Réessayez avec un délai croissant.

La référence liste les codes que chaque route peut renvoyer. De nouveaux codes peuvent apparaître : traitez un code inconnu d'après son statut HTTP.

Que réessayer

  • Les erreurs 4xx autres que 429 : non, la même requête échouera encore.
  • 429 : oui, après le délai de l'en-tête Retry-After.
  • Les 5xx et les erreurs réseau : oui, avec un délai croissant, et avec la même Idempotency-Key sur un POST.