Skip to main content
Compara una respuesta de IA ya completada con sus fuentes citadas. El resultado es un mapa compacto: los párrafos de cada página fuente incluidos en el resultado, las partes de la respuesta con las que se corresponden, una explicación para cada vínculo y resúmenes cortos construidos a partir de esos vínculos. Es un análisis de correspondencia a posteriori de una respuesta existente: no prueba que una fuente hiciera que el modelo generara una frase, ni puntúa la calidad de una página. Trátalo como evidencia que revisar, no como un veredicto.
Sondea GET /v1/async/task/:id o indica webhook.url al enviar; la tarea informa taskType: "SOURCE_INFLUENCE". No envíes este análisis a través de POST /v1/async/task; usa el endpoint dedicado. POST /v1/research y el tipo de tarea CITATION_ATTRIBUTION son los nombres anteriores a septiembre de 2026 y siguen funcionando como alias obsoletos.

Analizar una tarea que ya ejecutaste

Si la respuesta vino de esta API, envía su id de tarea en lugar de copiar la respuesta y las citas del resultado:
La tarea debe ser tuya, estar en COMPLETED y seguir siendo legible mediante GET /v1/async/task/:id. Su Markdown de respuesta (el texto si el motor no devolvió Markdown) pasa a ser answer, y sus URL citadas pasan a ser citations en el orden del motor: las 100 primeras, con un máximo de 10 hilos de discusión. Se omiten los marcadores de tarjetas de producto y vídeo (enlaces de googleusercontent.com) y los enlaces de búsqueda de Google, porque no tienen página que leer. Se usan el prompt, el country y el motor de la tarea salvo que los envíes. Enviar taskId junto con answer o citations se rechaza con 400, igual que una tarea sin terminar o sin texto de respuesta ni URL citada. Un id de tarea desconocido o caducado devuelve 404.

Payload

La opción analysis está retirada. Las versiones anteriores aceptaban analysis: {version: 1, …}. Ahora los insights forman parte de cada resultado, así que ese campo se rechaza con 400 en lugar de ignorarse: elimínalo de las integraciones existentes. El contenido de las tareas existentes sigue siendo legible; los registros almacenados no se migran.

Resultado

answer

La respuesta que enviaste, sin cambios. answerRanges son offsets en exactamente esta cadena: unidades de código UTF-16 de JavaScript, start inclusivo y end exclusivo. Recórtala tal cual, con answer.slice(start, end), en lugar de volver a dividir el texto. Cada rango identifica una unidad semántica completa de tu respuesta: una frase, un elemento de lista o una celda de tabla. Sus límites se refieren al texto original.

sources[]: una entrada por cada cita enviada

  • id: identificador opaco, único dentro del resultado.
  • url: la URL de la cita que enviaste.
  • paragraphs[]: los párrafos de esa página incluidos en el resultado. Cada uno tiene un id (único en todo el resultado) y el text del párrafo. Un párrafo puede incluirse sin ningún vínculo.
  • error: solo aparece si la página no se pudo leer. En ese caso paragraphs está vacío y la cadena es un motivo breve para esa fuente.
  • paragraphId: el párrafo al que se refiere el vínculo. Siempre apunta a un párrafo que existe en sources[].
  • answerRanges[]: las partes de la respuesta con las que se corresponde este párrafo, como pares start/end en los mismos offsets UTF-16. Un vínculo puede tener varios rangos; el mismo texto de respuesta no se repite entre ellos. Cada rango es una unidad completa de la respuesta (frase, elemento de lista o celda de tabla).
  • explanation: una frase breve que describe la correspondencia: qué afirma el párrafo sobre esa parte de la respuesta.

insights[]

Resúmenes cortos de lo que suman los vínculos de este resultado. linkIds indica a partir de qué vínculos se construyó cada resumen, y solo puede nombrar vínculos que aparecen en links[]: un insight nunca afirma una relación que la respuesta no contiene. Si no hay vínculos, no hay nada que resumir.

Cómo leer bien el resultado

  • La ausencia de vínculo no es un veredicto. Un párrafo sin vínculo simplemente no coincidió con un rango de la respuesta, y una parte de la respuesta sin rango significa que ningún párrafo se vinculó a ella. Ninguna de las dos cosas dice que la página sea irrelevante, no se usara o no sea fiable.
  • Una página no leída sigue siendo incierta. Si sources[].error está presente, esa cita quedó fuera del análisis; no trates su falta de vínculos como un hallazgo negativo. Reinténtala o aporta su body si importa.
  • Correspondencia, no causalidad. El resultado describe cómo encajan a posteriori una respuesta existente y el texto de una página existente. No mide influencia en la generación, no ordena páginas entre sí, no puntúa la página ni informa de cómo se produjo la respuesta.
  • Los ids son internos. No guardes los identificadores p…/l… como claves estables entre ejecuciones; solo valen dentro de un resultado.

Ejecución y límites

  • El tamaño no es un motivo de fallo. Todo lo que acepta el contrato de la solicitud, una answer de hasta 200.000 caracteres con hasta 100 citas, se analiza. Las respuestas largas, los conjuntos grandes de fuentes y las páginas muy largas se gestionan dividiendo el trabajo, no rechazando la tarea.
  • La profundidad depende de la respuesta, no de la página. Una página larga no produce más vínculos de los que la respuesta puede sostener: el análisis se concentra en los pasajes con más probabilidad de corresponderse con la respuesta, y cada fuente que muestra una correspondencia aparece representada. En una página grande, o que repite la misma afirmación en navegación, listados y reseñas, espera los pasajes más sólidos y no cada aparición.
  • El marcado no es evidencia. Los mapas del sitio, los índices de enlaces y las galerías de imágenes no aportan vínculos; una página formada solo por ellos se informa sin párrafos en lugar de con correspondencias inventadas.
  • Una fuente que no se pudo leer se informa en sources[].error sin hacer fallar la tarea si otra fuente es legible. La tarea falla cuando no se pudo leer ninguna fuente, ante un fallo del análisis, un timeout o un error de configuración del servicio.
  • Las solicitudes se miden por uso, como el resto de la API. La respuesta de envío muestra la retención temporal de créditos; el cargo final se liquida cuando la tarea llega a un estado final.