Documentation / Guides

Erreurs et limites de requêtes

L’API répond avec des codes de statut HTTP standard et un corps JSON qui explique l’erreur.

Format des erreurs

400 Bad Request
{
  "error": "q must contain 3–120 characters"
}

Codes de statut

Code Signification
200 Succès.
400 Un paramètre est manquant ou invalide ; le message précise lequel.
401 La clé est manquante, mal formée, révoquée ou expirée.
403 La clé ne permet pas cette recherche.
404 Endpoint inconnu, ou fiche que la source ne publie plus.
429 Limite de requêtes dépassée.
503 Service temporairement indisponible.

Limites de requêtes

Chaque clé peut effectuer 300 requêtes par minute, et une limite globale protège le service pour tous. Les requêtes qui dépassent la limite reçoivent une réponse 429 avec un en-tête Retry-After exprimé en secondes.

Nouvelles tentatives

Relancez les requêtes ayant reçu 429 ou 503 après le nombre de secondes indiqué par Retry-After, avec un nombre limité de tentatives. Ne relancez pas celles qui ont reçu d’autres erreurs 4xx : la requête doit être modifiée.

Node.js
async function medifontis(path, params, attempts = 3) {
  for (let attempt = 1; ; attempt++) {
    const response = await fetch(`https://api.medifontis.com${path}?${new URLSearchParams(params)}`, {
      headers: { Authorization: `Bearer ${process.env.MEDIFONTIS_API_KEY}` },
    })
    if (response.ok) return response.json()
    if (![429, 503].includes(response.status) || attempt === attempts) {
      throw new Error(`Medifontis ${response.status}: ${(await response.json()).error}`)
    }
    const seconds = Number(response.headers.get('retry-after')) || 2 ** attempt
    await new Promise(resolve => setTimeout(resolve, seconds * 1000))
  }
}

Mise en cache

Les réponses comportent l’en-tête Cache-Control: no-store. Si vous stockez des résultats dans votre propre système, conservez leur retrievedAt et actualisez-les avec GET /v1/drugs/record.