Référence

Erreurs

Chaque erreur porte un code, le même en REST et sur le WebSocket. Basez votre logique sur ce code : le texte du message peut évoluer, le code jamais.

En REST

JSON
{
  "type": "https://fathomcharts.com/docs/errors#invalid-parameters",
  "title": "Invalid parameters",
  "status": 400,
  "detail": "Invalid indicator parameters",
  "code": "INVALID_PARAMETERS",
  "instance": "req-1b",
  "errors": [
    { "path": "/minimum", "message": "must be >= 1" }
  ]
}
  • code : le code de l’erreur, listé ci-dessous ;
  • detail : une explication lisible ;
  • errors : pour INVALID_PARAMETERS, la liste des problèmes, avec l’emplacement du champ fautif (path) ;
  • instance : l’identifiant de la requête, à communiquer au support si besoin.

Quand une requête historique ou un export dépasse votre budget, la réponse indique aussi son coût (computeUnits) et ce qu’il vous reste (remainingComputeUnits). Les réponses 429 portent un header Retry-After : le nombre de secondes à attendre.

Sur le WebSocket

Une subscription refusée ou interrompue reçoit un message error avec son sub. Seule cette subscription est fermée : la connexion et les autres subscriptions continuent.

JSON
{"sub":"bt","t":"error","code":"UNKNOWN_INDICATOR","message":"unknown indicator `big-trade`"}

Un message que le serveur ne comprend pas (JSON invalide, type inconnu…) reçoit un error sans sub.

Avec le SDK, l’erreur d’une subscription arrête son itération avec une FathomChartsError qui porte le code reçu.

Les problèmes qui ferment toute la connexion (clé refusée, trop de connexions, client trop lent) ne passent pas par un message error mais par un close code.

Liste des codes

CodeHTTPSignificationQue faire
INVALID_PARAMETERS
Invalid parameters
400 · 413 · 415Requête invalide : champ inconnu, manquant, du mauvais type ou hors limites (400), corps de plus de 16 Ko (413), ou corps qui n’est pas du JSON (415).Corrigez la requête. Le champ errors liste chaque problème et son emplacement.
UNKNOWN_INDICATOR
Unknown indicator
404Cet indicateur n’existe pas.Vérifiez l’identifiant dans le catalogue (GET /v1/indicators).
UNKNOWN_INSTRUMENT
Unknown instrument
404Cet instrument n’est pas disponible.Vérifiez le symbole avec GET /v1/instruments. Pour un contrat qui n’est pas diffusé en temps réel, précisez dataset.
NOT_COVERED
Range not covered
402Aucune donnée sur tout ou partie de la période demandée.Réduisez la période. L’estimation liste les jours manquants (missingDays).
WARMING
Warming up
409Le calcul se prépare et n’est pas encore prêt.Réessayez dans quelques instants.
QUOTA_EXCEEDED
Quota exceeded
429 · 409Limite de votre offre atteinte : compute budget ou volume d’export du mois (429), nombre de subscriptions ou de configurations personnalisées (WebSocket), ou 10 clés actives (409).Consultez GET /v1/usage. Réduisez la période, attendez le mois suivant (Retry-After), fermez une subscription ou révoquez une clé.
RATE_LIMITED
Rate limited
429Trop de requêtes en peu de temps.Attendez le nombre de secondes indiqué par Retry-After.
CAPACITY
Capacity reached
503Le service est momentanément saturé.Réessayez avec un backoff exponentiel.
CURSOR_EXPIRED
Cursor expired
410Le cursor de page suivante (next) est trop ancien.Relancez la requête depuis le début.
UNAUTHORIZED
Unauthorized
401Clé ou token absent, invalide, expiré ou révoqué, ou lien de connexion au portail expiré ou déjà utilisé.Vérifiez le header Authorization, ou demandez un nouveau token ou un nouveau lien.
FORBIDDEN
Forbidden
403Vous êtes bien authentifié, mais vous n’avez pas accès à ce que vous demandez : scope manquant sur la clé, instrument ou adresse IP non autorisés, ou offre qui ne couvre pas la demande.Le message précise ce qui manque : ajustez la clé, ou ajoutez l’offre nécessaire.
NOT_FOUND
Not found
404Adresse inconnue, ou clé inexistante.Vérifiez l’adresse et l’identifiant.
CONFLICT
Conflict
409Action impossible dans l’état actuel : clé déjà remplacée, offre déjà détenue, ou pays de facturation servi par un autre prestataire de paiement que celui du compte.Vérifiez l’état actuel avant de recommencer.
WITHDRAWAL_WAIVER_REQUIRED
Withdrawal waiver required
400Paiement lancé sans la renonciation au droit de rétractation, ou avec une ancienne version de son texte.Rechargez l’espace compte, cochez la case, puis recommencez.
SOURCE_DOWN
Source down
— (WebSocket)Les données de cet instrument sont momentanément indisponibles.Réessayez plus tard. GET /v1/instruments donne l’état de chaque instrument.
UPSTREAM_ERROR
Upstream error
502Un service dont nous dépendons a répondu de façon inattendue.Réessayez avec un backoff exponentiel.
INTERNAL
Internal error
500Erreur de notre côté.Réessayez. Si l’erreur persiste, contactez le support avec la valeur instance de la réponse.