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

# Codes d'erreur de l'API et comment les corriger

> Tous les codes d'erreur de l'API Square Cloud, classés par domaine, avec leur statut HTTP, leur sens et la marche à suivre, plus les règles pour réessayer.

Chaque requête en échec vers l'API Square Cloud répond avec un statut HTTP et un corps JSON qui contient un `code` lisible par machine. Cette page liste tous les codes, classés par domaine. Chaque page d'endpoint liste aussi les codes que cet endpoint renvoie le plus souvent.

<Note>
  [Blob Storage](/fr/blob-reference/errors) a sa propre liste de codes, et l'[AI Gateway](/fr/api-reference/ai-gateway#erreurs) répond au format d'erreur d'OpenAI avec des codes en minuscules. Aucun des deux n'est couvert ici.
</Note>

## Format des erreurs

```json theme={"system"}
{
  "status": "error",
  "code": "APP_NOT_FOUND",
  "message": "Optional explanation for humans."
}
```

| Champ | Description |
| - | - |
| `status` | Toujours `"error"` en cas d'échec. |
| `code` | Le code d'erreur, en `UPPER_SNAKE_CASE`. Appuyez votre logique sur ce champ. |
| `message` | Facultatif. Une explication lisible par un humain qui peut changer à tout moment : affichez-la, mais ne l'analysez jamais. |

<Info>
  La liste des codes s'allonge avec le temps. Traitez un code inconnu comme un échec générique du statut HTTP qui l'accompagne : corrigez la requête sur un `4xx`, patientez sur un `429`, et réessayez plus tard sur un `5xx`.
</Info>

## Nouvelles tentatives

L'API n'envoie pas d'en-tête `Retry-After`, la décision vous revient donc. Une politique sûre :

