Skip to main content
Cada respuesta que no es 2xx tiene el mismo body:
Bifurca por type para el control de flujo y por code para el manejo específico. Ambos son estables; message está escrito para humanos y puede reformularse. Siempre loguea request_id. Se ecoa en el header de respuesta X-Request-ID, y citarlo nos deja encontrar tu petición exacta.

Tipos

Un 404 no distingue “no existe” de “pertenece a otro workspace”. Es deliberado: distinguirlos le permitiría a cualquiera sondear ids de registros entre workspaces.

Scopes faltantes

Un 403 de un chequeo de scope nombra exactamente lo que falta, para que no tengas que adivinar:
Un 403 que no es insufficient_scope suele significar política de write del workspace — por ejemplo, una entidad espejada desde un CRM externo. Llama GET /v1/capabilities para ver qué entidades puedes escribir.

Reintentos

Reintenta rate_limit_error y api_error. No reintentes errores 4xx sin cambios; van a fallar igual.
Usa backoff exponencial con jitter. Reintentar de inmediato durante un rate limit lo extiende.