Skip to main content
Todo fallo de la API o de red lanza una única excepción: SquareCloudAPIError. Los ejemplos usan el client de Crear el cliente. app_id es el id de una de tus aplicaciones: client.account.me() las lista.

SquareCloudAPIError

SquareCloudAPIError es una subclase de Exception. str(error) es <METHOD> <path>: HTTP <status> <CODE>: <message>, sin HTTP <status> cuando el estado es 0 y sin : <message> cuando el mensaje está vacío. Hay dos fallos que no se envuelven:
  • Una clave de API vacía o compuesta solo por espacios lanza un ValueError en el constructor del cliente.
  • Los problemas con archivos locales lanzan un OSError: una ruta de subida que no se puede abrir, un archivo que deja de poder leerse a mitad de la subida o un destino de download_snapshot en el que no se puede escribir.

Códigos del SDK

Los códigos son strings

code es un str normal: el SDK no tiene ningún enum de códigos. El docstring de SquareCloudAPIError enumera todos los códigos conocidos de la API. RATE_LIMIT y RATE_LIMIT_EXCEEDED siguen en esa lista, marcados como obsoletos: la API ahora responde RATE_LIMITED para ambos. La lista de códigos de la API crece. Gestiona un código desconocido por su estado HTTP:

Códigos de error de la API

Todos los demás códigos vienen de la API. La referencia de errores de la API enumera cada uno con su estado HTTP, su significado y cómo resolverlo, y cada página del SDK enumera los códigos que sus métodos devuelven con más frecuencia. Cualquier llamada también puede responder 401 ACCESS_DENIED (una clave incorrecta), 403 MISSING_SCOPE o RESOURCE_NOT_ALLOWED (los límites de la clave), 429 (consulta Límites de tasa) o 503 DATABASE_UNAVAILABLE. Los errores de ai.chat() usan en cambio códigos de OpenAI en minúsculas (access_denied, rate_limit_exceeded, server_overloaded, …). Consulta IA.

Reintentos

El SDK solo reintenta lo que es seguro repetir, hasta max_retries veces (por defecto 2, es decir, hasta 3 intentos): Nunca reintenta:
  • TIMEOUT;
  • ningún 429: RATE_LIMITED puede ser un bloqueo de unos 30 minutos, y KEEP_CALM tampoco se reintenta;
  • otros 5xx;
  • los errores de IA.
Un 503 DATABASE_UNAVAILABLE puede llegar después de que una mutación ya se haya aplicado, así que el SDK no lo reintenta fuera de GET. Reintenta tú mismo tus mutaciones idempotentes si lo necesitas. La espera antes del reintento n (empezando en 0) es min(8 s, 500 ms · 2^n) · U(0.5, 1): backoff exponencial con un jitter del 50% al 100%. Establece max_retries=0 para desactivar los reintentos.

Timeouts

timeout (30 s) se aplica por operación de socket (la conexión y cada lectura o escritura), no a toda la petición. Consulta Timeouts para ver las llamadas con un mínimo de 120 s y las llamadas sin timeout. Un timeout lanza TIMEOUT con estado 0 y nunca se reintenta.

Límites de tasa

Cada cuenta tiene un límite de peticiones cada 60 segundos, fijado por su plan (valores), y algunas rutas tienen el suyo propio:
  • 429 RATE_LIMITED: la cuenta o la clave de API superó su cupo de solicitudes y queda bloqueada durante unos 30 minutos, o una IP que sigue enviando claves inválidas queda bloqueada durante un periodo breve. También es el límite de los endpoints de red y de account.snapshots.
  • 429 KEEP_CALM: demasiadas llamadas a una misma ruta en poco tiempo.
El SDK nunca reintenta un 429. Reduce el ritmo y espera antes de volver a intentarlo.

Próximos pasos

Referencia de errores de la API

Cada código de error, con su significado y cómo resolverlo.

Límites y restricciones

Los límites de solicitudes de cada plan.