> ## Documentation Index
> Fetch the complete documentation index at: https://help.withallo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Codes d'erreur

> Catalogue complet de tous les codes d'erreur de l'API avec instructions de resolution

Chaque reponse d'erreur inclut un champ `code` stable. Le `doc_url` de chaque erreur renvoie directement a l'entree correspondante ci-dessous. Les codes sont des contrats stables — ils ne changeront pas sans un changement de version de l'API.

## Erreurs d'authentification — 401

<table>
  <thead>
    <tr><th>Code</th><th>Description</th></tr>
  </thead>

  <tbody>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`API_KEY_INVALID`</td><td>L'API key fournie est invalide ou n'existe pas. Verifiez votre API key dans [Parametres > API](https://web.withallo.com/settings/api).</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`API_KEY_REVOKED`</td><td>Cette API key a ete revoquee. Creez une nouvelle API key dans [Parametres > API](https://web.withallo.com/settings/api).</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`UNAUTHORIZED`</td><td>L'authentification est requise. Fournissez une API key valide dans le header `Authorization` sous la forme `Api-Key <your-key>`.</td></tr>
  </tbody>
</table>

## Erreurs de permission — 403

<table>
  <thead>
    <tr><th>Code</th><th>Description</th></tr>
  </thead>

  <tbody>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`API_KEY_INSUFFICIENT_SCOPE`</td><td>Cette API key ne dispose pas du scope requis. Creez une nouvelle cle avec le scope necessaire. Voir la [correspondance scopes-endpoints](/fr/v2/api-reference/guides/authentication#correspondance-scopes-endpoints).</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`API_KEY_TRIAL_NOT_ALLOWED`</td><td>L'acces API n'est pas disponible sur les plans d'essai. Passez a un plan payant.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`FORBIDDEN`</td><td>Vous n'avez pas la permission d'effectuer cette action. Contactez l'administrateur de votre workspace.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`A2P_NOT_ENABLED`</td><td>Le SMS A2P (Application-to-Person) n'est pas active pour ce numero. Completez l'enregistrement 10DLC dans le tableau de bord Allo.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`ALLO_NUMBER_FORBIDDEN`</td><td>Vous n'avez pas accès à cette ligne Allo. Listez les lignes auxquelles vous avez accès avec `GET /v2/api/numbers`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`NOT_NOTE_AUTHOR`</td><td>Seul l'auteur de la note peut la modifier ou la supprimer.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`NOT_COMMENT_AUTHOR`</td><td>Seul l'auteur du commentaire peut le modifier.</td></tr>
  </tbody>
</table>

## Erreurs de validation — 400

<table>
  <thead>
    <tr><th>Code</th><th>Description</th></tr>
  </thead>

  <tbody>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_REQUEST_BODY`</td><td>Le corps de la requete n'a pas pu etre analyse. Assurez-vous que le Content-Type est `application/json` et que le corps est du JSON bien forme.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`MISSING_PARAMETER`</td><td>Un parametre de requete obligatoire est manquant. Ajoutez le parametre nomme dans le champ `param`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`MISSING_HEADER`</td><td>Un header obligatoire est manquant. Ajoutez le header nomme dans le champ `param`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`UNSUPPORTED_MEDIA_TYPE`</td><td>Le Content-Type n'est pas supporte. Utilisez `application/json`. Retourne `415`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_PAGE_SIZE`</td><td>La valeur du parametre `size` est invalide. Fournissez une valeur numerique entre 1 et 100.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_SEARCH_QUERY`</td><td>Le parametre `search` doit contenir au moins un caractere alphanumerique. Les caracteres speciaux sont supprimes automatiquement — fournissez des mots-cles en texte brut (par ex., `"john"` ou `"missed call"`). Les mots sont combines avec AND et font l'objet d'une correspondance par prefixe.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`MISSING_ALLO_NUMBER`</td><td>Le parametre `allo_number` est requis. Ajoutez-le a votre requete. Listez vos numeros avec `GET /v2/api/numbers`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_DATE_RANGE`</td><td>La plage de dates est invalide : `from` doit etre anterieur a `to`. Utilisez le format `YYYY-MM-DD`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`DATE_RANGE_TOO_WIDE`</td><td>La plage de dates depasse le nombre maximum de jours autorise. Reduisez votre plage de dates.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_ITEM_ID`</td><td>Le prefixe de l'ID de l'element n'est pas reconnu. Utilisez les IDs de l'API conversations : `cll-` pour les appels, `msg-` pour les messages.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`BATCH_TOO_LARGE`</td><td>La taille du lot depasse le maximum de 100. Divisez votre requete en lots de 100 ou moins.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`TAGS_REQUIRED`</td><td>Au moins un tag est requis. Fournissez un tableau `tags` non vide. Listez les tags disponibles avec `GET /v2/api/tags`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_ACTION`</td><td>Valeur d'action inconnue. Utilisez l'une des valeurs suivantes : `READ`, `UNREAD`, `ARCHIVE`, `UNARCHIVE`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_GRANULARITY`</td><td>Valeur de granularite inconnue. Utilisez l'une des valeurs suivantes : `DAY`, `WEEK`, `MONTH`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_GROUP_BY`</td><td>Valeur `group_by` inconnue. Consultez le champ `suggestion` pour les valeurs autorisees.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`UNSUPPORTED_EXTEND_VALUE`</td><td>Valeur `extend` inconnue. Actuellement supporte : `transcript`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`METHOD_NOT_ALLOWED`</td><td>Methode HTTP non supportee pour cet endpoint. Consultez le champ `suggestion` pour les methodes supportees. Retourne `405`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_PHONE_FORMAT`</td><td>Le numero de telephone n'est pas au format E.164 valide. Utilisez le format : `+14155551234` (prefixe +, code pays, sans espaces ni tirets).</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_TO_NUMBER`</td><td>Le numero de destination est invalide ou injoignable. Fournissez un numero de telephone E.164 valide.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`TO_NUMBER_COUNTRY_MISMATCH`</td><td>Les SMS internationaux ne sont pas supportes pour ce numero. Utilisez un numero de telephone dans le meme pays que le destinataire.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`NUMBER_NOT_SMS_ENABLED`</td><td>Ce numero n'a pas les SMS sortants actives. Activez les SMS dans le tableau de bord, ou utilisez un autre numero depuis `GET /v2/api/numbers`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`SENDER_ID_INBOX_CANNOT_SEND_SMS`</td><td>Les boites de reception Sender ID ne peuvent pas envoyer de SMS. Utilisez un numero de telephone classique a la place.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`SENDER_ID_NOT_ACTIVE`</td><td>Le sender ID n'est pas actif. Activez le sender ID dans le tableau de bord Allo avant d'envoyer.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`MESSAGE_NOT_COMPLIANT`</td><td>Le contenu du message ne respecte pas les regles de conformite. Supprimez le contenu non autorise et reessayez.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`LANDLINE_NUMBER_NOT_SUPPORTED`</td><td>Le numero de destination est un fixe et ne peut pas recevoir de SMS. Fournissez un numero de telephone mobile a la place.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`EMPTY_NOTE_CONTENT`</td><td>Le contenu de la note ou du commentaire est vide. Fournissez une valeur `content` non vide.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`NOTE_CONTENT_TOO_LONG`</td><td>Le contenu de la note ou du commentaire dépasse le maximum de 4 000 caractères. Raccourcissez le contenu.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`MISSING_ALLO_NUMBER_OR_SENDER_ID`</td><td>Fournissez soit `allo_number` (ligne Allo au format E.164), soit `sender_id` (boîte sender ID). Listez vos numéros avec `GET /v2/api/numbers`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`CONTACT_NOTES_UNAVAILABLE`</td><td>Les notes de contact ne sont pas encore disponibles pour ce workspace — il doit être sur le modèle de contacts v2. Contactez le support si vous pensez qu'il s'agit d'une erreur.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INVALID_THREAD_ENTITY_TYPE`</td><td>Valeur `entity_type` inconnue. Utilisez l'une des valeurs suivantes : `CALL`, `TEXT_MESSAGE`, `CONVERSATION_NOTE`.</td></tr>
  </tbody>
</table>

## Erreurs de ressource introuvable — 404

<table>
  <thead>
    <tr><th>Code</th><th>Description</th></tr>
  </thead>

  <tbody>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`CONVERSATION_ITEM_NOT_FOUND`</td><td>Aucun appel ou message trouve avec cet ID. Recherchez l'element avec `POST /v2/api/conversations/items/search`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`MEMBER_NOT_FOUND`</td><td>Aucun membre d'equipe trouve avec cet ID. Listez les membres de l'equipe avec `GET /v2/api/users`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`TEAM_NOT_FOUND`</td><td>Aucune equipe trouvee pour l'utilisateur authentifie. Verifiez la configuration de l'equipe dans le tableau de bord Allo.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`USER_NOT_FOUND`</td><td>Le compte utilisateur authentifie n'a pas ete trouve. Verifiez que l'API key est associee a un compte actif.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`BUSINESS_NOT_FOUND`</td><td>Aucun compte business trouve pour l'utilisateur authentifie. Assurez-vous que le compte a termine l'onboarding.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`CALL_NOT_FOUND`</td><td>Aucun appel trouve avec cet ID. Recherchez les appels avec `POST /v2/api/conversations/items/search`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`TEXT_MESSAGE_NOT_FOUND`</td><td>Aucun message texte trouve avec cet ID. Recherchez les messages avec `POST /v2/api/conversations/items/search`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`PHONE_NUMBER_NOT_FOUND`</td><td>Aucun numero de telephone trouve pour votre compte. Listez vos numeros avec `GET /v2/api/numbers`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`FROM_NUMBER_NOT_FOUND`</td><td>Aucun numero de telephone Allo trouve pour votre compte. Listez vos numeros disponibles avec `GET /v2/api/numbers`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`TAG_NOT_FOUND`</td><td>Le tag n'existe pas sur cet element de conversation. Il a peut-etre deja ete supprime.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`SENDER_ID_NOT_FOUND`</td><td>Aucun sender ID actif trouve. Verifiez vos sender IDs dans le tableau de bord Allo.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`ENDPOINT_NOT_FOUND`</td><td>Aucun endpoint trouve a cette URL. Verifiez l'URL et la methode HTTP. Voir la [reference API](/fr/v2/api-reference/introduction).</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`PERSON_NOT_FOUND`</td><td>Aucune personne trouvée avec cet ID (`per-*`). Recherchez des personnes avec `POST /v2/api/crm/people/search`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`NOTE_NOT_FOUND`</td><td>Aucune note trouvée avec cet ID. Listez les notes d'une conversation avec `GET /v2/api/conversations/{contact_number}/notes`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`THREAD_NOT_FOUND`</td><td>Aucun fil trouvé avec cet ID. Retrouvez le fil d'un élément avec `GET /v2/api/threads?entity_type=...&entity_id=...`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`THREAD_COMMENT_NOT_FOUND`</td><td>Aucun commentaire de fil trouvé avec cet ID. Récupérez le fil avec `GET /v2/api/threads/{id}` pour voir ses commentaires.</td></tr>
  </tbody>
</table>

## Erreurs de conflit — 409

<table>
  <thead>
    <tr><th>Code</th><th>Description</th></tr>
  </thead>

  <tbody>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`TAG_ALREADY_EXISTS`</td><td>Ce tag est deja applique a l'element de conversation. Aucune action necessaire.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`OTHER_TRANSACTION_IN_PROGRESS`</td><td>Une autre operation sur cette ressource est en cours. Attendez un moment et reessayez.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`NUMBER_ALREADY_ASSIGNED`</td><td>Un ou plusieurs numeros de telephone sont deja attribues a des personnes existantes. Passez `allow_duplicate_number` a `true` pour creer malgre tout, ou mettez a jour la personne existante avec `PUT /v2/api/crm/people/{id}`.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`IDEMPOTENCY_KEY_REUSE`</td><td>Cette cle d'idempotence a deja ete utilisee pour un endpoint ou une methode HTTP differente. Utilisez une cle unique par requete distincte. Voir [Idempotence](/fr/v2/api-reference/guides/error-handling#idempotence).</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`THREAD_ALREADY_EXISTS`</td><td>L'élément de conversation a déjà un fil (un fil par élément). Retrouvez-le avec `GET /v2/api/threads?entity_type=...&entity_id=...` et ajoutez un commentaire avec `POST /v2/api/threads/{id}/comments`.</td></tr>
  </tbody>
</table>

## Erreurs de rate limit — 429

<table>
  <thead>
    <tr><th>Code</th><th>Description</th></tr>
  </thead>

  <tbody>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`RATE_LIMIT_EXCEEDED`</td><td>Rate limit par seconde depasse. Toujours `retryable: true`. Attendez `retry_after_seconds` avant de reessayer.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`TRIAL_SMS_LIMIT_REACHED`</td><td>Limite quotidienne de SMS du compte d'essai atteinte. Passez a un plan superieur pour envoyer plus de messages.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`SMS_LIMIT_REACHED`</td><td>Limite quotidienne de SMS API atteinte. Attendez demain ou contactez le support pour augmenter votre limite.</td></tr>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`DAILY_SMS_LIMIT_REACHED`</td><td>Limite quotidienne de SMS atteinte pour ce numero. Attendez demain pour envoyer plus de messages depuis ce numero.</td></tr>
  </tbody>
</table>

## Erreurs serveur — 500

<table>
  <thead>
    <tr><th>Code</th><th>Description</th></tr>
  </thead>

  <tbody>
    <tr><td style={{ whiteSpace: 'nowrap' }}>`INTERNAL_SERVER_ERROR`</td><td>Une erreur inattendue s'est produite. Reessayez la requete. Si le probleme persiste, contactez [support@withallo.com](mailto:support@withallo.com) avec votre `request_id`.</td></tr>
  </tbody>
</table>
