Minds Team

Erreurs et limites

Comprendre les erreurs API, les codes de statut et les limites de ressources selon l'offre.

Comprendre les erreurs API, les rate limits et les restrictions des offres.

Format des réponses d'erreur

Toutes les erreurs suivent un format cohérent :

{
  "statusCode": 400,
  "statusMessage": "Name is required",
  "message": "Name is required",
  "url": "/api/v1/minds",
  "error": true
}
ChampDescription
statusCodeCode de statut HTTP
statusMessageDescription d'erreur lisible (définie par le handler pour chaque erreur — pour les erreurs de validation, il s'agit du problème spécifique, p. ex. "Mind not found" ou "Invalid Mind ID format")
messageMême contenu que statusMessage pour les erreurs v1. Réservé à la stack/au contexte supplémentaire dans les réponses 5xx sur les builds de debug.
urlLe chemin de la requête (ajouté par Nuxt H3)
errortrue pour les réponses d'erreur (ajouté par Nuxt H3)

Appuyez-vous toujours sur statusCode pour le traitement programmatique et sur statusMessage (ou message) pour la raison lisible. Les champs url et error sont des métadonnées de commodité fournies par le framework sous-jacent.

Codes de statut HTTP

2xx Succès

CodeStatutDescription
200OKRequête réussie
201CreatedRessource créée avec succès (p. ex. POST /minds, POST /minds/{id}/knowledge)
202AcceptedRequête acceptée pour traitement asynchrone (p. ex. POST /minds/{id}/knowledge avec keywords)
204No ContentRequête réussie, aucun corps de réponse (p. ex. DELETE /minds/{id}/knowledge/{itemId})

4xx Erreurs client

CodeStatutDescription
400Bad RequestParamètres de requête invalides
401UnauthorizedClé API manquante ou invalide
403ForbiddenAccès refusé ou limite d'offre atteinte
404Not FoundLa ressource n'existe pas
415Unsupported Media TypeEn-tête Content-Type incorrect
422Unprocessable EntityRequête bien formée mais impossible à exécuter, par exemple le lancement d’une validation d’Audience alors que l’Audience compte moins de 10 Minds prêts (AUDIENCE_TOO_SMALL)
429Too Many RequestsRate limit dépassé

5xx Erreurs serveur

CodeStatutDescription
500Internal Server ErrorErreur côté serveur
503Service UnavailableService temporairement indisponible

Erreurs courantes

400 Bad Request

Champ requis manquant :

{
  "statusCode": 400,
  "statusMessage": "Name is required"
}

Entrée invalide :

{
  "statusCode": 400,
  "statusMessage": "File too large: document.pdf (55.2MB). Maximum size is 50MB."
}

401 Unauthorized

Clé API manquante :

{
  "statusCode": 401,
  "statusMessage": "Unauthorized"
}

Solution : Incluez l'en-tête Authorization :

-H "Authorization: Bearer minds_your_api_key"

403 Forbidden

Limite d'offre atteinte :

{
  "statusCode": 403,
  "statusMessage": "Starter plan limit reached",
  "message": "Starter plan limit reached",
  "url": "/api/v1/minds",
  "error": true,
  "data": {
    "code": "PLAN_LIMIT",
    "limitType": "sparks",
    "currentPlan": "premium",
    "limit": 100,
    "current": 100
  }
}

Accès refusé :

{
  "statusCode": 403,
  "statusMessage": "Access denied"
}

404 Not Found

La ressource n'existe pas :

{
  "statusCode": 404,
  "statusMessage": "Mind not found"
}

415 Unsupported Media Type

Content-Type incorrect :

{
  "statusCode": 415,
  "statusMessage": "Unsupported Content-Type. Use application/json for links or multipart/form-data for files"
}

Solution : Utilisez le bon en-tête Content-Type :

  • application/json pour les requêtes JSON
  • multipart/form-data pour les téléversements de fichiers

429 Too Many Requests

Rate limit dépassé :

{
  "statusCode": 429,
  "statusMessage": "Too many requests. Please try again later."
}

Rate limits

L'API v1 applique une fenêtre fixe par compte authentifié. La limite de déploiement par défaut est de 300 requêtes par minute, mais elle est configurable. Lisez toujours RateLimit-Limit et RateLimit-Remaining ; après un 429, attendez le nombre de secondes indiqué par Retry-After.

Limites d'offre

Consultez le tableau généré des limites pour les valeurs publiques actuelles. Les ajustements contractuels peuvent différer ; data.limit et data.current dans une erreur authentifiée font donc foi pour cette requête. L'offre Starter apparaît comme "premium" dans les payloads API.

Exemple de limite de Minds

Erreur lorsque la limite est atteinte :

