> ## Documentation Index
> Fetch the complete documentation index at: https://docs.querying.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Citation Analysis

> Diagnóstico de visibilidad en IA por prompt: las búsquedas que ejecutó un motor, las páginas que recuperó y citó, las marcas que nombra su respuesta y las páginas detrás de ellas, dónde se sitúa tu marca y acciones priorizadas

Compara una respuesta de IA ya completada con las páginas detrás de ella. El resultado muestra las búsquedas que
ejecutó el motor, las páginas que recuperó y las que citó, las marcas que nombra la respuesta y las páginas que las
nombran, dónde se sitúa tu marca y acciones priorizadas. También asigna los párrafos de cada página citada a las partes
de la respuesta con las que se corresponden, con una explicación para cada vínculo, y resume qué tienen en común las
páginas citadas.

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.

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/citation-analysis \
  -H "Authorization: Bearer $QUERYING_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "answer": "…the AI answer, as raw markdown…",
    "prompt": "best password manager for a small team",
    "engine": "CHATGPT",
    "brand": "1Password",
    "competitors": ["Bitwarden"],
    "citations": [
      { "url": "https://example.com/best-password-managers", "body": "…the page markdown…" },
      { "url": "https://another.example.com/pricing" }
    ]
  }'
```

Sondea `GET /v1/async/task/:id` o indica `webhook.url` al enviar; la tarea informa `taskType: "CITATION_ANALYSIS"`.
No envíes este análisis a través de `POST /v1/async/task`; usa el endpoint dedicado. Los endpoints antiguos
`POST /v1/geo-audit`, `POST /v1/source-influence` y `POST /v1/research`, los tipos de tarea `GEO_AUDIT`, `SOURCE_INFLUENCE` y `CITATION_ATTRIBUTION` e
`include.geoAudit`, `include.sourceInfluence` siguen funcionando; las respuestas usan siempre los nombres nuevos.

### 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:

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/citation-analysis \
  -H "Authorization: Bearer $QUERYING_API_KEY" -H "Content-Type: application/json" \
  -d '{ "taskId": "7c1f…", "brand": "1Password", "competitors": ["Bitwarden"] }'
```

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`.

### Analiza cada respuesta mientras la recopilas

Añade `include.citationAnalysis: true` a una solicitud de recopilación y el análisis se ejecuta sobre la
respuesta en cuanto se recopila. Funciona con los motores de respuesta (`CHATGPT`, `GEMINI`, `PERPLEXITY`, `GOOGLE_AIO`, `GOOGLE_AIMODE`, `NAVER_AI_BRIEF`, `NAVER_AI_TAB`, `BING_SEARCH`, `BING_COPILOT`), en tareas individuales,
lotes de tareas, cuadrículas y `POST /v1/batches`.

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "taskType": "CHATGPT",
    "payload": { "prompt": "best password manager for a small team", "country": "US", "include": { "citationAnalysis": true } },
    "webhook": { "url": "https://example.com/hook" }
  }'
```

El análisis lee la respuesta y sus URL citadas igual que `taskId` más arriba. El resultado de la respuesta
incluye entonces `response.citationAnalysis`: la tarea de análisis tal como la devuelve
`GET /v1/async/task/:id`, con `task`, `credits` y `response` o `error`.

* **Webhook**: se envía una sola vez, cuando termina el análisis, con la respuesta y el análisis juntos.
* **Consulta periódica**: la tarea de respuesta pasa a `COMPLETED` en cuanto la respuesta está lista. Sigue consultando hasta que `response.citationAnalysis.task.status` sea `COMPLETED` o `FAILED`.
* **Los lotes** se completan cuando todas las respuestas y sus análisis han terminado.
* **Sin análisis**: si la respuesta no cita ninguna URL que leer, o tus créditos o el límite diario de la clave no cubren la reserva del análisis, `response.citationAnalysis` es `{ "error": "…" }` y la respuesta se entrega de inmediato.
* **Facturación**: el análisis se cobra aparte, por uso, como cualquier tarea de Citation Analysis. El cobro de la respuesta no cambia. Una clave limitada a ciertos tipos de tarea también debe permitir `CITATION_ANALYSIS`.

## Payload

