Documentación REST API

Acceda a sus datos de visibilidad AI de forma programática a través de la API REST. Úsela con cualquier herramienta que soporte solicitudes HTTP.

Resumen

Genere una clave API personal en la configuración de su cuenta. Luego use solicitudes HTTP GET estándar con su clave API para obtener puntuaciones de visibilidad, recuentos de menciones y datos de sentimiento de ChatGPT, Gemini, Perplexity y Claude. Funciona con Excel, Google Sheets, Power BI, Tableau, Python y cualquier otro cliente HTTP.

URL base

Todos los endpoints de la API están disponibles bajo la siguiente URL base:

https://your-domain.com/api/v1/looker/

Reemplace your-domain.com con el dominio real de su instancia del AI Visibility Tool.

Autenticación

Todas las solicitudes API requieren autenticación mediante una clave API personal. Puede crear claves API en la configuración de su cuenta en "Claves API".

Cómo autenticarse

Incluya su clave API en cada solicitud utilizando uno de estos métodos:

Opción 1: Encabezado Authorization (Recomendado)
curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/data
Opción 2: Parámetro de consulta
curl "https://your-domain.com/api/v1/looker/data?api_key=avt_your_key_here"
Su clave API comienza con avt_ seguido de 48 caracteres. Mantenga su clave API en secreto — proporciona acceso completo de lectura a sus datos de visibilidad.

Gestión de claves API

  • Crear claves: Menú de cuenta → Claves API → Crear clave API
  • Máximo 3 claves activas al mismo tiempo
  • Las claves se muestran solo una vez en la creación — guárdelas de forma segura
  • Elimine las claves no utilizadas en cualquier momento desde la página de Claves API

Límites de velocidad

Límite Valor
Solicitudes por minuto 100 por clave API
Registros máximos por solicitud 10,000

Cuando se excede el límite de velocidad, la API devuelve HTTP 429. Espere 60 segundos antes de reintentar.

Endpoints

GET /api/v1/looker/schema

Devuelve el esquema de datos con nombres de campos, tipos e información semántica. Útil para comprender la estructura de datos antes de consultar.

Parámetros: Ninguno

Solicitud de ejemplo:

curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/schema

Respuesta de ejemplo:

{
  "schema": [
    {
      "name": "date",
      "label": "Date",
      "dataType": "STRING",
      "semantics": {
        "conceptType": "DIMENSION",
        "semanticType": "YEAR_MONTH_DAY"
      }
    },
    {
      "name": "visibility_score",
      "label": "Visibility Score",
      "dataType": "NUMBER",
      "semantics": {
        "conceptType": "METRIC"
      }
    }
  ]
}
GET /api/v1/looker/data

Devuelve los resultados de su análisis de visibilidad AI. Soporta filtrado por fecha, área temática y sistema AI. Incluye paginación para grandes conjuntos de datos.

Parámetros de consulta:

Parámetro Escriba Requerido Descripción
date_from String No Filtro de fecha de inicio (AAAA-MM-DD)
date_to String No Filtro de fecha de fin (AAAA-MM-DD)
selection_id Entero No Filtrar por ID de área temática (obtener IDs del endpoint /selections)
ai_system String No Filtrar por sistema AI: chatgpt, gemini, perplexity o claude
limit Entero No Número de registros a devolver (predeterminado: 1000, máx: 10000)
offset Entero No Número de registros a omitir para paginación (predeterminado: 0)

Solicitud de ejemplo:

curl -H "Authorization: Bearer avt_your_key_here" \
  "https://your-domain.com/api/v1/looker/data?date_from=2025-01-01&date_to=2025-01-31&ai_system=chatgpt&limit=500"

Respuesta de ejemplo:

{
  "data": [
    {
      "date": "20250115",
      "topic_area": "Brand Monitoring",
      "prompt": "What is the best project management tool?",
      "category": "Product Comparison",
      "funnel_stage": "Consideration",
      "ai_system": "chatgpt",
      "brand": "Asana",
      "visibility_score": 75,
      "mention_count": 3,
      "position_score": 85,
      "sentiment_score": 0.8,
      "web_search_used": false
    }
  ],
  "pagination": {
    "total": 1250,
    "limit": 500,
    "offset": 0,
    "has_more": true
  }
}
Consejo: Use los campos de paginación para iterar a través de grandes conjuntos de datos. Aumente el offset por el valor del límite para obtener la siguiente página.
GET /api/v1/looker/selections

Devuelve una lista de sus áreas temáticas (selecciones) con sus IDs. Use estos IDs para filtrar datos en el endpoint /data.

Parámetros: Ninguno

Solicitud de ejemplo:

curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/selections

Respuesta de ejemplo:

{
  "selections": [
    {
      "id": 42,
      "name": "Brand Monitoring",
      "description": "Track brand mentions across AI platforms",
      "prompt_count": 25,
      "is_active": true,
      "created_at": "2025-01-10T14:30:00"
    }
  ]
}

Referencia de campos de datos

Cada registro en la respuesta de /data contiene los siguientes campos:

Dimensiones

Campo Escriba Descripción
date String Fecha de análisis en formato AAAAMMDD
topic_area String Nombre del área temática (selección) que se está monitoreando
prompt String El texto del prompt enviado al sistema de AI
category String Categoría asignada al prompt
funnel_stage String Etapa del embudo de marketing (p. ej. Conciencia, Consideración, Decisión)
ai_system String La plataforma AI consultada (chatgpt, gemini, perplexity, claude)
brand String La marca que se rastrea en busca de menciones