{
  "statusCode": 403,
  "statusMessage": "Starter plan limit reached",
  "message": "Starter plan limit reached",
  "url": "/api/v1/minds",
  "error": true,
  "data": {
    "code": "PLAN_LIMIT",
    "limitType": "sparks",
    "currentPlan": "premium",
    "limit": 100,
    "current": 100
  }
}

Limites de téléversement de connaissance

  • Taille de fichier : Maximum 50 Mo par fichier (toutes offres)
  • Stockage : Pas de limite de stockage explicite actuellement imposée

Limites de clés API

  • Clés maximum : Aucune limite n'est actuellement appliquée.

Échecs de validation d’Audience

Lancer une validation d’Audience sur une Audience de moins de 10 Minds prêts renvoie 422 avec le code AUDIENCE_TOO_SMALL. Une Audience plus grande que ce que votre offre autorise dans une Étude est refusée avec l’erreur standard de limite d’offre décrite plus haut.

Après un lancement réussi, la validation s’exécute en arrière-plan : la plupart des échecs ne sont donc pas des erreurs HTTP. Lisez-les plutôt dans le champ failure du lot de validation. Un lot peut se terminer avec l’un de ces codes :

CodeSignification
AUDIENCE_TOO_SMALLL’Audience compte moins de 10 Minds prêts. Également renvoyé en 422 au lancement de la validation
MINDS_NEED_RETRAININGDes Minds de l’Audience doivent être réentraînés avant de pouvoir répondre
NOT_ENOUGH_QUESTIONSMoins de 8 questions conviennent à l’Audience : rien n’a été posé
NOT_ENOUGH_RESPONSESL’exécution nécessite plus de réponses synthétiques qu’il ne vous en reste
NO_FITTING_SURVEYAucune enquête publiée ne correspond à l’Audience
NO_USABLE_SURVEYAucune des enquêtes ne permet de valider cette Audience
NO_SCOREAucune des enquêtes n’a pu être évaluée pour cette Audience
RUNS_REFUSEDL’exécution de validation n’a pas pu démarrer
SURVEY_NOT_FOUNDUne enquête indiquée est introuvable
SURVEY_FILES_UNREADABLELes fichiers d’enquête importés sont illisibles
SURVEY_RESULTS_NOT_FOUNDLes fichiers importés ne contiennent aucun résultat publié à comparer
VALIDATION_TOO_LARGELa validation demanderait plus de 30 000 réponses

Bonnes pratiques

Gestion des erreurs

Gérez toujours les erreurs :

async function requestJson(url, apiKey, data) {
  const response = await fetch(url, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${apiKey}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  });

  const text = await response.text();
  let result = null;
  if (text) {
    try {
      result = JSON.parse(text);
    } catch {
      if (response.ok) throw new Error('Expected a JSON response');
    }
  }
  if (!response.ok) {
    throw Object.assign(new Error(result?.statusMessage || result?.message || `HTTP ${response.status}`), {
      status: response.status,
      data: result?.data,
      retryAfter: response.headers.get('Retry-After')
    });
  }
  return result;
}

Logique de nouvelle tentative

Mettez en place des retries intelligents :

  • Réessayez les lectures après une réponse temporaire 429 ou 5xx, avec un nombre limité de tentatives, un délai exponentiel et le respect de Retry-After. Ne réessayez une écriture que si le point de terminaison garantit son idempotence, avec la même clé et le même corps. Après un délai dépassé ambigu, vérifiez la ressource ou la tâche existante avant de soumettre à nouveau.
  • Utilisez un backoff exponentiel
  • Définissez un nombre maximum de tentatives
  • Ne réessayez pas sur les erreurs 4xx (sauf 429)

Surveillance

Suivez votre utilisation :

  • Loggez les en-têtes de rate limit
  • Surveillez les taux d'erreur
  • Configurez des alertes pour les erreurs récurrentes
  • Suivez les temps de réponse

Effectuez une mise à niveau au besoin

Passez à une offre supérieure si vous :

  • Atteignez fréquemment les rate limits
  • Avez besoin de plus de minds
  • Nécessitez des téléversements de fichiers plus volumineux
  • Souhaitez un support prioritaire

Voir les offres

Obtenir de l'aide

Vérifier le statut

Surveillez l'état de notre service :

Contacter le support

Si vous rencontrez :

  • Des erreurs 500 persistantes
  • Un rate limiting incorrect
  • Un comportement inattendu

Contactez-nous :

Consulter la documentation

Référence des codes de statut

Référence rapide pour tous les codes de statut HTTP :

2xx Success
├─ 200 OK
└─ 201 Created

4xx Client Error
├─ 400 Bad Request
├─ 401 Unauthorized
├─ 403 Forbidden
├─ 404 Not Found
├─ 415 Unsupported Media Type
└─ 429 Too Many Requests

5xx Server Error
├─ 500 Internal Server Error
└─ 503 Service Unavailable