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: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
Reintentarate_limit_error y api_error. No reintentes errores 4xx sin
cambios; van a fallar igual.