You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Contexto — OpenAlex cambió su modelo (efectivo 13-feb-2026)
Verificado en uso real (2026-06-22): la ingesta online (seed --equation, resolve, chain, enrich) recibe 429 sostenido de OpenAlex. No es un bug nuestro — OpenAlex cambió su autenticación y rate-limiting:
API keys ahora obligatorias (desde 13-feb-2026).
Polite pool y parámetro mailto= ELIMINADOS ("No more polite pool! No more email parameter… it was never secure and couldn't scale"). bib2graph hoy manda mailto → no-op.
Modelo de créditos: singleton = 1, list = 10, content/descarga = 100, vector search = 1000 créditos.
Gratis (sin key): 100 créditos/día (~10 llamadas list — inusable para seeding real).
Con API key: 100.000 créditos/día.
(OpenAlex dice que los números "aren't final, still calibrating".)
Causa del 429: pegamos sin key → tier gratis 100 créditos/día → se agota en una sesión y queda 429 hasta el reset diario.
Qué hacer
api_key en OpenAlexSource (param + config de workspace y/o env, p. ej. OPENALEX_API_KEY), enviado como api_key=<key>. Deprecar/quitar el mailto polite-pool (muerto).
Cliente consciente de límites: manejar 429 con backoff (+ Retry-After si viene), requests/s configurable, y un presupuesto/preview de créditos para no agotar el día por sorpresa (encaja con el preview del forrajeo, feat(cli): preview de crecimiento del chaining antes del fetch — historia B2 #89). Mensaje accionable cuando falta la key o se agotó el crédito.
Generalizar a política de auth + rate-limit por proveedor. TODO proveedor (OpenAlex hoy; Semantic Scholar, Crossref, etc. después — ver feat(sources): poblar external_ids al ingestar (cruce cross-motor) — al sumar el 2º motor #120) tiene su propia key y sus propios límites. Que el contrato Source (ADR 0018) declare su autenticación y sus límites; el cliente los respeta. Esto es parte de la visión source-agnóstica (ADR 0036/0035).
Documentar cómo el usuario obtiene y configura la API key de OpenAlex.
Prioridad
Alta: el flujo online (la mitad del producto) quedó degradado por el cambio externo. El flujo de archivo (--from-bib, offline) sigue sano; lo que pega a OpenAlex (search/resolve/chain/enrich) necesita la key.
Contexto — OpenAlex cambió su modelo (efectivo 13-feb-2026)
Verificado en uso real (2026-06-22): la ingesta online (
seed --equation,resolve,chain,enrich) recibe 429 sostenido de OpenAlex. No es un bug nuestro — OpenAlex cambió su autenticación y rate-limiting:mailto=ELIMINADOS ("No more polite pool! No more email parameter… it was never secure and couldn't scale"). bib2graph hoy mandamailto→ no-op.Causa del 429: pegamos sin key → tier gratis 100 créditos/día → se agota en una sesión y queda 429 hasta el reset diario.
Qué hacer
api_keyenOpenAlexSource(param + config de workspace y/o env, p. ej.OPENALEX_API_KEY), enviado comoapi_key=<key>. Deprecar/quitar elmailtopolite-pool (muerto).Retry-Aftersi viene),requests/sconfigurable, y un presupuesto/preview de créditos para no agotar el día por sorpresa (encaja con el preview del forrajeo, feat(cli): preview de crecimiento del chaining antes del fetch — historia B2 #89). Mensaje accionable cuando falta la key o se agotó el crédito.Source(ADR 0018) declare su autenticación y sus límites; el cliente los respeta. Esto es parte de la visión source-agnóstica (ADR 0036/0035).Prioridad
Alta: el flujo online (la mitad del producto) quedó degradado por el cambio externo. El flujo de archivo (
--from-bib, offline) sigue sano; lo que pega a OpenAlex (search/resolve/chain/enrich) necesita la key.Fuentes
Relacionado: ADR 0018 (Source agnóstico), ADR 0035 (resolución pega a OpenAlex), #120 (multi-motor), #89 (preview de crecimiento).