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

# Listar contenido seguido

> Devuelve contenido monitorizado paginado con métricas de citas, impresiones y respuestas del intervalo solicitado. Excluye el contenido oculto (`is_hidden = true`).

Usa consulta anticipada de `page_size + 1`: `pagination.has_more === true` indica que existe otra página; no hay campo de total.

Limita el resultado con `sheet_id`, `content_type` y los `filters` habituales. Un `sheet_id` desconocido o de otro sitio devuelve 403.



## OpenAPI

````yaml es/api-reference/openapi.json post /api/v1/content
openapi: 3.1.0
info:
  title: API de AthenaHQ
  description: >-
    La API de AthenaHQ ofrece acceso programático para gestionar tus sitios web
    y consultas para optimizar el contenido con IA.
  version: 1.0.0
  contact:
    email: support@athenahq.ai
servers:
  - url: https://api.athenahq.ai
    description: Servidor de producción
security:
  - apiKey: []
tags:
  - name: Basics
    description: Operaciones principales de la API para gestionar sitios web y consultas
  - name: Metrics
    description: Endpoints de métricas y análisis para monitorizar la visibilidad en IA
  - name: Billing
    description: Endpoints de facturación y créditos para gestionar el uso
  - name: Team Management
    description: Endpoints para gestionar miembros del equipo e invitaciones
  - name: Groups
    description: Endpoints para gestionar grupos de sitios web
  - name: Content
    description: >-
      Endpoints para acceder a los datos del centro de contenidos: pestañas, URL
      monitorizadas y desglose de consultas por URL.
  - name: Pitch Workspace
    description: >-
      Endpoints para acceder a los informes del espacio de propuestas:
      ejecuciones de propuestas con alcance de organización, con competidores,
      consultas, atributos y métricas agregadas.
  - name: Knowledge Base
    description: >-
      Endpoints para leer la base de conocimientos de la marca: datos aprobados
      sobre la marca y los pilares que los organizan.
paths:
  /api/v1/content:
    post:
      tags:
        - Content
      summary: Listar contenido seguido
      description: >-
        Devuelve contenido monitorizado paginado con métricas de citas,
        impresiones y respuestas del intervalo solicitado. Excluye el contenido
        oculto (`is_hidden = true`).


        Usa consulta anticipada de `page_size + 1`: `pagination.has_more ===
        true` indica que existe otra página; no hay campo de total.


        Limita el resultado con `sheet_id`, `content_type` y los `filters`
        habituales. Un `sheet_id` desconocido o de otro sitio devuelve 403.
      operationId: listTrackedContent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentListRequest'
      responses:
        '200':
          description: Respuesta correcta con la página de contenido monitorizado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentListResponse'
              example:
                content:
                  - content_id: 11111111-2222-3333-4444-555555555555
                    title: Best CRMs for Startups, Reviewed
                    url: example.com/blog/crm-roundup
                    normalized_url: example.com/blog/crm-roundup
                    type: external
                    topic_name: CRM Software
                    sheet_id: 00000000-0000-4000-8000-000000000001
                    sheet_name: 3rd-Party Placements
                    citations: 42
                    citation_percent: 12.5
                    estimated_impressions: 18400
                    total_responses: 336
                    mark_as_done_time: '2024-01-15T00:00:00.000Z'
                    created_at: '2024-01-10T00:00:00.000Z'
                pagination:
                  page_num: 0
                  page_size: 50
                  has_more: true
        '400':
          description: 'Solicitud incorrecta: parámetros no válidos.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missing_website_id:
                  value:
                    error: website_id is required
                invalid_website_id:
                  value:
                    error: website_id must be a uuid
        '401':
          description: 'Sin autorización: falta la clave de API o no es válida.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Acceso denegado: no tienes acceso a este sitio web o un ID de
            subrecurso (`prompt_ids`, `competitor_ids`, `location_ids`,
            `persona_ids`, `prompt_tags`, `sheet_id`) pertenece a otro sitio
            web.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                website:
                  value:
                    error: Unauthorized access to this website
                sheet:
                  value:
                    error: Unauthorized access to this sheet
                prompts:
                  value:
                    error: Unauthorized access to these prompts
        '500':
          description: Error interno del servidor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