| Campo | Obligatorio | Notas |
| - | - | - |
| `taskId` | en lugar de `answer` + `citations` | Una tarea de respuesta tuya completada; ver arriba. |
| `answer` | sí, salvo con `taskId` | Markdown original de la respuesta, 1–200.000 caracteres. No lo modifiques; cada rango es un offset UTF-16 en exactamente este texto. |
| `citations[]` | sí, salvo con `taskId` | Las páginas que citó el motor y, opcionalmente, páginas que recuperó pero no citó: como máximo 100 citadas y 50 no citadas, al menos una citada, como máximo 10 URL de hilos de discusión. |
| `citations[].url` | sí | URL HTTP(S), como máximo 2.048 caracteres. |
| `citations[].body` | no | Markdown de la fuente, como máximo 300.000 caracteres por cita; el cuerpo completo de la solicitud es como máximo 1 MiB. Un cuerpo aportado se analiza tal cual y nunca se sustituye por una descarga actual. Sin cuerpo, descargamos la página; una página que no se pudo leer se informa en esa fuente con `error`. |
| `citations[].kind` | no | `inline` o `panel`; se detecta a partir de los enlaces de la respuesta si se omite. |
| `citations[].cited` | no | Por defecto `true`. `false` marca una página que el motor recuperó (un resultado de búsqueda) pero no citó. |
| `citations[].position` | no | Entero ≥ 1: la posición que el propio motor dio a la página en sus resultados de búsqueda. |
| `citations[].query` | no | La búsqueda (≤ 500 caracteres) que encontró la página; se añade a `queries` si falta. |
| `citations[].citedText[]` | no | Hasta 20 pasajes (≤ 2.000 caracteres cada uno) que el propio motor indicó haber citado. |
| `citations[].publishedAt` | no | Fecha de publicación tal como la indicó el motor, ≤ 64 caracteres. |
| `queries[]` | no | Hasta 20 búsquedas que ejecutó el motor, ≤ 500 caracteres cada una. |
| `prompt` | no | Pregunta original. |
| `engine` | no | Qué motor de IA produjo la respuesta. |
| `brand` | no | El nombre de tu marca. Con él, el resultado añade `visibility` y `actions`. |
| `brandDomains[]` | no | Hasta 10 nombres de host de los sitios propios de tu marca, como `coway.com`: solo el nombre de host, sin esquema ni ruta, con letras, dígitos, puntos y guiones, de hasta 253 caracteres. Requiere `brand`; si se envía sin él, la solicitud se rechaza con `422`. Sin `brandDomains`, un host cuyo nombre contiene el nombre de la marca cuenta como sitio propio de la marca. |
| `brandAliases[]` | no | Hasta 10 nombres alternativos de tu marca (líneas de producto, grafías locales), cada uno ≤ 200 caracteres. Requiere `brand`; si se envía sin él, la solicitud se rechaza con `422`. |
| `competitors[]` | no | Hasta 25 nombres de competidores, que aparecen en `brands` con el rol `competitor`. |
| `country` | no | País desde el que se descargan las fuentes; por defecto `US`. |

Con `taskId` o `include.citationAnalysis`, estos campos se rellenan a partir de los datos brutos de la respuesta. Para
`CHATGPT`, las búsquedas del motor pasan a ser `queries` y cada página que recuperó pasa a ser una cita con `cited`,
`position`, `citedText`, `publishedAt` y `query`; la misma URL con distintos parámetros de seguimiento se fusiona. Para
Google AI Overview, las fuentes del resumen son citadas y los resultados orgánicos fuera de ellas son no citados, con
`position` igual a su posición orgánica. Los demás motores solo aportan fuentes citadas.

> [!WARNING]
>
> Enviar `analysis` en la solicitud devuelve `400`. Todos los resultados incluyen insights.

## Resultado

Los resultados guardados antes de v4 conservan su forma anterior, sin campo `version`.

