Aquí hay algunas sugerencias de la IA:
- Token de sesión anónimo bloqueado por restricciones de cookies/almacenamiento. Muchos de estos widgets de chat generan silenciosamente un ID de sesión (cookie o localStorage) en la primera carga y lo adjuntan a cada llamada a la API. Si el navegador de un colega bloquea cookies de terceros o el almacenamiento (protección contra rastreo de Safari/Firefox, modo privado/incógnito, política de navegador gestionado por la empresa, o una extensión como uBlock/Privacy Badger/Brave Shields), ese token nunca se crea ni se envía; entonces, la llamada a la API parece una solicitud no autenticada y se rechaza como "unauthorised".
- Fallo en la comprobación de Origen/Referer. Si el backend valida que las solicitudes provienen de paratext.org mismo (una medida ligera de anti-abuso común en lugar de una autenticación real), cualquier cosa que cambie cómo se carga la página —un filtro/proxy web corporativo que reescribe o elimina encabezados, un proxy de traducción, el "modo lectura", o abrir el enlace dentro del navegador integrado de otra aplicación— puede romper esa comprobación, aunque la página se renderice correctamente.
- Proxy corporativo/inspección SSL que elimina encabezados. Los colegas afiliados a SIL a menudo están en redes gestionadas con inspección profunda de paquetes o filtrado de contenido que elimina los encabezados Authorization, Cookie o personalizados en las llamadas salientes a la API, mientras que la interfaz de chat en sí misma se carga normalmente desde un CDN.
- Clave de API de backend compartida que alcanza un límite de tasa/cuota. Si el widget hace proxy a algo como la API de Claude usando una clave de servidor compartida, un pico de tráfico de demostración simultáneo (usted + 3 colegas enviando solicitudes en un minuto) podría activar un límite de tasa que el backend informa como "unauthorised" en lugar de "too many requests".
La forma más rápida de confirmarlo: que un colega abra DevTools del navegador → pestaña Network, reintente una solicitud, haga clic en la solicitud fallida y verifique el código de estado HTTP real (401 vs 403 vs 429) y el cuerpo de la respuesta; eso nos dirá definitivamente cuál de estas es la causa. Si puede obtener eso, puedo identificar la causa con precisión.
Here are some suggestions from AI:
- Anonymous session token blocked by cookie/storage restrictions. Many of these chat widgets silently mint a session ID (cookie or localStorage) on first load and attach it to every API call. If a colleague's browser blocks third-party cookies or storage (Safari/Firefox tracking protection, private/incognito mode, corporate-managed browser policy, or an extension like uBlock/Privacy Badger/Brave Shields), that token never gets created or sent — the API call then looks like an unauthenticated request and gets rejected as "unauthorised."
- Origin/Referrer check failing. If the backend validates that requests come from paratext.org itself (a common lightweight anti-abuse measure instead of real auth), anything that changes how the page is loaded — a corporate web filter/proxy that rewrites or strips headers, a translation proxy, "Reader mode," or opening the link inside another app's in-app browser — can break that check even though the page renders fine.
- Corporate proxy/SSL inspection stripping headers. SIL-affiliated colleagues are often on managed networks with deep packet inspection or content filtering that strips Authorization, Cookie, or custom headers on outbound API calls, while the chat UI itself still loads normally from a CDN.
- Shared backend API key hitting a rate/quota limit. If the widget proxies to something like Claude's API using one shared server-side key, a burst of simultaneous demo traffic (you + 3 colleagues all firing prompts within a minute) could trip a rate limit that the backend reports as "unauthorised" rather than "too many requests."
Fastest way to confirm: have one colleague open browser DevTools → Network tab, retry a prompt, click the failed request, and check the actual HTTP status code (401 vs 403 vs 429) and response body — that will tell us definitively which of these it is. If you can grab that, I can pin down the cause precisely.
Traducción automática desde English