| Réponse | Que faire |
| - | - |
| `400`, `401`, `403`, `404`, `409`, `413`, `415` | Ne relancez pas la même requête : elle échouera de la même façon. Corrigez d'abord l'entrée, l'identifiant ou le plan. |
| `429` | Patientez avant la requête suivante. Réessayer en boucle vous maintient bloqué. Consultez [Limites de débit](#limites-de-débit). |
| `503 UPLOAD_BUSY`, `503 ANALYTICS_BUSY` | Réessayez après une courte pause, avec un backoff exponentiel. |
| `503 DATABASE_UNAVAILABLE` | Réessayez une lecture après quelques secondes. Une écriture a peut-être déjà été appliquée : vérifiez la ressource avant de la répéter. |
| `500` et autres `5xx` | Réessayez une ou deux fois avec backoff. Si l'échec persiste, consultez l'[état du service](/fr/api-reference/endpoint/service/status). |

`202 SNAPSHOT_PROCESSING` conserve l'enveloppe d'erreur pour des raisons de compatibilité, mais ce n'est **pas un échec** : le snapshot est encore en cours de génération et apparaîtra de lui-même dans la liste. Ne le redemandez pas.

## Limites de débit

Deux codes répondent `429`, et ils n'ont pas le même sens :

* **`RATE_LIMITED`** : le budget de requêtes de votre compte ou de votre clé API, compté par tranche de 60 secondes et fixé par votre plan (voir les [valeurs par plan](/fr/api-reference/limitations-and-restrictions#limites-de-lapi)). Au-delà, l'API refuse vos requêtes pendant 30 minutes au maximum. Quelques endpoints répondent aussi `RATE_LIMITED` pour leurs propres limites, et une adresse IP qui continue d'envoyer des clés API n'appartenant à aucun compte est bloquée pendant une courte période.
* **`KEEP_CALM`** : la limite propre à un endpoint, par exemple un redémarrage toutes les quelques secondes. Patientez un instant et réessayez. La limite de chaque endpoint figure sur sa page.

## Authentification et permissions

| Code | HTTP | Signification et solution |
| - | - | - |
| `ACCESS_DENIED` | 401 | La clé API est manquante, mal saisie, révoquée ou expirée, ou son compte n'existe plus. Vérifiez la clé dans les [paramètres de sécurité de votre compte](https://squarecloud.app/fr/account/security) et ne réessayez pas en boucle. |
| `MISSING_SCOPE` | 403 | La clé est valide mais n'a pas le scope requis par cet endpoint. Les scopes ne sont pas modifiables : créez une clé avec ce scope. Consultez [Scopes](/fr/api-reference/authentication#scopes). |
| `RESOURCE_NOT_ALLOWED` | 403 | La clé est restreinte à des applications et bases de données qui n'incluent pas celle-ci, ou l'endpoint s'applique à tout le compte et la clé est restreinte. Utilisez une clé qui couvre la ressource. |
| `PERMISSION_DENIED` | 403 | Votre rôle dans le workspace n'autorise pas cette action sur une application partagée, par exemple lire `.env` sans le rôle `admin`. Consultez les [rôles de workspace](/fr/api-reference/endpoint/workspace/members/invite#rôles). |
| `SCOPE_NOT_GRANTABLE` | 403 | Une clé API restreinte a tenté d'accorder plus d'accès qu'elle n'en détient, par exemple ajouter un membre `admin` avec une clé sans `envs:write`. Utilisez une clé qui détient tous les scopes de ce rôle, ou le tableau de bord. |
| `UPGRADE_REQUIRED` | 402 / 403 | La fonctionnalité nécessite un plan supérieur : les bases de données, les domaines personnalisés et les workspaces nécessitent Standard ou plus, les logs et la performance réseau nécessitent Pro ou plus, et lister les snapshots du compte nécessite un plan actif (`402`). Le `message` indique le plan lorsque c'est possible. |

## Validation des requêtes

| Code | HTTP | Signification et solution |
| - | - | - |
| `INVALID_JSON_BODY` | 400 | Le corps n'est pas un JSON valide. Envoyez `Content-Type: application/json` et un corps bien formé. |
| `INVALID_INPUT` | 400 | Un champ n'a pas passé la validation. Le `message` indique lequel. |
| `INVALID_ID` | 400 | Un id requis, généralement `workspaceId`, est manquant ou mal formé. |
| `INVALID_CONTENT_TYPE` | 415 | L'envoi et le commit nécessitent `multipart/form-data` avec le zip dans un champ `file`. |
| `PAYLOAD_TOO_LARGE` | 413 | Le corps dépasse ce que cet endpoint accepte. |
| `ROUTE_NOT_FOUND` | 404 | Le chemin ou la méthode HTTP est incorrect. Comparez-le avec la page de l'endpoint. |

## Quotas et limites de connexion

| Code | HTTP | Signification et solution |
| - | - | - |
| `RATE_LIMITED` | 429 | Le budget de requêtes de votre compte ou de votre clé a été atteint, ou la limite propre à un endpoint. Consultez [Limites de débit](#limites-de-débit). |
| `KEEP_CALM` | 429 | Trop de requêtes vers cet endpoint en peu de temps. Patientez un instant et réessayez. |
| `DAILY_SNAPSHOTS_LIMIT_REACHED` | 429 | L'allocation de snapshots manuels par 24 heures de votre plan est épuisée. Attendez avant le prochain, ou passez à un plan supérieur pour une allocation plus grande. |
| `REALTIME_MAX_CONNECTIONS` | 429 | Votre compte a déjà 5 connexions [temps réel](/fr/api-reference/endpoint/apps/realtime) ouvertes. Fermez-en une d'abord. |
| `REALTIME_MAX_CONNECTIONS_APP` | 429 | L'application a déjà 30 connexions temps réel ouvertes, tous utilisateurs confondus. |

## Applications

| Code | HTTP | Signification et solution |
| - | - | - |
| `APP_NOT_FOUND` | 404 | L'application n'existe pas, ne vous appartient pas, ou vous n'êtes pas membre du workspace où elle est partagée. Vérifiez l'id. Les routes de workspace répondent `400` lorsque `appId` manque dans le corps. |
| `CONTAINER_ALREADY_STARTED` | 409 | L'application ou la base de données est déjà en cours d'exécution. Vous pouvez le traiter comme un succès. |
| `CONTAINER_ALREADY_STOPPED` | 409 | L'application ou la base de données est déjà arrêtée. Vous pouvez le traiter comme un succès. |
| `CONTAINER_TEMPORARILY_SUSPENDED` | 409 | La ressource est suspendue. Consultez l'e-mail du compte pour en connaître la raison. |
| `CONTAINER_NOT_FOUND` | 409 | Le conteneur de la ressource est introuvable sur son serveur. Réessayez dans un instant, et contactez le support si le problème persiste. |
| `CONTAINER_INSUFFICIENT_DISK_SPACE` | 409 | Il n'y a pas assez d'espace disque pour démarrer. Supprimez les fichiers inutiles et réessayez. |
| `CONTAINER_NETWORK_CONFLICT` | 409 | Un conflit de réseau ou de port a empêché le démarrage. Réessayez dans un instant. |
| `ACTION_FAILED` | 409 | Le démarrage, l'arrêt ou le redémarrage a été refusé pour une autre raison, par exemple pendant un déploiement. Vérifiez le statut et réessayez. |
| `RESTORE_IN_PROGRESS` | 403 | Une restauration de snapshot est en cours sur cette ressource. Attendez qu'elle se termine avant de supprimer l'application, ou de démarrer, arrêter ou supprimer la base de données. |
| `DELETE_FAILED` | 404 | Le nœud qui héberge la ressource a refusé la suppression. Réessayez. Dans le gestionnaire de fichiers, le même code répond `400`. |
| `LOGS_UNAVAILABLE` | 404 | Les logs n'ont pas pu être lus : l'application est hors ligne, n'a jamais été déployée, ou le nœud n'a pas répondu. Réessayez sous peu. |
| `METRICS_NOT_SUPPORTED` | 400 | Les métriques ne sont collectées que pour les applications disposant d'au moins 512 Mo de RAM. |

## Envoi et commit

| Code | HTTP | Signification et solution |
| - | - | - |
| `INVALID_FILE` | 400 | Le formulaire ne contient aucun fichier dans le champ `file`. |
| `INVALID_FILENAME` | 400 | Le nom du fichier contient des séparateurs de chemin, `..` ou des caractères de contrôle. |
| `INVALID_PATH` | 400 | Le `path` d'un commit contient une traversée de chemin ou des caractères shell. |
| `FILE_TOO_LARGE` | 413 | Le zip dépasse 100 Mo. |
| `UPLOAD_ABORTED` | 400 | La connexion s'est fermée avant la fin de l'envoi. Envoyez à nouveau. |
| `UPLOAD_BUSY` | 503 | Trop d'envois sont en cours sur la plateforme. Réessayez après une courte pause. |
| `STORAGE_UPLOAD_FAILED` | 400 | Le zip n'a pas pu être stocké. Réessayez plus tard. |
| `UPLOAD_FAILED` | 400 | L'envoi n'a pas pu être traité. Réessayez, et vérifiez le zip si cela se reproduit. |
| `COMMIT_FAILED` | 400 | Le commit n'a pas pu être appliqué. Réessayez, et vérifiez le zip si cela se reproduit. |
| `INSUFFICIENT_MEMORY` | 400 | Votre plan n'a pas assez de mémoire libre pour l'application ou la base de données, ou `MEMORY` est inférieur au minimum : 256 Mo, ou 512 Mo pour un site web avec un `SUBDOMAIN`. Ajustez `MEMORY`, supprimez quelque chose, ou passez à un plan supérieur. |
| `CLUSTER_SELECTION_FAILED` | 400 | Aucun serveur n'avait de place pour la nouvelle application ou base de données à ce moment. Réessayez plus tard. |
| `CLUSTER_MAINTENANCE_TRY_LATER` | 503 | Les nouvelles applications et bases de données sont suspendues pour maintenance. Réessayez plus tard. |
| `EMPTY_RESPONSE` | 400 | Le serveur qui a reçu l'envoi n'a donné aucune réponse exploitable, donc l'application n'a pas été créée. Envoyez à nouveau. |

## Vérifications du zip et de la configuration

Lorsque vous [envoyez](/fr/api-reference/endpoint/apps/upload) une application, le serveur qui va l'exécuter vérifie le zip et son [fichier de configuration](/fr/getting-started/config-file) (`squarecloud.app` ou `squarecloud.config`). Une vérification en échec répond `400` avec l'un de ces codes, et rien n'est déployé. Corrigez le zip et envoyez-le à nouveau. Un [commit](/fr/api-reference/endpoint/apps/commit) ne lit pas le fichier de configuration : parmi ces codes, il ne peut échouer qu'avec `FAILED_EXTRACT` ou `CONTAINER_INSUFFICIENT_DISK_SPACE`.

| Code | HTTP | Signification et solution |
| - | - | - |
| `FAILED_EXTRACT` | 400 | Le zip n'a pas pu être extrait. Recréez-le avec un outil zip standard et vérifiez qu'il n'est pas endommagé. |
| `DOWNLOAD_FAILED` | 400 | Le serveur n'a pas pu récupérer le zip après sa réception. Envoyez à nouveau. |
| `MISSING_CONFIG` | 400 | Le zip n'a pas de `squarecloud.app` ni de `squarecloud.config` à sa racine, ou le fichier est vide. |
| `MISSING_MEMORY`, `MISSING_DISPLAY_NAME`, `MISSING_VERSION` | 400 | Un champ obligatoire du fichier de configuration est manquant ou vide. Le code nomme le premier champ manquant. |
| `MISSING_MAIN` | 400 | La configuration n'a ni [`MAIN`](/fr/getting-started/config-file#main) ni [`RUNTIME`](/fr/getting-started/config-file#runtime). Définissez l'un des deux. |
| `INVALID_MAIN` | 400 | `MAIN` contient des caractères autres que des lettres, des chiffres, `_`, `.`, `/` et `-`, ou dépasse 32 caractères. Sans `RUNTIME`, il échoue aussi lorsque le fichier n'est pas dans le zip, est vide, pointe hors du projet, ou n'a pas d'extension ou une extension qui ne correspond à aucun langage pris en charge. |
| `INVALID_RUNTIME` | 400 | `RUNTIME` ne fait pas partie des valeurs prises en charge listées dans la référence du [fichier de configuration](/fr/getting-started/config-file#runtime). |
| `INVALID_VERSION` | 400 | `VERSION` doit valoir `recommended` ou `latest`. Un numéro de version exact est refusé. |
| `INVALID_START` | 400 | `START` dépasse 256 caractères. |
| `INVALID_DEPENDENCY` | 400 | Le fichier de dépendances du langage est manquant ou vide : `package.json` pour JavaScript et TypeScript, `requirements.txt` ou `pyproject.toml` pour Python, `go.mod` ou `go.work` pour Go, `Cargo.toml` pour Rust, `Gemfile` pour Ruby, `mix.exs` pour Elixir. |
| `INVALID_DISPLAY_NAME` | 400 | `DISPLAY_NAME` doit comporter de 1 à 32 caractères : lettres, chiffres, espaces, `_` et `-`. |
| `INVALID_DESCRIPTION` | 400 | `DESCRIPTION` dépasse 280 caractères. |
| `INVALID_SUBDOMAIN` | 400 | `SUBDOMAIN` est mal formé, réservé ou déjà pris. Choisissez-en un autre. |
| `CONTAINER_INSUFFICIENT_DISK_SPACE` | 400 | Lors d'un commit, il n'y a pas assez d'espace disque pour les nouveaux fichiers. Supprimez les fichiers inutiles et refaites le commit. |
| `ACCESS_FORBIDDEN` | 400 | Le serveur n'a pas pu charger votre compte pour cet envoi. Réessayez, et contactez le support si le problème persiste. |

## Variables d'environnement

| Code | HTTP | Signification et solution |
| - | - | - |
| `STATIC_APP_ENV_NOT_SUPPORTED` | 400 | Les sites statiques ne prennent pas en charge les variables d'environnement. |
| `INVALID_ENV_CONTENT` | 400 | `envs` est manquant ou n'a pas la bonne forme : un objet pour ajouter ou remplacer, un tableau de clés pour supprimer. |
| `TOO_MANY_ENV_VARS` | 400 | L'application aurait plus de 256 variables. |
| `ENV_NAME_TOO_LONG` | 400 | Une clé dépasse 1024 caractères, ou n'est pas une chaîne. |
| `ENV_CONTENT_TOO_LONG` | 400 | Une valeur dépasse 4096 caractères. |
| `READ_FAILED` | 400 | Les variables n'ont pas pu être lues depuis l'application. Réessayez. La route du certificat utilise le même code. |

## Fichiers

| Code | HTTP | Signification et solution |
| - | - | - |
| `INVALID_PATH` | 400 | Le chemin contient une traversée ou des caractères invalides, dépasse 256 caractères, ou la source et la destination d'un déplacement sont identiques. |
| `BLOCKED_PATH` | 403 | Le chemin se trouve dans un répertoire protégé, ou votre rôle dans le workspace ne peut pas écrire ce fichier. |
| `INVALID_ENCODING` | 400 | `encoding` n'accepte que `base64`. |
| `INVALID_CONTENT` | 400 | `content` est manquant, a une forme non prise en charge, ou n'est pas du base64 valide. |
| `FILE_NOT_FOUND` | 404 | Aucun fichier ni répertoire n'existe à ce chemin. |
| `FILE_TOO_LARGE` | 413 | Le gestionnaire de fichiers lit et écrit des fichiers de 10 Mo au maximum. Utilisez le [commit](/fr/api-reference/endpoint/apps/commit) pour les fichiers plus volumineux. |
| `RENAME_FAILED` | 400 | Le fichier n'a pas pu être déplacé ou renommé. Réessayez. |
| `DELETE_FAILED` | 400 | Le fichier n'a pas pu être supprimé. Réessayez. |
| `INVALID_DISPLAY_NAME`, `INVALID_DESCRIPTION`, `INVALID_MEMORY`, `INVALID_AUTORESTART`, `INVALID_SUBDOMAIN` | 400 | Une écriture dans le [fichier de configuration](/fr/getting-started/config-file) contient un champ qui échoue à la validation, ou un `SUBDOMAIN` déjà pris. Corrigez ce champ. |
| `CANNOT_SET_SUBDOMAIN` | 400 | La configuration d'un site web n'a pas de `SUBDOMAIN`. Un site web en conserve toujours un : remettez-le. |
| `SAVE_FAILED` | 500 | La nouvelle configuration n'a pas pu être enregistrée. Réessayez. |

## Déploiements et GitHub

| Code | HTTP | Signification et solution |
| - | - | - |
| `INVALID_ACCESS_TOKEN` | 400 | Le jeton du webhook n'est ni un jeton GitHub (`ghp_...`, `github_pat_...`) ni `@`. |
| `MISSING_REQUIRED_FIELDS` | 400 | `repositoryName` ou `repositoryBranch` est manquant. |
| `INVALID_BRANCH_LENGTH` | 400 | Le nom de la branche dépasse 256 caractères. |
| `BRANCH_NOT_FOUND` | 400 | La branche n'existe pas dans le dépôt. |
| `GIT_ALREADY_CONFIGURED` | 400 | L'application a déjà un dépôt lié. Déliez-le d'abord. |
| `GIT_NOT_CONFIGURED` | 400 | L'application n'a aucun dépôt lié à délier. |
| `GITHUB_NOT_CONNECTED` | 403 | Votre compte Square Cloud n'a pas de connexion GitHub fonctionnelle. Connectez ou reconnectez GitHub dans le tableau de bord. |
| `REPOSITORY_NOT_AVAILABLE` | 403 | La GitHub App de Square Cloud n'est pas installée sur le dépôt via votre compte GitHub. |
| `REPOSITORY_PERMISSION_REQUIRED` | 403 | Votre compte GitHub a besoin d'un accès en écriture au dépôt. |
| `REPOSITORY_NOT_FOUND` | 404 | Le dépôt n'existe pas ou votre compte GitHub ne peut pas le voir. |
| `REPOSITORY_BRANCH_ALREADY_CONFIGURED` | 409 | Une autre application, de n'importe quel compte, utilise déjà ce dépôt et cette branche. |
| `FAILED_TO_FETCH` | 502 | GitHub n'a pas confirmé la branche. Réessayez. |
| `VALIDATION_FAILED` | 500 / 502 | Le dépôt n'a pas pu être validé. Réessayez. |
| `VALIDATION_TIMEOUT` | 504 | La validation du dépôt a pris trop de temps. Réessayez. |

Un déploiement Git en échec n'est pas une erreur HTTP : il apparaît dans l'[historique des déploiements](/fr/api-reference/endpoint/apps/deploy/list) sous forme d'événement avec `state: "error"` et un `code` comme `DEPLOY_FAILED`.

## Réseau et domaines

| Code | HTTP | Signification et solution |
| - | - | - |
| `INVALID_TIME_RANGE` | 400 | `start` ou `end` est manquant ou mal formé, ou `start` est postérieur à `end`. |
| `INVALID_FILTER` | 400 | Un filtre de l'endpoint d'analytics a un format incorrect. |
| `UNABLE_TO_FETCH_ANALYTICS`, `UNABLE_TO_FETCH_ERRORS`, `UNABLE_TO_FETCH_PERFORMANCE` | 500 | Le fournisseur edge n'a pas renvoyé les données. Réessayez plus tard. |
| `ANALYTICS_BUSY` | 503 | Les analytics réseau sont saturées sur la plateforme. Réessayez après une courte pause. |
| `NO_CUSTOM_DOMAIN` | 400 | L'application n'a pas de domaine personnalisé, elle n'a donc aucun enregistrement DNS à afficher. |
| `INVALID_DOMAIN` | 400 | La valeur n'est pas un nom de domaine valide. |
| `RESERVED_DOMAIN` | 400 | Les domaines de Square Cloud et leurs sous-domaines ne peuvent pas servir de domaine personnalisé. |
| `DOMAIN_ALREADY_EXISTS` | 409 | Un autre compte utilise déjà ce domaine. Retirez-le d'abord de ce compte. |
| `LOAD_BALANCER_LIMIT_REACHED` | 403 | Votre plan n'autorise pas ce domaine sur davantage d'applications. Le `message` indique la limite. |
| `DNS_FAILED` | 502 | Le fournisseur edge n'a pas pu rattacher le domaine. Votre domaine précédent reste en place. Réessayez. |
| `PURGE_CACHE_FAILED` | 500 | La purge du cache ne s'est pas terminée. Réessayez dans un instant. |

## Snapshots

| Code | HTTP | Signification et solution |
| - | - | - |
| `SNAPSHOT_PROCESSING` | 202 | Pas une erreur : le snapshot est encore en cours de génération. Consultez la liste dans quelques minutes. |
| `SNAPSHOT_FAILED` | 404 | Le snapshot n'a pas pu être créé. Réessayez plus tard. |
| `MISSING_PARAMETERS` | 400 | `snapshotId` ou `versionId` est manquant. |
| `INVALID_SNAPSHOT_ID` | 400 | `snapshotId` n'est pas un `name` issu de la liste des snapshots. |
| `INVALID_VERSION_ID` | 400 | `versionId` n'est pas un `version_id` issu de la liste des snapshots. |
| `SNAPSHOT_NOT_FOUND` | 404 | Aucun snapshot ne correspond à cet id et à cette version. |
| `SNAPSHOT_RESTORE_FAILED` | 404 | La restauration a échoué. Réessayez, ou restaurez un autre snapshot. |
| `SNAPSHOT_DATABASE_MISMATCH` | 400 | Le snapshot provient d'un moteur de base de données différent de celui de la base cible. |
| `INVALID_SCOPE` | 400 | Le `scope` de la liste des snapshots du compte doit valoir `applications` ou `databases`. |

## Bases de données

| Code | HTTP | Signification et solution |
| - | - | - |
| `DATABASE_NOT_FOUND` | 404 | La base de données n'existe pas ou ne vous appartient pas. |
| `INVALID_NAME` | 400 | Le nom doit comporter de 1 à 32 caractères. Les workspaces suivent la même règle. |
| `INVALID_DATABASE_TYPE` | 400 | `type` doit valoir `mongo`, `mysql`, `postgres` ou `redis`. |
| `INVALID_DATABASE_VERSION` | 400 | La version n'est pas disponible pour ce moteur. |
| `INVALID_MEMORY` | 400 | La mémoire n'est pas valide pour ce moteur ou ce plan. |
| `DATABASE_CREATION_FAILED` | 400 / 500 | La base de données n'a pas pu être créée. Rien n'a été laissé derrière, vous pouvez donc réessayer. |
| `DATABASE_NOT_RUNNING` | 400 | Démarrez la base de données avant de lire son certificat ou de réinitialiser ses identifiants. |
| `INVALID_RESET_TYPE` | 400 | `reset` doit valoir `password` ou `certificate`. |
| `RESET_FAILED` | 500 | Les identifiants n'ont pas pu être réinitialisés. Réessayez. |
| `NO_UPDATE_DATA` | 400 | Envoyez `name`, `ram` ou les deux pour mettre à jour une base de données. |

## Workspaces

| Code | HTTP | Signification et solution |
| - | - | - |
| `WORKSPACE_NOT_FOUND` | 404 | Le workspace n'existe pas, ou vous n'en êtes ni le propriétaire ni un membre. |
| `WORKSPACE_LIMIT_REACHED` | 400 | Votre compte possède déjà le nombre maximal de workspaces autorisé par son plan. |
| `WORKSPACE_CREATION_FAILED` | 400 | Le workspace n'a pas pu être créé. Réessayez. |
| `INVALID_CODE` | 400 | Le code d'invitation est manquant, mal formé ou expiré. Demandez-en un nouveau à la personne. |
| `INVALID_GROUP` | 400 | `group` doit valoir `view`, `manager`, `maintain` ou `admin`. |
| `CANNOT_INVITE_OWNER` | 400 | Le code d'invitation est le vôtre, et vous possédez déjà le workspace. |
| `CANNOT_EDIT_OWNER` | 400 | Le rôle du propriétaire ne peut pas être modifié. |
| `CANNOT_LEAVE_OWNER` | 400 | Le propriétaire ne peut pas quitter le workspace. Supprimez-le à la place. |
| `MEMBERS_LIMIT_REACHED` | 400 | Le workspace compte déjà le nombre maximal de membres autorisé par le plan du propriétaire. |
| `MEMBER_ALREADY_ADDED` | 400 | Cette personne est déjà membre. |
| `MEMBER_NOT_FOUND` | 400 / 404 | `memberId` est manquant (`400`) ou cette personne n'est plus membre (`404`). |
| `APPLICATIONS_LIMIT_REACHED` | 400 | Le workspace partage déjà 100 applications. |
| `APP_ALREADY_IN_WORKSPACE` | 400 | L'application est déjà partagée dans ce workspace. |

## Plateforme

| Code | HTTP | Signification et solution |
| - | - | - |
| `INTERNAL_SERVER_ERROR` | 500 | Un échec inattendu. Réessayez une fois, et contactez le support si le problème persiste. |
| `DATABASE_UNAVAILABLE` | 503 | La base de données de la plateforme est brièvement indisponible. Réessayez dans quelques secondes. Une ressource existante n'est jamais signalée comme introuvable dans cet état. |
| `CLUSTER_TIMEOUT` | 400 | Le serveur qui héberge la ressource n'a pas répondu à temps. Réessayez. |
| `CLUSTER_UNAVAILABLE` | 400 | Le serveur qui héberge la ressource est injoignable pour le moment. Réessayez sous peu. |
| `REQUEST_ABORTED` | 400 | La requête a été annulée avant que le serveur qui héberge la ressource ne réponde. Réessayez. |
| `INVALID_PARAMETERS` | 400 | Une requête interne était mal formée. Réessayez, et contactez le support si le problème persiste. |

<Note>
  Les codes `AI_*` (`AI_DAILY_LIMIT_REACHED`, `AI_NO_PLAN_LIMIT_REACHED`, `AI_MAX_CONCURRENT_STREAMS`, `AI_UNAVAILABLE`) appartiennent à l'assistant IA du tableau de bord, qui nécessite une session du tableau de bord. Une clé API ne les reçoit jamais.
</Note>

## Voir aussi

* [Authentification et scopes](/fr/api-reference/authentication)
* [Limites de débit par plan](/fr/api-reference/limitations-and-restrictions)
* SDK JavaScript : [`SquareCloudAPIError`](/fr/sdks/js/errors)
* SDK Python : [`SquareCloudAPIError`](/fr/sdks/py/errors)
* SDK Go : [`*APIError`](/fr/sdks/go/errors)