components:
  schemas:
    ContentListRequest:
      type: object
      description: Cuerpo de la solicitud para listar contenido seguido.
      required:
        - website_id
        - filters
      properties:
        website_id:
          type: string
          format: uuid
          description: Sitio web del que se listará el contenido seguido.
          example: 123e4567-e89b-12d3-a456-426614174000
        filters:
          allOf:
            - $ref: '#/components/schemas/ApiFilters'
            - type: object
              properties:
                persona_ids:
                  type: array
                  description: >-
                    ID de perfiles de audiencia por los que se filtrará (obtén
                    la lista con GET /api/v1/personas). Omítelos para incluirlos
                    todos.
                  items:
                    type: string
                    format: uuid
                prompt_tags:
                  type: array
                  description: >-
                    ID de etiquetas para filtrar consultas (obtén la lista con
                    GET /api/v1/prompt-tags). Una entrada también puede ser
                    `type:high_intent` (con marca) o `type:discovery` (sin
                    marca) para filtrar por tipo. Omítelos para incluir todas
                    las etiquetas.
                  items:
                    oneOf:
                      - type: string
                        format: uuid
                      - type: string
                        enum:
                          - type:discovery
                          - type:high_intent
                prompt_tags_operator:
                  type: string
                  enum:
                    - is_any_of
                    - has_all_of
                  description: >-
                    Cómo se combinan los ID de prompt_tags: is_any_of selecciona
                    consultas con cualquiera de las etiquetas; has_all_of, solo
                    las que tienen todas. Las entradas `type:` se combinan de
                    otra manera: la consulta también debe tener uno de los tipos
                    indicados. Por defecto, is_any_of.
        content_type:
          type: string
          enum:
            - external
            - imported
            - manual
            - athena_created
            - draft
            - snipe
            - optimize
            - slice
          description: >-
            Limita los resultados a un tipo de contenido. `manual` es contenido
            redactado por el usuario directamente en el editor vacío.
            `athena_created` agrupa los cuatro subtipos generados por Athena
            (draft, snipe, optimize, slice). Omítelo para incluir todos. Este
            endpoint lista contenido monitorizado y publicado, por lo que una
            fila en borrador —`manual`, `draft`, `snipe`, `optimize` o `slice`—
            solo aparece tras publicarse.
        sheet_id:
          type: string
          format: uuid
          description: >-
            Limita el contenido a una pestaña del centro de contenidos. Obtén
            los ID con `GET /api/v1/content/sheets`. Una pestaña `sheet` lista
            su contenido; una `view`, incluida la predeterminada, lista el
            repositorio principal compartido (contenido sin hoja), sin los
            filtros guardados de la vista. Omítelo para incluir todas.
        mentioned:
          type: boolean
          description: >-
            Si es `true`, cuenta solo las respuestas que mencionan tu marca. Si
            es `false`, cuenta solo las que no la mencionan. Omítelo para contar
            todas las respuestas.
        page_num:
          type: integer
          minimum: 0
          default: 0
          description: Número de página, empezando en cero.
        page_size:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
          description: Número de elementos por página (1–100).
      example:
        website_id: 123e4567-e89b-12d3-a456-426614174000
        filters:
          start_date: '2024-01-01T00:00:00.000Z'
          end_date: '2024-01-31T23:59:59.999Z'
        sheet_id: 00000000-0000-4000-8000-000000000001
        page_size: 50
    ContentListResponse:
      type: object
      required:
        - content
        - pagination
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/ContentItem'
        pagination:
          $ref: '#/components/schemas/Pagination'
    Error:
      type: object
      description: Objeto de respuesta de error
      required:
        - error
      properties:
        error:
          type: string
          description: Mensaje de error que describe qué ha fallado
          example: Unauthorized
    ApiFilters:
      type: object
      description: >-
        Filtros para consultar respuestas y métricas. Pasa los filtros de
        ubicación en el cuerpo JSON como `filters.location_ids`.
      required:
        - start_date
      properties:
        schedule_id:
          $ref: '#/components/schemas/PromptScheduleSelection'
        start_date:
          type: string
          format: date-time
          description: Fecha de inicio del filtro (UTC)
          example: '2024-01-01T00:00:00.000Z'
        end_date:
          type: string
          format: date-time
          description: Fecha de fin del filtro (UTC)
          example: '2024-12-31T23:59:59.999Z'
        models:
          type: array
          description: Filtrar por modelos de IA
          items:
            type: string
            enum:
              - chatgpt
              - perplexity
              - gemini
              - google_ai_overview
              - copilot
              - claude
              - ai_mode
              - grok
              - deepseek
              - meta_ai
              - mistral
          example:
            - chatgpt
            - perplexity
        prompt_ids:
          type: array
          description: Filtrar por IDs de consultas concretas
          items:
            type: string
            format: uuid
        competitor_ids:
          type: array
          description: Filtrar por IDs de competidores concretos
          items:
            type: string
            format: uuid
        location_ids:
          type: array
          description: >-
            Filtra por ID de ubicaciones. Pásalo en el cuerpo JSON como
            `filters.location_ids`, incluso para una sola ubicación. Usa los ID
            devueltos por `GET /api/v1/locations`.
          items:
            type: string
            format: uuid
          example:
            - 123e4567-e89b-12d3-a456-426614174111
        prompt_status:
          type: string
          enum:
            - active
            - paused
          description: Filtrar por estado de la consulta
        prompt_type:
          type: string
          enum:
            - branded
            - non_branded
          description: Filtrar por tipo de consulta
    ContentItem:
      type: object
      description: >-
        Elemento de contenido monitorizado (borrador propio, página importada,
        publicación de terceros, etc.) con métricas de citas e impresiones del
        intervalo de fechas solicitado.
      required:
        - content_id
        - title
        - url
        - normalized_url
        - type
        - topic_name
        - sheet_id
        - sheet_name
        - citations
        - citation_percent
        - estimated_impressions
        - total_responses
        - mark_as_done_time
        - created_at
      properties:
        content_id:
          type: string
          format: uuid
          description: >-
            Identificador único del elemento de contenido. Pásalo como
            `content_id` a `POST /api/v1/content/prompts` para consultar en
            detalle las citas por consulta.
          example: 11111111-2222-3333-4444-555555555555
        title:
          type: string
          nullable: true
          description: >-
            Título de la página o publicación (puede ser nulo en las URL sin
            extraer).
          example: Best CRMs for Startups, Reviewed
        url:
          type: string
          nullable: true
          description: URL canónica (formato de visualización, puede incluir `www.`).
          example: example.com/blog/crm-roundup
        normalized_url:
          type: string
          nullable: true
          description: >-
            URL tras normalizar el protocolo y la barra final. Se utiliza para
            cruzar datos con las citas.
          example: example.com/blog/crm-roundup
        type:
          type: string
          nullable: true
          description: >-
            Tipo de contenido: uno de `external`, `imported`, `draft`, `snipe`,
            `optimize`, `slice` (o null para filas antiguas).
          example: external
        topic_name:
          type: string
          nullable: true
          description: >-
            Tema vinculado al contenido (si lo hay). El contenido de terceros
            suele no tener tema.
          example: CRM Software
        sheet_id:
          type: string
          format: uuid
          nullable: true
          description: >-
            Pestaña del centro de contenidos en la que está fijado el elemento.
            `null` si no está fijado en ninguna.
        sheet_name:
          type: string
          nullable: true
          description: Nombre legible de la pestaña. Es `null` cuando `sheet_id` es null.
          example: 3rd-Party Placements
        citations:
          type: number
          description: >-
            Número de respuestas de IA del intervalo de fechas que citan esta
            URL.
          example: 42
        citation_percent:
          type: number
          description: >-
            Porcentaje de todas las respuestas (del intervalo de fechas y que
            coinciden con los filtros) que citan esta URL.
          example: 12.5
        estimated_impressions:
          type: number
          nullable: true
          description: >-
            Impresiones estimadas atribuibles a la URL en el intervalo de
            fechas. Puede ser null si la modelización de impresiones no está
            disponible para las consultas coincidentes.
          example: 18400
        total_responses:
          type: number
          description: >-
            Total de respuestas consideradas para calcular las citas (el
            denominador de `citation_percent`).
          example: 336
        mark_as_done_time:
          type: string
          format: date-time
          description: >-
            Momento en que el contenido se ha marcado como publicado o terminado
            en el centro de contenidos. Si nunca se ha marcado la fila, se
            utiliza `created_at`.
          example: '2024-01-15T00:00:00.000Z'
        created_at:
          type: string
          format: date-time
          description: Cuándo se creó la fila de contenido (UTC).
          example: '2024-01-10T00:00:00.000Z'
    Pagination:
      type: object
      description: >-
        Metadatos de paginación. Usa una consulta anticipada de `page_size + 1`:
        `has_more=true` indica que la siguiente página no está vacía. No incluye
        total por diseño, para evitar otra consulta `COUNT(*)`.
      required:
        - page_num
        - page_size
        - has_more
      properties:
        page_num:
          type: integer
          description: Número de página devuelto, empezando en cero.
          example: 0
        page_size:
          type: integer
          description: Número máximo de elementos por página.
          example: 50
        has_more:
          type: boolean
          description: '`true` si hay otra página disponible.'
          example: true
    PromptScheduleSelection:
      description: >-
        Selecciona una programación de recopilación. Usa la selección devuelta
        por GET /api/v1/prompt-schedules. La predeterminada incluye el historial
        anterior al cambio y ejecuciones puntuales; las archivadas conservan
        resultados. El antiguo token manual se admite como alias de default.
        Solo acepta una programación; una lista devuelve 400.
      default: default
      oneOf:
        - type: string
          enum:
            - default
            - manual
        - type: string
          format: uuid
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Clave de API para autenticarse. Puedes crear una
        [aquí](https://app.athenahq.ai/organization?tab=api).

````

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