```json theme={"theme":"css-variables"}
{
  "version": 4,
  "answer": "For most homes, the Coway Airmega 250 is the best all-round pick. Levoit Core 300 is a strong budget choice, and Blueair Blue Pure 211+ suits large rooms.",
  "queries": [
    { "id": "q0", "text": "best air purifiers 2026 reviews", "sourceIds": ["s0", "s1", "s2"] }
  ],
  "sources": [
    {
      "id": "s0",
      "url": "https://www.example-reviews.com/best-air-purifiers",
      "domain": "example-reviews.com",
      "channel": "editorial",
      "cited": true,
      "position": 1,
      "queryIds": ["q0"],
      "publishedAt": "October 7, 2026",
      "citedText": ["Levoit Core 300 is the best budget purifier we tested."],
      "brandIds": ["b1", "b2"],
      "own": false,
      "paragraphs": [
        { "id": "s0p0", "text": "Levoit Core 300 is the best budget purifier we tested." },
        { "id": "s0p1", "text": "For large rooms, the Blueair Blue Pure 211+ cleared the air fastest." }
      ]
    },
    {
      "id": "s1",
      "url": "https://www.coway.com/airmega-250",
      "domain": "coway.com",
      "channel": "own",
      "cited": false,
      "position": 4,
      "queryIds": ["q0"],
      "publishedAt": null,
      "citedText": [],
      "brandIds": ["b0"],
      "own": true,
      "paragraphs": []
    },
    {
      "id": "s2",
      "url": "https://www.reddit.com/r/AirPurifiers/comments/abc123/budget_pick",
      "domain": "reddit.com",
      "channel": "community",
      "cited": true,
      "position": 6,
      "queryIds": ["q0"],
      "publishedAt": null,
      "citedText": [],
      "brandIds": ["b1"],
      "own": false,
      "paragraphs": [
        { "id": "s2p0", "text": "Two years with the Levoit Core 300 and it is still quiet on sleep mode." }
      ]
    }
  ],
  "brands": [
    { "id": "b0", "name": "Coway", "role": "target", "rank": 1, "answerRanges": [{ "start": 20, "end": 25 }], "citedSourceIds": [], "retrievedSourceIds": ["s1"], "ownSourceIds": ["s1"] },
    { "id": "b1", "name": "Levoit", "role": "competitor", "rank": 2, "answerRanges": [{ "start": 66, "end": 72 }], "citedSourceIds": ["s0", "s2"], "retrievedSourceIds": [], "ownSourceIds": [] },
    { "id": "b2", "name": "Blueair", "role": "answer", "rank": 3, "answerRanges": [{ "start": 113, "end": 120 }], "citedSourceIds": ["s0"], "retrievedSourceIds": [], "ownSourceIds": [] }
  ],
  "links": [
    { "id": "l0", "paragraphId": "s0p0", "answerRanges": [{ "start": 66, "end": 154 }], "explanation": "Names the Levoit Core 300 as the budget pick." },
    { "id": "l1", "paragraphId": "s0p1", "answerRanges": [{ "start": 66, "end": 154 }], "explanation": "Recommends the Blueair Blue Pure 211+ for large rooms." },
    { "id": "l2", "paragraphId": "s2p0", "answerRanges": [{ "start": 66, "end": 154 }], "explanation": "Reports long-term use of the Levoit Core 300." }
  ],
  "visibility": { "brandId": "b0", "stage": "mentioned", "rank": 1, "answerBrands": 3 },
  "actions": [
    {
      "id": "a0",
      "type": "improve_page",
      "control": "owned",
      "priority": 1,
      "summary": "Coway's Airmega 250 page was retrieved for this search but not cited.",
      "steps": [
        "Add a table of room coverage, noise level and yearly filter cost, the criteria the cited review compares.",
        "Show when the specifications were last updated."
      ],
      "sourceIds": ["s1"],
      "brandIds": ["b0"],
      "queryIds": ["q0"],
      "linkIds": []
    },
    {
      "id": "a1",
      "type": "publish_page",
      "control": "owned",
      "priority": 2,
      "summary": "No Coway page was cited for this search; the cited review is a dated buying guide.",
      "steps": [
        "Publish a 2026 air purifier buying guide on coway.com, organized by room size and budget.",
        "Explain how models were compared, show measured results, and name the author and date."
      ],
      "sourceIds": ["s0"],
      "brandIds": ["b0"],
      "queryIds": ["q0"],
      "linkIds": ["l0", "l1"]
    },
    {
      "id": "a2",
      "type": "post_on_platform",
      "control": "platform",
      "priority": 3,
      "summary": "A cited Reddit thread recommends Levoit and never mentions Coway.",
      "steps": [
        "Reply as an identified Coway representative with the Airmega 250 details the thread asks about."
      ],
      "sourceIds": ["s2"],
      "brandIds": ["b1"],
      "queryIds": ["q0"],
      "linkIds": ["l2"]
    },
    {
      "id": "a3",
      "type": "pitch_publisher",
      "control": "outreach",
      "priority": 4,
      "summary": "The top cited review names Levoit and Blueair but not Coway; only its publisher can add the Airmega 250.",
      "steps": [
        "Offer the editors an Airmega 250 for testing.",
        "Send test data for the criteria the review uses: room coverage, noise and filter cost."
      ],
      "sourceIds": ["s0"],
      "brandIds": ["b1", "b2"],
      "queryIds": ["q0"],
      "linkIds": ["l0", "l1"]
    }
  ],
  "insights": [
    { "summary": "Both cited pages recommend Levoit for a budget; the review also backs Blueair for large rooms.", "sourceIds": ["s0", "s2"], "linkIds": ["l0", "l1", "l2"] },
    { "summary": "The answer names Coway first, yet no cited page names it; only its own page, which was not cited, does.", "sourceIds": ["s1"], "linkIds": [] }
  ]
}
```

