L’API utilise les statuts HTTP usuels : 2xx succès, 4xx erreur de la requête, 5xx erreur du service. Toute erreur a le même format :
JSON
{
"error": {
"code": "validation_failed",
"message": "`threshold` is required for `large_transfer`.",
"details": { "field": "threshold" }
}
}
Champ
Sens
code
Identifiant stable, en snake_case. Programmez sur ce champ : il ne change jamais au sein de v1.
message
Explication en anglais pour le développeur. Le texte peut être amélioré sans préavis : ne l’analysez pas et ne l’affichez pas tel quel à vos utilisateurs finaux.
details
Objet, éventuellement vide, avec les informations utiles à la correction (champ fautif, limite atteinte, règles concernées…).
v1 peut ajouter de nouveaux codes : traitez un code inconnu selon son statut HTTP.
Champ invalide (details.field) ; corps qui ne suit pas le schéma : champ obligatoire absent, mauvais type ou champ inconnu (details.reason) ; chaîne ou canal inconnu.
url_not_allowed
URL de webhook refusée par la protection SSRF (details.reason).
idempotency_key_reused
Idempotency-Key déjà utilisée pour une requête différente.
Les corps de requête refusent les champs inconnus : une faute de frappe dans un nom de champ donne 422 validation_failed plutôt qu’un champ silencieusement ignoré.
Si une erreur persiste ou ne s’explique pas, écrivez à support@aicscan.io avec le nom de votre espace, la route appelée, l’heure (UTC), le statut HTTP et le code reçu, ainsi que le préfixe de la clé (aic_k3J9xQ2a). N’envoyez jamais la clé complète : en cas de doute, révoquez-la depuis la page Clés d’API.