> ## 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.

# Códigos de error de la API y cómo resolverlos

> Todos los códigos de error de la API de Square Cloud agrupados por área, con su estado HTTP, lo que significan y qué hacer, más las reglas para reintentar.

Cada solicitud fallida a la API de Square Cloud responde con un estado HTTP y un cuerpo JSON que incluye un `code` legible por máquina. Esta página lista todos los códigos, agrupados por área. La página de cada endpoint también lista los códigos que ese endpoint devuelve con más frecuencia.

<Note>
  [Blob Storage](/es/blob-reference/errors) tiene su propia lista de códigos, y el [AI Gateway](/es/api-reference/ai-gateway#errores) responde en el formato de error de OpenAI con códigos en minúsculas. Ninguno de los dos se cubre aquí.
</Note>

## Formato del error

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

| Campo | Descripción |
| - | - |
| `status` | Siempre `"error"` en un fallo. |
| `code` | El código de error, en `UPPER_SNAKE_CASE`. Decide qué hacer según este campo. |
| `message` | Opcional. Una explicación legible que puede cambiar en cualquier momento: muéstrala a las personas, pero nunca la analices. |

<Info>
  La lista de códigos crece con el tiempo. Trata un código que no conoces como un fallo genérico del estado HTTP con el que llegó: corrige la solicitud ante un `4xx`, espera ante un `429` y vuelve a intentarlo más tarde ante un `5xx`.
</Info>

## Reintentos

La API no envía el encabezado `Retry-After`, así que la decisión es tuya. Una política segura:

| Respuesta | Qué hacer |
| - | - |
| `400`, `401`, `403`, `404`, `409`, `413`, `415` | No repitas la misma solicitud: fallará de la misma forma. Corrige antes la entrada, la credencial o el plan. |
| `429` | Espera antes de la siguiente solicitud. Reintentar en bucle te mantiene bloqueado. Consulta [Límites de tasa](#límites-de-tasa). |
| `503 UPLOAD_BUSY`, `503 ANALYTICS_BUSY` | Vuelve a intentarlo tras una breve pausa, con backoff exponencial. |
| `503 DATABASE_UNAVAILABLE` | Repite una lectura tras unos segundos. Una escritura puede haberse aplicado ya, así que revisa el recurso antes de repetirla. |
| `500` y otros `5xx` | Reintenta una o dos veces con backoff. Si sigue fallando, consulta el [estado del servicio](/es/api-reference/endpoint/service/status). |

`202 SNAPSHOT_PROCESSING` mantiene el formato de error por compatibilidad, pero **no es un fallo**: el snapshot aún se está generando y aparecerá en el listado por sí solo. No lo vuelvas a solicitar.

## Límites de tasa

Dos códigos responden `429`, y significan cosas distintas:

* **`RATE_LIMITED`**: el presupuesto de solicitudes de tu cuenta o de tu clave de API, contado por cada 60 segundos y definido por tu plan (consulta los [valores por plan](/es/api-reference/limitations-and-restrictions#límites-de-la-api)). Al superarlo, la API rechaza tus solicitudes durante un máximo de 30 minutos. Algunos endpoints también responden `RATE_LIMITED` por sus propios límites, y una dirección IP que sigue enviando claves de API que no pertenecen a ninguna cuenta queda bloqueada durante un breve periodo.
* **`KEEP_CALM`**: el límite propio de un endpoint, como un reinicio cada pocos segundos. Espera un momento y vuelve a intentarlo. El límite de cada endpoint está en su página.

## Autenticación y permisos

| Código | HTTP | Significado y solución |
| - | - | - |
| `ACCESS_DENIED` | 401 | La clave de API falta, está mal escrita, fue revocada o expiró, o su cuenta ya no existe. Revisa la clave en la [configuración de seguridad de tu cuenta](https://squarecloud.app/es/account/security) y no reintentes en bucle. |
| `MISSING_SCOPE` | 403 | La clave es válida pero no tiene el scope que necesita este endpoint. Los scopes no se pueden editar, así que crea una clave con ese scope. Consulta [Scopes](/es/api-reference/authentication#scopes). |
| `RESOURCE_NOT_ALLOWED` | 403 | La clave está restringida a aplicaciones y bases de datos que no incluyen esta, o el endpoint abarca toda la cuenta y la clave está restringida. Usa una clave que cubra el recurso. |
| `PERMISSION_DENIED` | 403 | Tu rol en el workspace no permite esta acción en una aplicación compartida, como leer `.env` sin el rol `admin`. Consulta los [roles del workspace](/es/api-reference/endpoint/workspace/members/invite#roles). |
| `SCOPE_NOT_GRANTABLE` | 403 | Una clave de API restringida intentó conceder más acceso del que tiene, por ejemplo añadir un miembro `admin` con una clave sin `envs:write`. Usa una clave que tenga todos los scopes de ese rol, o el panel. |
| `UPGRADE_REQUIRED` | 402 / 403 | La función necesita un plan superior: las bases de datos, los dominios personalizados y los workspaces necesitan Standard o superior, los logs y el rendimiento de red necesitan Pro o superior, y listar los snapshots de la cuenta necesita un plan activo (`402`). El `message` indica el plan cuando puede. |

## Validación de la solicitud

| Código | HTTP | Significado y solución |
| - | - | - |
| `INVALID_JSON_BODY` | 400 | El cuerpo no es JSON válido. Envía `Content-Type: application/json` y un cuerpo bien formado. |
| `INVALID_INPUT` | 400 | Un campo no pasó la validación. El `message` indica cuál. |
| `INVALID_ID` | 400 | Un id obligatorio, normalmente `workspaceId`, falta o está mal formado. |
| `INVALID_CONTENT_TYPE` | 415 | Upload y commit necesitan `multipart/form-data` con el zip en un campo `file`. |
| `PAYLOAD_TOO_LARGE` | 413 | El cuerpo es mayor de lo que acepta este endpoint. |
| `ROUTE_NOT_FOUND` | 404 | La ruta o el método HTTP son incorrectos. Compáralos con la página del endpoint. |

## Cuotas y límites de conexión

| Código | HTTP | Significado y solución |
| - | - | - |
| `RATE_LIMITED` | 429 | Se alcanzó el presupuesto de solicitudes de tu cuenta o de tu clave, o el límite propio de un endpoint. Consulta [Límites de tasa](#límites-de-tasa). |
| `KEEP_CALM` | 429 | Demasiadas solicitudes a este endpoint en poco tiempo. Espera un momento y vuelve a intentarlo. |
| `DAILY_SNAPSHOTS_LIMIT_REACHED` | 429 | Se agotó la cuota de snapshots manuales del plan para 24 horas. Espera antes del siguiente, o mejora tu plan para tener una cuota mayor. |
| `REALTIME_MAX_CONNECTIONS` | 429 | Tu cuenta ya tiene 5 conexiones de [tiempo real](/es/api-reference/endpoint/apps/realtime) abiertas. Cierra una primero. |
| `REALTIME_MAX_CONNECTIONS_APP` | 429 | La aplicación ya tiene 30 conexiones de tiempo real abiertas entre todos los usuarios. |

## Aplicaciones

| Código | HTTP | Significado y solución |
| - | - | - |
| `APP_NOT_FOUND` | 404 | La aplicación no existe, no es tuya o no eres miembro del workspace en el que está compartida. Revisa el id. Las rutas de workspace responden `400` cuando falta `appId` en el cuerpo. |
| `CONTAINER_ALREADY_STARTED` | 409 | La aplicación o base de datos ya está en ejecución. Puedes tratarlo como un éxito. |
| `CONTAINER_ALREADY_STOPPED` | 409 | La aplicación o base de datos ya está detenida. Puedes tratarlo como un éxito. |
| `CONTAINER_TEMPORARILY_SUSPENDED` | 409 | El recurso está suspendido. Revisa el correo de la cuenta para conocer el motivo. |
| `CONTAINER_NOT_FOUND` | 409 | No se encontró el contenedor del recurso en su servidor. Vuelve a intentarlo en un momento y contacta con soporte si persiste. |
| `CONTAINER_INSUFFICIENT_DISK_SPACE` | 409 | No hay suficiente espacio en disco para iniciar. Elimina los archivos que no necesites y vuelve a intentarlo. |
| `CONTAINER_NETWORK_CONFLICT` | 409 | Un conflicto de red o de puerto impidió el inicio. Vuelve a intentarlo en un momento. |
| `ACTION_FAILED` | 409 | El inicio, la detención o el reinicio se rechazó por otro motivo, por ejemplo durante un deploy. Revisa el estado y vuelve a intentarlo. |
| `RESTORE_IN_PROGRESS` | 403 | Hay una restauración de snapshot en curso en este recurso. Espera a que termine antes de eliminar la aplicación, o de iniciar, detener o eliminar la base de datos. |
| `DELETE_FAILED` | 404 | El nodo que aloja el recurso rechazó la eliminación. Vuelve a intentarlo. En el administrador de archivos, el mismo código responde `400`. |
| `LOGS_UNAVAILABLE` | 404 | No se pudieron leer los logs: la aplicación está apagada, nunca se desplegó o el nodo no respondió. Vuelve a intentarlo en breve. |
| `METRICS_NOT_SUPPORTED` | 400 | Las métricas solo se recopilan para aplicaciones con al menos 512 MB de RAM. |

## Upload y commit

| Código | HTTP | Significado y solución |
| - | - | - |
| `INVALID_FILE` | 400 | El formulario no tiene ningún archivo en el campo `file`. |
| `INVALID_FILENAME` | 400 | El nombre del archivo tiene separadores de ruta, `..` o caracteres de control. |
| `INVALID_PATH` | 400 | El `path` de un commit contiene traversal o caracteres de shell. |
| `FILE_TOO_LARGE` | 413 | El zip supera los 100 MB. |
| `UPLOAD_ABORTED` | 400 | La conexión se cerró antes de terminar la subida. Vuelve a subirlo. |
| `UPLOAD_BUSY` | 503 | Hay demasiadas subidas en curso en la plataforma. Vuelve a intentarlo tras una breve pausa. |
| `STORAGE_UPLOAD_FAILED` | 400 | No se pudo almacenar el zip. Vuelve a intentarlo más tarde. |
| `UPLOAD_FAILED` | 400 | No se pudo procesar la subida. Vuelve a intentarlo y revisa el zip si vuelve a ocurrir. |
| `COMMIT_FAILED` | 400 | No se pudo aplicar el commit. Vuelve a intentarlo y revisa el zip si vuelve a ocurrir. |
| `INSUFFICIENT_MEMORY` | 400 | Tu plan no tiene suficiente memoria libre para la aplicación o la base de datos, o `MEMORY` está por debajo del mínimo: 256 MB, o 512 MB para un sitio web con `SUBDOMAIN`. Ajusta `MEMORY`, elimina algo o mejora tu plan. |
| `CLUSTER_SELECTION_FAILED` | 400 | Ningún servidor tenía espacio para la nueva aplicación o base de datos en este momento. Vuelve a intentarlo más tarde. |
| `CLUSTER_MAINTENANCE_TRY_LATER` | 503 | Las nuevas aplicaciones y bases de datos están en pausa por mantenimiento. Vuelve a intentarlo más tarde. |
| `EMPTY_RESPONSE` | 400 | El servidor que recibió la subida no dio una respuesta utilizable, así que la aplicación no se creó. Vuelve a subirla. |

## Comprobaciones del zip y de la configuración

Cuando [subes](/es/api-reference/endpoint/apps/upload) una aplicación, el servidor que la ejecutará comprueba el zip y su [archivo de configuración](/es/getting-started/config-file) (`squarecloud.app` o `squarecloud.config`). Una comprobación fallida responde `400` con uno de estos códigos, y no se hace deploy de nada. Corrige el zip y vuelve a subirlo. Un [commit](/es/api-reference/endpoint/apps/commit) no lee el archivo de configuración: de esta lista, solo puede fallar con `FAILED_EXTRACT` o `CONTAINER_INSUFFICIENT_DISK_SPACE`.

| Código | HTTP | Significado y solución |
| - | - | - |
| `FAILED_EXTRACT` | 400 | No se pudo extraer el zip. Vuelve a crearlo con una herramienta zip estándar y comprueba que no esté dañado. |
| `DOWNLOAD_FAILED` | 400 | El servidor no pudo obtener el zip después de recibirlo. Vuelve a subirlo. |
| `MISSING_CONFIG` | 400 | El zip no tiene `squarecloud.app` ni `squarecloud.config` en su raíz, o el archivo está vacío. |
| `MISSING_MEMORY`, `MISSING_DISPLAY_NAME`, `MISSING_VERSION` | 400 | Falta un campo obligatorio del archivo de configuración o está vacío. El código nombra el primero que falta. |
| `MISSING_MAIN` | 400 | La configuración no tiene ni [`MAIN`](/es/getting-started/config-file#main) ni [`RUNTIME`](/es/getting-started/config-file#runtime). Define uno de los dos. |
| `INVALID_MAIN` | 400 | `MAIN` tiene caracteres distintos de letras, dígitos, `_`, `.`, `/` y `-`, o más de 32 caracteres. Sin `RUNTIME`, también falla cuando el archivo no está en el zip, está vacío, apunta fuera del proyecto, o no tiene extensión o tiene una que no corresponde a ningún lenguaje compatible. |
| `INVALID_RUNTIME` | 400 | `RUNTIME` no es uno de los valores compatibles listados en la referencia del [archivo de configuración](/es/getting-started/config-file#runtime). |
| `INVALID_VERSION` | 400 | `VERSION` debe ser `recommended` o `latest`. Se rechaza un número de versión exacto. |
| `INVALID_START` | 400 | `START` tiene más de 256 caracteres. |
| `INVALID_DEPENDENCY` | 400 | Falta el archivo de dependencias del lenguaje o está vacío: `package.json` para JavaScript y TypeScript, `requirements.txt` o `pyproject.toml` para Python, `go.mod` o `go.work` para Go, `Cargo.toml` para Rust, `Gemfile` para Ruby, `mix.exs` para Elixir. |
| `INVALID_DISPLAY_NAME` | 400 | `DISPLAY_NAME` debe tener de 1 a 32 caracteres: letras, dígitos, espacios, `_` y `-`. |
| `INVALID_DESCRIPTION` | 400 | `DESCRIPTION` tiene más de 280 caracteres. |
| `INVALID_SUBDOMAIN` | 400 | `SUBDOMAIN` está mal formado, reservado o ya en uso. Elige otro. |
| `CONTAINER_INSUFFICIENT_DISK_SPACE` | 400 | En un commit, no hay suficiente espacio en disco para los nuevos archivos. Elimina los archivos que no necesites y vuelve a hacer el commit. |
| `ACCESS_FORBIDDEN` | 400 | El servidor no pudo cargar tu cuenta para esta subida. Vuelve a intentarlo y contacta con soporte si persiste. |

## Variables de entorno

| Código | HTTP | Significado y solución |
| - | - | - |
| `STATIC_APP_ENV_NOT_SUPPORTED` | 400 | Los sitios estáticos no admiten variables de entorno. |
| `INVALID_ENV_CONTENT` | 400 | `envs` falta o tiene una forma incorrecta: un objeto para añadir o reemplazar, un array de claves para eliminar. |
| `TOO_MANY_ENV_VARS` | 400 | La aplicación tendría más de 256 variables. |
| `ENV_NAME_TOO_LONG` | 400 | Una clave tiene más de 1024 caracteres o no es un string. |
| `ENV_CONTENT_TOO_LONG` | 400 | Un valor tiene más de 4096 caracteres. |
| `READ_FAILED` | 400 | No se pudieron leer las variables de la aplicación. Vuelve a intentarlo. La ruta del certificado usa el mismo código. |

## Archivos

| Código | HTTP | Significado y solución |
| - | - | - |
| `INVALID_PATH` | 400 | La ruta tiene traversal o caracteres inválidos, supera los 256 caracteres, o el origen y el destino de un movimiento son iguales. |
| `BLOCKED_PATH` | 403 | La ruta está en un directorio protegido, o tu rol en el workspace no puede escribir ese archivo. |
| `INVALID_ENCODING` | 400 | `encoding` solo acepta `base64`. |
| `INVALID_CONTENT` | 400 | `content` falta, tiene una forma no compatible o no es base64 válido. |
| `FILE_NOT_FOUND` | 404 | No hay ningún archivo ni directorio en esa ruta. |
| `FILE_TOO_LARGE` | 413 | El administrador de archivos lee y escribe archivos de hasta 10 MB. Usa [commit](/es/api-reference/endpoint/apps/commit) para archivos más grandes. |
| `RENAME_FAILED` | 400 | No se pudo mover ni renombrar el archivo. Vuelve a intentarlo. |
| `DELETE_FAILED` | 400 | No se pudo eliminar el archivo. Vuelve a intentarlo. |
| `INVALID_DISPLAY_NAME`, `INVALID_DESCRIPTION`, `INVALID_MEMORY`, `INVALID_AUTORESTART`, `INVALID_SUBDOMAIN` | 400 | Una escritura en el [archivo de configuración](/es/getting-started/config-file) tiene un campo que no pasa la validación, o un `SUBDOMAIN` que ya está en uso. Corrige ese campo. |
| `CANNOT_SET_SUBDOMAIN` | 400 | La configuración de un sitio web no tiene `SUBDOMAIN`. Un sitio web siempre conserva uno, así que vuelve a definirlo. |
| `SAVE_FAILED` | 500 | No se pudo guardar la nueva configuración. Vuelve a intentarlo. |

## Deploys y GitHub

| Código | HTTP | Significado y solución |
| - | - | - |
| `INVALID_ACCESS_TOKEN` | 400 | El token del webhook no es un token de GitHub (`ghp_...`, `github_pat_...`) ni `@`. |
| `MISSING_REQUIRED_FIELDS` | 400 | Falta `repositoryName` o `repositoryBranch`. |
| `INVALID_BRANCH_LENGTH` | 400 | El nombre de la rama tiene más de 256 caracteres. |
| `BRANCH_NOT_FOUND` | 400 | La rama no existe en el repositorio. |
| `GIT_ALREADY_CONFIGURED` | 400 | La aplicación ya tiene un repositorio vinculado. Desvincúlalo primero. |
| `GIT_NOT_CONFIGURED` | 400 | La aplicación no tiene ningún repositorio vinculado que desvincular. |
| `GITHUB_NOT_CONNECTED` | 403 | Tu cuenta de Square Cloud no tiene una conexión con GitHub que funcione. Conecta o reconecta GitHub en el panel. |
| `REPOSITORY_NOT_AVAILABLE` | 403 | La GitHub App de Square Cloud no está instalada en el repositorio a través de tu cuenta de GitHub. |
| `REPOSITORY_PERMISSION_REQUIRED` | 403 | Tu cuenta de GitHub necesita acceso de escritura al repositorio. |
| `REPOSITORY_NOT_FOUND` | 404 | El repositorio no existe o tu cuenta de GitHub no puede verlo. |
| `REPOSITORY_BRANCH_ALREADY_CONFIGURED` | 409 | Otra aplicación, de cualquier cuenta, ya usa este repositorio y esta rama. |
| `FAILED_TO_FETCH` | 502 | GitHub no confirmó la rama. Vuelve a intentarlo. |
| `VALIDATION_FAILED` | 500 / 502 | No se pudo validar el repositorio. Vuelve a intentarlo. |
| `VALIDATION_TIMEOUT` | 504 | La validación del repositorio tardó demasiado. Vuelve a intentarlo. |

Un deploy de Git fallido no es un error HTTP: aparece en el [historial de deploys](/es/api-reference/endpoint/apps/deploy/list) como un evento con `state: "error"` y un `code` como `DEPLOY_FAILED`.

## Red y dominios

| Código | HTTP | Significado y solución |
| - | - | - |
| `INVALID_TIME_RANGE` | 400 | `start` o `end` falta o está mal formado, o `start` es posterior a `end`. |
| `INVALID_FILTER` | 400 | Un filtro del endpoint de analítica tiene un formato incorrecto. |
| `UNABLE_TO_FETCH_ANALYTICS`, `UNABLE_TO_FETCH_ERRORS`, `UNABLE_TO_FETCH_PERFORMANCE` | 500 | El proveedor de borde no devolvió los datos. Vuelve a intentarlo más tarde. |
| `ANALYTICS_BUSY` | 503 | La analítica de red está ocupada en toda la plataforma. Vuelve a intentarlo tras una breve pausa. |
| `NO_CUSTOM_DOMAIN` | 400 | La aplicación no tiene dominio personalizado, así que no tiene registros DNS que mostrar. |
| `INVALID_DOMAIN` | 400 | El valor no es un nombre de dominio válido. |
| `RESERVED_DOMAIN` | 400 | Los dominios propios de Square Cloud y sus subdominios no se pueden usar como dominio personalizado. |
| `DOMAIN_ALREADY_EXISTS` | 409 | Otra cuenta ya usa este dominio. Elimínalo allí primero. |
| `LOAD_BALANCER_LIMIT_REACHED` | 403 | Tu plan no permite este dominio en más aplicaciones. El `message` indica el límite. |
| `DNS_FAILED` | 502 | El proveedor de borde no pudo asociar el dominio. Tu dominio anterior se mantiene. Vuelve a intentarlo. |
| `PURGE_CACHE_FAILED` | 500 | La purga de caché no se completó. Vuelve a intentarlo en un momento. |

## Snapshots

| Código | HTTP | Significado y solución |
| - | - | - |
| `SNAPSHOT_PROCESSING` | 202 | No es un error: el snapshot aún se está generando. Revisa el listado en un par de minutos. |
| `SNAPSHOT_FAILED` | 404 | No se pudo crear el snapshot. Vuelve a intentarlo más tarde. |
| `MISSING_PARAMETERS` | 400 | Falta `snapshotId` o `versionId`. |
| `INVALID_SNAPSHOT_ID` | 400 | `snapshotId` no es un `name` del listado de snapshots. |
| `INVALID_VERSION_ID` | 400 | `versionId` no es un `version_id` del listado de snapshots. |
| `SNAPSHOT_NOT_FOUND` | 404 | Ningún snapshot coincide con ese id y esa versión. |
| `SNAPSHOT_RESTORE_FAILED` | 404 | La restauración falló. Vuelve a intentarlo o restaura otro snapshot. |
| `SNAPSHOT_DATABASE_MISMATCH` | 400 | El snapshot es de un motor de base de datos distinto al de la base de datos de destino. |
| `INVALID_SCOPE` | 400 | El `scope` del listado de snapshots de la cuenta debe ser `applications` o `databases`. |

## Bases de datos

| Código | HTTP | Significado y solución |
| - | - | - |
| `DATABASE_NOT_FOUND` | 404 | La base de datos no existe o no es tuya. |
| `INVALID_NAME` | 400 | El nombre debe tener de 1 a 32 caracteres. Los workspaces siguen la misma regla. |
| `INVALID_DATABASE_TYPE` | 400 | `type` debe ser `mongo`, `mysql`, `postgres` o `redis`. |
| `INVALID_DATABASE_VERSION` | 400 | La versión no está disponible para ese motor. |
| `INVALID_MEMORY` | 400 | La memoria no es válida para este motor o este plan. |
| `DATABASE_CREATION_FAILED` | 400 / 500 | No se pudo crear la base de datos. No quedó nada a medias, así que puedes volver a intentarlo. |
| `DATABASE_NOT_RUNNING` | 400 | Inicia la base de datos antes de leer su certificado o restablecer sus credenciales. |
| `INVALID_RESET_TYPE` | 400 | `reset` debe ser `password` o `certificate`. |
| `RESET_FAILED` | 500 | No se pudieron restablecer las credenciales. Vuelve a intentarlo. |
| `NO_UPDATE_DATA` | 400 | Envía `name`, `ram` o ambos para actualizar una base de datos. |

## Workspaces

| Código | HTTP | Significado y solución |
| - | - | - |
| `WORKSPACE_NOT_FOUND` | 404 | El workspace no existe, o no eres ni su propietario ni miembro. |
| `WORKSPACE_LIMIT_REACHED` | 400 | Tu cuenta ya tiene el máximo de workspaces que permite su plan. |
| `WORKSPACE_CREATION_FAILED` | 400 | No se pudo crear el workspace. Vuelve a intentarlo. |
| `INVALID_CODE` | 400 | El código de invitación falta, está mal formado o expiró. Pide uno nuevo a la persona. |
| `INVALID_GROUP` | 400 | `group` debe ser `view`, `manager`, `maintain` o `admin`. |
| `CANNOT_INVITE_OWNER` | 400 | El código de invitación es tuyo, y ya eres el propietario del workspace. |
| `CANNOT_EDIT_OWNER` | 400 | El rol del propietario no se puede cambiar. |
| `CANNOT_LEAVE_OWNER` | 400 | El propietario no puede salir del workspace. Elimínalo en su lugar. |
| `MEMBERS_LIMIT_REACHED` | 400 | El workspace ya tiene el máximo de miembros que permite el plan del propietario. |
| `MEMBER_ALREADY_ADDED` | 400 | Esa persona ya es miembro. |
| `MEMBER_NOT_FOUND` | 400 / 404 | Falta `memberId` (`400`) o esa persona ya no es miembro (`404`). |
| `APPLICATIONS_LIMIT_REACHED` | 400 | El workspace ya comparte 100 aplicaciones. |
| `APP_ALREADY_IN_WORKSPACE` | 400 | La aplicación ya está compartida en este workspace. |

## Plataforma

| Código | HTTP | Significado y solución |
| - | - | - |
| `INTERNAL_SERVER_ERROR` | 500 | Un fallo inesperado. Vuelve a intentarlo una vez y contacta con soporte si persiste. |
| `DATABASE_UNAVAILABLE` | 503 | La base de datos de la plataforma no está disponible por un momento. Vuelve a intentarlo en unos segundos. Un recurso existente nunca se reporta como no encontrado en este estado. |
| `CLUSTER_TIMEOUT` | 400 | El servidor que aloja el recurso no respondió a tiempo. Vuelve a intentarlo. |
| `CLUSTER_UNAVAILABLE` | 400 | No se puede acceder ahora al servidor que aloja el recurso. Vuelve a intentarlo en breve. |
| `REQUEST_ABORTED` | 400 | La solicitud se canceló antes de que respondiera el servidor que aloja el recurso. Vuelve a intentarlo. |
| `INVALID_PARAMETERS` | 400 | Una solicitud interna estaba mal formada. Vuelve a intentarlo y contacta con soporte si persiste. |

<Note>
  Los códigos `AI_*` (`AI_DAILY_LIMIT_REACHED`, `AI_NO_PLAN_LIMIT_REACHED`, `AI_MAX_CONCURRENT_STREAMS`, `AI_UNAVAILABLE`) pertenecen al asistente de IA del panel, que necesita una sesión del panel. Una clave de API nunca los recibe.
</Note>

## Relacionado

* [Autenticación y scopes](/es/api-reference/authentication)
* [Límites de tasa por plan](/es/api-reference/limitations-and-restrictions)
* SDK de JavaScript: [`SquareCloudAPIError`](/es/sdks/js/errors)
* SDK de Python: [`SquareCloudAPIError`](/es/sdks/py/errors)
* SDK de Go: [`*APIError`](/es/sdks/go/errors)
