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

# Evidencia de monitores: fuentes citadas, respuestas y exportación de resultados

> Consulta qué páginas citan los motores, abre la respuesta exacta detrás de cualquier cifra y exporta las respuestas puntuadas de un monitor en JSON o CSV.

Cada cifra de un [informe de monitor](/es/monitors/reports.md) sale de respuestas puntuadas que puedes abrir. Esta
página cubre los endpoints de lectura que las muestran: qué fuentes se citan, cómo evolucionan las citas, la
respuesta detrás de una puntuación, un prompt en detalle, las respuestas por ubicación y la exportación completa.
Solo leen resultados guardados, así que no cuestan nada.

| Endpoint | Responde |
| - | - |
| [`GET /v1/monitors/{id}/sources`](#qué-fuentes-se-citan) | Qué dominios o páginas se citan, con todas las filas accesibles por cursor. |
| [`GET /v1/monitors/{id}/citations`](#citas-a-lo-largo-del-tiempo) | Totales de citas y series diarias de los dominios y páginas principales. |
| [`GET /v1/monitors/{id}/answers/{taskId}`](#lee-una-respuesta) | La respuesta guardada detrás de una puntuación. |
| [`GET /v1/monitors/{id}/prompt`](#un-prompt-en-detalle) | La serie diaria, las fuentes y las respuestas recientes de un prompt. |
| [`GET /v1/monitors/{id}/grid`](#respuestas-por-ubicación) | Respuestas por punto de la ubicación o cuadrícula de un monitor. |
| [`GET /v1/monitors/{id}/results`](#exporta-las-respuestas-puntuadas) | Las respuestas puntuadas en sí, en JSON o CSV. |

## Qué fuentes se citan

`GET /v1/monitors/{id}/sources` ([referencia](/es/api-reference/monitors/list-sources.md)) ordena los dominios o
páginas que citaron los motores, con la misma ventana y los mismos filtros que el informe. Cuenta **respuestas
distintas**, no citas brutas: una página citada tres veces en una respuesta cuenta una vez.

```bash theme={"theme":"css-variables"}
curl "https://api.querying.ai/v1/monitors/$MONITOR_ID/sources?days=30&groupBy=domain&limit=2" \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

| Parámetro | Descripción |
| - | - |
| `groupBy` | `domain` (por defecto): el host sin `www.`, puerto ni credenciales. `page`: la URL completa. |
| `limit` | De 1 a 100, por defecto 20. |
| `cursor` | El `nextCursor` de la respuesta anterior, sin cambios. |
| `days`, `since`, `until`, `engine`, `prompt` | Como en el [informe](/es/monitors/reports.md#parámetros-de-consulta). |

Por ejemplo:

```json theme={"theme":"css-variables"}
{
  "success": true,
  "data": {
    "results": [
      {
        "key": "reviews.example",
        "domain": "reviews.example",
        "url": null,
        "label": "Best wireless earbuds of 2026",
        "citations": 11,
        "prompts": 2,
        "own": false,
        "evidenceTaskId": "6f1c2a9e-3b4d-4e5f-8a7b-1c2d3e4f5a61"
      },
      {
        "key": "rtings.example",
        "domain": "rtings.example",
        "url": null,
        "label": "Earbuds reviews",
        "citations": 7,
        "prompts": 1,
        "own": false,
        "evidenceTaskId": "6f1c2a9e-3b4d-4e5f-8a7b-1c2d3e4f5a62"
      }
    ],
    "nextCursor": "eyJrZXkiOiJydGluZ3MuZXhhbXBsZSIsImNpdGF0aW9ucyI6N30",
    "groupBy": "domain",
    "window": { "since": "2026-09-19T07:00:00.000Z", "until": "2026-10-19T07:00:00.000Z" },
    "filters": { "engine": null, "prompt": null },
    "counting": "distinct_answers",
    "ownership": "current_monitor_domains"
  }
}
```

| Campo | Significado |
| - | - |
| `citations` | Respuestas que citaron este dominio o página. |
| `prompts` | Prompts distintos cuyas respuestas lo citaron. |
| `own` | Si es uno de los `domains` actuales del monitor o un subdominio suyo (`ownership: "current_monitor_domains"`). |
| `url` | La URL de la página con `groupBy=page`; `null` para dominios. |
| `label` | La etiqueta de la cita tal como la dio el motor, si la hay. |
| `evidenceTaskId` | Una respuesta que lo citó. Ábrela con el [endpoint de respuestas](#lee-una-respuesta). |

Las filas se ordenan por `citations` y después por `key`. `nextCursor` es `null` en la última página; no hay corte
de top N, así que se puede llegar a cada dominio o página citados en la ventana. Trata el cursor como opaco.

## Citas a lo largo del tiempo

`GET /v1/monitors/{id}/citations` ([referencia](/es/api-reference/monitors/get-citations.md)) devuelve los datos de
los gráficos de citas del panel: totales de la ventana, una serie diaria y los 20 dominios y páginas principales,
cada uno con su propia serie diaria.

```bash theme={"theme":"css-variables"}
curl "https://api.querying.ai/v1/monitors/$MONITOR_ID/citations?days=30&kind=owned" \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

| Parámetro | Descripción |
| - | - |
| `days` | `7`, `30` (por defecto) o `90`. |
| `since`, `until` | Una ventana fija, como en el informe. Si se definen, `days` solo se devuelve como `windowDays`. |
| `engine` | Un motor, o `all` (por defecto). |
| `prompt` | Un prompt, por texto exacto. |
| `kind` | `all` (por defecto), `owned`, `editorial`, `review_media`, `pr_wire`, `institution`, `reviews`, `commerce`, `social`, `blog`, `community`, `video`, `brand`, `content` u `other`. |
| `q` | Conserva los dominios cuyo nombre, o las páginas cuya URL, contiene este texto. Hasta 200 caracteres. |
| `offset` | De 0 a 10 000, para paginar las listas de dominios y páginas de 20 en 20. |

Aquí una cita es una página en una respuesta, así que `citations` cuenta páginas citadas, no respuestas.
`/sources` cuenta respuestas distintas, así que sus cifras pueden diferir.

| Campo | Contenido |
| - | - |
| `totals` | `answers` (respuestas puntuadas), `citedAnswers`, `citations` y `ownedCitations` de la ventana. |
| `days` | Una entrada por día UTC con respuestas: `day`, `answers`, `citations`, `ownedCitations`. Un día con respuestas y sin citas tiene `citations: 0`; un día sin respuestas no aparece. |
| `domains`, `pages` | Hasta 20 filas desde `offset`: `key`, `domain`, `label`, `kind`, `owned`, `citations`, `answers`, `prompts` y `daily`, una lista de `{ day, citations }` para los días con citas. |
| `types` | Por `kind`: `citations` y `domains` distintos. |
| `pagination` | `offset`, `limit` (20), `totalDomains`, `totalPages`. |
| `windowDays`, `engine`, `prompt`, `since`, `until` | El ámbito leído. |

`kind` es `owned` para tus dominios; los demás tipos salen de una lista fija de editores conocidos, y todo lo
desconocido es `other`. La proporción de una fuente es su `citations` dividido por `totals.citations`. `kind`, `q` y
`offset` solo reducen `domains`, `pages` y `pagination`; `totals`, `days` y `types` siempre cubren todas las fuentes
de la ventana.

## Lee una respuesta

`GET /v1/monitors/{id}/answers/{taskId}` ([referencia](/es/api-reference/monitors/get-answer.md)) devuelve la
respuesta guardada detrás de una puntuación, con aquello con lo que se comparó, para que puedas comprobar una
mención en lugar de fiarte de ella. Los ids de tarea salen de `evidenceTaskId`, `mentionTaskId` y `latestTaskId` en
un informe, de `/sources` y de las filas exportadas.

```bash theme={"theme":"css-variables"}
curl "https://api.querying.ai/v1/monitors/$MONITOR_ID/answers/6f1c2a9e-3b4d-4e5f-8a7b-1c2d3e4f5a61" \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

Por ejemplo:

```json theme={"theme":"css-variables"}
{
  "success": true,
  "data": {
    "answer": {
      "taskId": "6f1c2a9e-3b4d-4e5f-8a7b-1c2d3e4f5a61",
      "engine": "CHATGPT",
      "prompt": "best wireless earbuds for commuting",
      "mentioned": true,
      "cited": true,
      "position": 81,
      "ranAt": "2026-10-17T09:01:48.311Z",
      "answerText": "For commuting, look at the **Northwind Audio Pro** for noise cancelling or the **Acme Audio Air** for battery life.",
      "sources": [
        { "url": "https://reviews.example/best-earbuds", "label": "Best wireless earbuds of 2026", "position": 1 },
        { "url": "https://acme-audio.example/air", "label": "Acme Audio Air", "position": 2 }
      ],
      "competitorHits": ["Northwind Audio"],
      "scoringContext": {
        "aliases": ["Acme Audio", "Acme"],
        "domains": ["acme-audio.example"],
        "competitors": [
          { "name": "Northwind Audio", "aliases": ["Northwind Audio"], "source": "user" },
          { "name": "Contoso Sound", "aliases": ["Contoso Sound", "Contoso"], "source": "user" }
        ],
        "country": "US",
        "version": "3f9a6c1e8b2d4f7a9c0e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a",
        "scoredAt": "2026-10-17T09:01:48.305Z",
        "answerPresent": true,
        "evidenceTruncated": false
      },
      "analysis": null
    },
    "display": {
      "markdown": "For commuting, look at the **Northwind Audio Pro** for noise cancelling or the **Acme Audio Air** for battery life.",
      "text": "For commuting, look at the Northwind Audio Pro for noise cancelling or the Acme Audio Air for battery life."
    },
    "mode": "BRAND",
    "aliases": ["Acme Audio", "Acme"],
    "competitors": [
      { "name": "Northwind Audio", "aliases": ["Northwind Audio"], "source": "user" },
      { "name": "Contoso Sound", "aliases": ["Contoso Sound", "Contoso"], "source": "user" }
    ],
    "scoringKnown": true,
    "evidenceTruncated": false
  }
}
```

| Campo | Significado |
| - | - |
| `answer` | La respuesta puntuada, tal como se guardó. |
| `answer.answerText` | La respuesta, en markdown cuando el motor la dio así, cortada en 8000 caracteres con un `…` final. `null` cuando el motor no devolvió texto. |
| `answer.sources` | Las páginas citadas en el orden del motor, deduplicadas por URL, cada una con su `label` y su `position` empezando en 1. |
| `answer.competitorHits` | Los competidores nombrados en la respuesta. |
| `answer.position` | Offset de carácter de la primera coincidencia de tu marca, o `null`. |
| `answer.scoringContext` | La definición con la que se puntuó la respuesta: `aliases`, `domains`, `competitors`, `country`, su hash `version`, `scoredAt`, `answerPresent` y `evidenceTruncated`. `null` para respuestas puntuadas antes de que se guardara. |
| `answer.analysis` | El resultado del [análisis de respuesta](/es/engines/answer-analysis.md) cuando el monitor tiene `analysis: true`; si no, `null`. |
| `display` | Campos de visualización de la respuesta original de la tarea, como `markdown`, `text`, `sources`, `searchQueries`, maquetación, lugares y productos, según el motor. `null` cuando la tarea original ya no se conserva. |
| `mode` | El modo del monitor. En un monitor de categoría `aliases` está vacío y `competitors` es la lista de marcas seguidas. |
| `aliases`, `competitors` | Aquello con lo que se comparó esta respuesta: de `scoringContext`, o los valores actuales del monitor cuando es `null`. |
| `scoringKnown` | `false` cuando la respuesta es anterior al contexto de puntuación guardado; entonces `aliases` y `competitors` son los valores actuales del monitor. |
| `evidenceTruncated` | Si `answerText` se cortó. `null` cuando `scoringKnown` es `false`. |

Un id de tarea que no es una respuesta puntuada de este monitor devuelve `404 NOT_FOUND`.

## Un prompt en detalle

`GET /v1/monitors/{id}/prompt` ([referencia](/es/api-reference/monitors/get-prompt.md)) devuelve los datos de un
prompt. `prompt` (texto exacto) es obligatorio y funciona también con prompts que ya quitaste del monitor; `days`
es `7`, `30` (por defecto) o `90`.

```bash theme={"theme":"css-variables"}
curl -G "https://api.querying.ai/v1/monitors/$MONITOR_ID/prompt" \
  --data-urlencode "prompt=best wireless earbuds for commuting" \
  --data-urlencode "days=30" \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

| Campo | Contenido |
| - | - |
| `monitor` | `id`, `name`, `engines` y `aliases`. |
| `prompt`, `windowDays` | Lo que se leyó. |
| `series` | Por día UTC y motor: `day`, `engine`, `runs`, `mentioned`, `cited`. |
| `topDomains` | Hasta 12 dominios citados: `domain`, `citations`, `prompts`, `own`. |
| `topPages` | Hasta 20 páginas citadas: `url`, `domain`, `label`, `citations`, `prompts`, `own`. |
| `results` | Hasta 100 respuestas puntuadas más recientes: `taskId`, `engine`, `prompt`, `mentioned`, `cited`, `position`, `ranAt`, `competitorHits`. |

Aquí `citations` cuenta páginas citadas entre respuestas, no respuestas distintas. Para una lista de fuentes
completa y paginada de un prompt, usa `/sources?prompt=...`.

## Respuestas por ubicación

`GET /v1/monitors/{id}/grid` ([referencia](/es/api-reference/monitors/get-grid.md)) devuelve las respuestas de un
monitor por punto de su [ubicación o cuadrícula](/es/monitors.md#ubicación-y-cuadrículas) actual. `engine` (uno de los
motores del monitor) y `prompt`, opcionales, la acotan; `days` es `7`, `30` (por defecto) o `90`.

La respuesta tiene `location`, `grid`, `engine`, `prompt`, `windowDays` y `points`. Cada punto tiene `row`, `col`,
`location`, `runs`, `mentioned`, `cited`, `topCompetitor` (`{ name, mentions }` o `null`) y `latest`
(`{ taskId, engine, mentioned, ranAt }` de la respuesta más reciente, o `null`). Las respuestas se asocian a los
puntos por sus coordenadas exactas, así que quedan fuera las respuestas de una ubicación o cuadrícula anterior del
mismo monitor. Un monitor sin ubicación ni cuadrícula no devuelve puntos.

## Exporta las respuestas puntuadas

`GET /v1/monitors/{id}/results` ([referencia](/es/api-reference/monitors/export-results.md)) devuelve las respuestas
puntuadas en sí, para cargarlas en un almacén de datos, una hoja de cálculo o una presentación. Para entregar cada
respuesta nueva a un almacenamiento en la nube de forma programada, consulta
[Exportación de resultados](/es/exports.md).

```bash theme={"theme":"css-variables"}
curl "https://api.querying.ai/v1/monitors/$MONITOR_ID/results?since=2026-10-01T00:00:00Z&until=2026-10-18T00:00:00Z&mentioned=false" \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

| Parámetro | Descripción |
| - | - |
| `since`, `until` | Ventana semiabierta. Por defecto, los 30 días que terminan ahora. Instantes ISO con zona horaria; aquí también se acepta una fecha `YYYY-MM-DD` sola, leída como medianoche UTC. No hay intervalo máximo. |
| `engine`, `prompt` | Como en el informe. |
| `mentioned`, `cited` | `true` o `false`. `mentioned=false` es la vista de brechas. |
| `competitor` | Conserva las respuestas cuyas coincidencias de competidores guardadas incluyen exactamente este nombre, de 1 a 80 caracteres. Coincide con el nombre tal como se guardó al puntuar cada respuesta y no se comprueba con los competidores actuales del monitor: un nombre que el monitor nunca siguió no devuelve filas, no un error. |
| `includeEvidence` | `true` añade `answerText`, `sources` y `scoringContext` a cada fila. |
| `limit` | De 1 a 10 000, por defecto 10 000. Con `includeEvidence=true`: de 1 a 100, por defecto 100. |
| `format` | `json` (por defecto) o `csv`. |
| `cursor` | El `nextCursor` de la página anterior. |

La respuesta JSON, por ejemplo:

```json theme={"theme":"css-variables"}
{
  "success": true,
  "data": {
    "monitor": { "id": "d39b8de0-b159-4229-bf58-7064e5369db1", "name": "Earbud brand tracking" },
    "since": "2026-10-01T00:00:00.000Z",
    "until": "2026-10-18T00:00:00.000Z",
    "filters": { "engine": null, "prompt": null, "mentioned": false, "cited": null, "competitor": null },
    "truncated": false,
    "nextCursor": null,
    "results": [
      {
        "id": "0b6e4a52-7c1d-4f8e-9a3b-2d5c6e7f8a91",
        "taskId": "6f1c2a9e-3b4d-4e5f-8a7b-1c2d3e4f5a63",
        "engine": "CHATGPT",
        "prompt": "are cheap earbuds worth it",
        "mentioned": false,
        "cited": false,
        "position": null,
        "ranAt": "2026-10-17T09:02:57.204118Z",
        "competitorHits": ["Northwind Audio"]
      }
    ]
  }
}
```

Las filas van de la más nueva a la más antigua. La paginación es un keyset sobre `ranAt` (precisión de
microsegundos) y el `id` de la fila, así que las filas que comparten marca de tiempo nunca se omiten ni se repiten.
Para una extracción repetible, envía `since` y `until` explícitos, mantenlos fijos y sigue `nextCursor` hasta que
sea `null`. Cambiar la ventana entre páginas puede omitir o repetir filas. Trata el cursor como opaco.

### CSV

Con `format=csv` la respuesta es `text/csv`, UTF-8 con marca de orden de bytes para que las hojas de cálculo lo
abran correctamente. Un cuerpo CSV no puede llevar paginación, así que pasa a las cabeceras:

| Cabecera | Significado |
| - | - |
| `x-next-cursor` | El cursor de la página siguiente; vacío en la última página. |
| `x-result-truncated` | `true` cuando coincidieron más filas de las que devolvió esta página. |
| `x-result-since`, `x-result-until` | La ventana resuelta, para que una exportación reanudada pueda fijarla. |

Las columnas son `ran_at, monitor, engine, prompt, mentioned, cited, position, competitors, task_id`, más
`answer_text, sources, scoring_context` con `includeEvidence=true`. `competitors` une los nombres con `|`;
`sources` y `scoring_context` contienen texto JSON. A una celda que empieza por `=`, `+`, `-`, `@`, un tabulador o
un retorno de carro se le antepone `'`, para que el texto del motor no pueda convertirse en una fórmula.

```bash theme={"theme":"css-variables"}
curl -D headers.txt -o page1.csv \
  "https://api.querying.ai/v1/monitors/$MONITOR_ID/results?since=2026-10-01T00:00:00Z&until=2026-10-18T00:00:00Z&format=csv&includeEvidence=true" \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

## Errores y límites

| Límite | Valor |
| - | - |
| Ventana de informes y fuentes | 90 días |
| Página de `/sources` | De 1 a 100 filas, por defecto 20 |
| Listas de `/citations` | 20 filas por página; `offset` hasta 10 000 |
| Página de `/results` | 10 000 filas; 100 con `includeEvidence=true` |
| Texto de respuesta guardado | 8000 caracteres |
| `/prompt` | 12 dominios, 20 páginas, 100 respuestas |

Los parámetros no válidos devuelven `400 VALIDATION_ERROR` indicando el problema, incluido un cursor que no devolvió
la página anterior. Un monitor de otra cuenta, o un id de tarea desconocido, devuelve `404 NOT_FOUND`. Consulta
[Monitores](/es/monitors.md#errores) para los códigos compartidos.

## Próximos pasos

> **[Eventos y alertas](/es/monitors/events-and-alerts.md)**
>
> Recibe un webhook cuando cambian las respuestas a un prompt.

> **[Exportación de resultados](/es/exports.md)**
>
> Entrega las respuestas puntuadas a tu propio almacenamiento de forma programada.


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