### `version`

Siempre `4` para esta forma.

### `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 de `links[]` identifica una unidad semántica completa de tu respuesta: una
frase, un elemento de lista o una celda de tabla. Cada rango de `brands[]` es el nombre exacto tal como está escrito.
Los límites se refieren al texto original.

### `queries[]`

Las búsquedas que ejecutó el motor para esta respuesta. Cada una tiene un `id`, su `text` y `sourceIds`: las fuentes
que encontró esa búsqueda. Vacío si el motor no expuso búsquedas y no enviaste ninguna.

### `sources[]`: una entrada por página

* `id`: identificador opaco, único dentro del resultado.
* `url`: la URL de la página; `domain`: su host.
* `channel`: quién controla la página, deducido de su host:
  * `own`: el sitio propio de tu marca (exactamente cuando `own` es `true`).
  * `brand`: el sitio propio de otra marca que nombra el resultado.
  * `editorial`: un editor; solo el editor puede cambiar la página. Los hosts no reconocidos se informan como
    `editorial`.
  * `retailer`: una tienda online o un marketplace.
  * `review_platform`: un sitio de reseñas de clientes o de empresas.
  * `community`: un foro o un sitio de preguntas y respuestas.
  * `video`: una plataforma de vídeo.
  * `social`: una red social.
  * `blog_platform`: un servicio de blogs alojados.
  * `reference`: una enciclopedia o wiki; nunca es objetivo de una acción.
* `cited`: `true` si la respuesta cita la página, `false` si el motor solo la recuperó.
* `position`: la posición que el propio motor dio a la página, o `null` si no dio ninguna.
* `queryIds[]`: las búsquedas que encontraron la página.
* `publishedAt`: la fecha de publicación tal como la indicó el motor, o `null`.
* `citedText[]`: pasajes que el propio motor indicó haber citado; `[]` si no hay ninguno.
* `brandIds[]`: marcas nombradas en la página legible, su título o `citedText`.
* `own`: `true` si la página está en el sitio propio de tu marca.
* `paragraphs[]`: los párrafos de una página citada 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. Siempre vacío en páginas no
  citadas.
* `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.

### `brands[]`

Todas las marcas que sigue el resultado: tu `brand` (`role: "target"`), tus `competitors` (`"competitor"`) y otras
marcas que nombra la respuesta (`"answer"`).

* `rank`: el orden en que el nombre de la marca aparece por primera vez en la respuesta, empezando por 1; `null` si la respuesta no nombra la marca.
* `answerRanges[]`: los tramos exactos donde la respuesta nombra la marca o uno de sus nombres de producto, en los mismos offsets UTF-16; `answer.slice(start, end)` devuelve el nombre tal como está escrito. La búsqueda no distingue mayúsculas y toma palabras completas (salvo en escrituras sin espacios); incluye títulos y celdas de tabla, nunca URL de enlaces ni marcado de imágenes. A diferencia de los rangos de `links[]`, no son unidades completas de la respuesta.
* `citedSourceIds[]`: fuentes citadas cuya página la nombra.
* `retrievedSourceIds[]`: fuentes no citadas cuya página la nombra.
* `ownSourceIds[]`: fuentes en el sitio propio de la marca; solo se rellena para la marca objetivo.

### `links[]`: una relación por párrafo

* `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.

### `visibility`

Dónde se sitúa tu marca en esta respuesta; `null` si no se envió `brand`.

* `brandId`: tu marca en `brands[]`.
* `stage`: uno de:
  * `mentioned`: la respuesta nombra tu marca.
  * `on_cited_page`: la respuesta no la nombra, pero sí una página citada.
  * `on_retrieved_page`: solo la nombran páginas que el motor recuperó sin citar.
  * `not_found`: ninguna página leída la nombra.