Métricas

Campo Escriba Rango Descripción
visibility_score Número 0–100 Puntuación general de visibilidad de la marca en la respuesta AI
mention_count Número 0+ Número de veces que la marca fue mencionada en la respuesta de AI
position_score Número 0–100 Puntuación de clasificación de posición — valores más altos indican menciones más tempranas
sentiment_score Número -1 a +1 Puntuación de sentimiento de -1 (negativo) a +1 (positivo)
web_search_used Booleano true/false Si el sistema de AI utilizó búsqueda web para generar la respuesta

Formato de respuesta

Todas las respuestas se devuelven como JSON con codificación UTF-8. El encabezado HTTP Content-Type está configurado como application/json.

Códigos de estado HTTP

Código de estado Significado
200 OK Solicitud exitosa
401 Unauthorized Clave API faltante, inválida o desactivada
429 Too Many Requests Límite de velocidad excedido — espere 60 segundos

Manejo de errores

Las respuestas de error siempre incluyen un cuerpo JSON con un mensaje de error:

{
  "error": "API key required. Use Authorization: Bearer <key> header or ?api_key=<key> query parameter."
}
Errores comunes y soluciones
Error Causa Solución
API key required No hay clave API en la solicitud Agregue el encabezado Authorization o el parámetro api_key
Invalid or inactive API key La clave es incorrecta, eliminada o desactivada Verifique la clave en su página de Claves API; cree una nueva si es necesario
Rate limit exceeded Más de 100 solicitudes en 60 segundos Espere 60 segundos, luego reintente; considere almacenar los resultados en caché

Ejemplos de código

Python
import requests

API_KEY = "avt_your_key_here"
BASE_URL = "https://your-domain.com/api/v1/looker"

headers = {"Authorization": f"Bearer {API_KEY}"}

# Obtener todas las áreas temáticas
selections = requests.get(f"{BASE_URL}/selections", headers=headers).json()
print(selections)

# Obtener datos de visibilidad para enero 2025
params = {
    "date_from": "2025-01-01",
    "date_to": "2025-01-31",
    "limit": 1000
}
data = requests.get(f"{BASE_URL}/data", headers=headers, params=params).json()
print(f"Total records: {data['pagination']['total']}")

# Paginar a través de todos los resultados
all_records = []
offset = 0
while True:
    params["offset"] = offset
    response = requests.get(f"{BASE_URL}/data", headers=headers, params=params).json()
    all_records.extend(response["data"])
    if not response["pagination"]["has_more"]:
        break
    offset += params["limit"]

print(f"Fetched {len(all_records)} records total")
JavaScript (Node.js / Browser)
const API_KEY = "avt_your_key_here";
const BASE_URL = "https://your-domain.com/api/v1/looker";

const headers = { "Authorization": `Bearer ${API_KEY}` };

// Obtener datos de visibilidad
const response = await fetch(`${BASE_URL}/data?date_from=2025-01-01&limit=500`, { headers });
const result = await response.json();
console.log(`Total: ${result.pagination.total} records`);
cURL
# Obtener esquema
curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/schema

# Obtener datos con filtros
curl -H "Authorization: Bearer avt_your_key_here" \
  "https://your-domain.com/api/v1/looker/data?date_from=2025-01-01&ai_system=chatgpt&limit=100"

# Obtener áreas temáticas
curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/selections
Google Sheets (Apps Script)
function getVisibilityData() {
  const API_KEY = "avt_your_key_here";
  const url = "https://your-domain.com/api/v1/looker/data?limit=500";

  const options = {
    headers: { "Authorization": "Bearer " + API_KEY },
    muteHttpExceptions: true
  };

  const response = UrlFetchApp.fetch(url, options);
  const json = JSON.parse(response.getContentText());

  // Escribir datos en la hoja activa
  const sheet = SpreadsheetApp.getActiveSheet();
  const headers = Object.keys(json.data[0]);
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);

  const rows = json.data.map(row => headers.map(h => row[h]));
  sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}

Preguntas frecuentes

La API REST está disponible en todos los planes, incluido el plan gratuito. Cualquier usuario puede generar una clave API y acceder a sus datos a través de la API.

No. Cada clave API está vinculada a su cuenta personal. La API solo devuelve datos de sus propias áreas temáticas y análisis. No hay forma de acceder a los datos de otro usuario.

La API siempre devuelve los datos más recientes disponibles. Los nuevos resultados aparecen tan pronto como se completa un análisis en el AI Visibility Tool. No hay retraso ni caché en el lado de la API.

Cualquier herramienta que pueda enviar solicitudes HTTP funciona con la API. Ejemplos comunes: Python, JavaScript, Excel (Power Query), Google Sheets (Apps Script), Power BI, Tableau, Looker Studio, Postman, cURL y aplicaciones personalizadas.

Las claves API se muestran solo una vez en la creación. Si perdió su clave, vaya a Cuenta → Claves API, elimine la clave anterior y cree una nueva. Actualice la clave en todas sus integraciones.

Use los parámetros limit y offset. Comience con offset=0, luego aumente el offset por el valor del límite para cada solicitud subsiguiente. Verifique el campo has_more en el objeto de paginación para saber cuándo ha obtenido todos los registros.