* `rank`: el `rank` de tu marca en `brands[]`.
* `answerBrands`: cuántas marcas nombra la respuesta.

### `actions[]`

Próximos pasos priorizados para tu marca; `[]` si no se envió `brand`. `priority` empieza en 1 (hacer primero) y no
tiene huecos. Las acciones se ordenan por `control`: primero lo que controla tu marca (`owned`), luego las plataformas
donde puede publicar (`platform`) y después el contacto con terceros (`outreach`). `summary` es una frase y `steps[]`
contiene de uno a cinco pasos concretos, ambos en el idioma de la respuesta. `sourceIds`, `brandIds`, `queryIds` y
`linkIds` apuntan a la evidencia de este resultado.

| `type` | `control` | Cuándo aparece | `sourceIds` |
| - | - | - | - |
| `improve_page` | `owned` | Una por cada sitio tuyo: tus propias páginas en él se recuperaron pero no se citaron, o se citaron mientras la respuesta no nombra tu marca. Los pasos indican qué añadir o cambiar para que las páginas respondan al prompt como lo hacen las páginas citadas: criterios, cifras, actualidad. | Hasta tres de tus páginas en ese sitio, primero las no citadas. |
| `publish_page` | `owned` | Para una búsqueda en la que no se citó ninguna de tus páginas: un briefing para una página nueva en tu propio sitio, inspirada en las páginas citadas: tipo de página y título, secciones y criterios, evidencia que mostrar, fecha y autoría clara de la marca. | Las páginas citadas que tomar como modelo. |
| `post_on_platform` | `platform` | Una página de un retailer, plataforma de reseñas, comunidad, plataforma de vídeo, red social o plataforma de blogs nombra marcas rivales pero no la tuya. La acción es la ficha, el perfil, la respuesta o la publicación propia de tu marca en esa plataforma, desde tu propia cuenta: publicar o mejorar la ficha de tu producto, reclamar tu perfil y pedir reseñas a clientes reales, responder como representante identificado de la marca o publicar una demo o una comparativa. Nunca pide nada a la plataforma ni al dueño de la página. Como máximo una por dominio. | La página citada en esa plataforma, que es de otra persona. |
| `pitch_publisher` | `outreach` | Una página editorial citada nombra marcas rivales pero no la tuya, o nombra la tuya mientras la respuesta no lo hace. Solo el editor puede cambiarla; los pasos indican qué enviarle. | La página a la que hacer la propuesta. |

`brandIds` nombra tu marca, o las marcas rivales que nombran esas páginas. Las acciones nunca sugieren reseñas falsas
u ocultas, hacerse pasar por un reseñador independiente, comprar enlaces ni editar páginas que tu marca no posee. Las
páginas de terceros que nombran tu marca sin ser citadas aparecen en `brands[].retrievedSourceIds`, no como acciones.

### `insights[]`

Hasta cuatro resúmenes cortos de lo que suman las páginas: qué canales se citaron, el formato, la actualidad o los
criterios que comparten las páginas citadas, cómo se compara el orden de marcas de la respuesta con lo que cubren las
páginas citadas y dónde se sitúa tu marca. `sourceIds` nombra las páginas y `linkIds` los vínculos en que se basa cada
resumen; al menos uno de los dos no está vacío, y solo nombran entradas de este resultado. Los insights describen
correspondencias; no son consejos.

## 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, y qué marcas nombran esas páginas. No mide influencia en la generación, no puntúa la página
  ni informa de cómo se produjo la respuesta.
* **`not_found` significa que no está en ninguna página leída.** No significa que tu marca esté ausente de la web.
* **Los datos de recuperación dependen del motor.** Las páginas no citadas solo aparecen cuando el motor las expone
  (ChatGPT, Google AI Overview) o cuando envías páginas con `cited: false`. Si no, todas las fuentes son citadas y tu
  propia página solo puede aparecer como citada.
* **Los canales se deducen del host.** `channel` se infiere del host de la página, no de leer quién la escribió.
* **Las acciones son sugerencias, no garantías.** Se priorizan a partir de las páginas listadas en este resultado;
  aplicar una no asegura que la respuesta cambie.
* **Los ids son internos.** No guardes los identificadores `s…`/`q…`/`b…`/`l…`/`a…` 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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.