> ## 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 elementos de contenido

> Devuelve todos los elementos del centro de contenidos de un sitio, publicados o no: borradores en curso, planes, ejecuciones de snipe, optimize y slice, elementos programados y fallidos y páginas monitorizadas. Permite pasar de `sheet_id` a sus filas sin publicar. `POST /api/v1/content` solo lista filas terminadas con métricas; una hoja de borradores generados parece vacía allí: usa este endpoint para verlos.

Solo devuelve identidad (id, título, tipo, fase, hoja, URL, fechas e ID de consultas objetivo), sin métricas. Lee el almacén principal sin caché, por lo que el elemento aparece cuando `POST /api/v1/content/generate` devuelve `content_id`. Lee el texto con `GET /api/v1/content/{content_id}`.

`stage` es estado interno del proceso, no indicador de publicación: `null` significa sin registro (la mayoría de externos e importados) y los elementos manuales tienen `generated`. Solo considera publicado uno con fase `done` (o externo o importado) y `url`; `done` sin `url` es un huérfano sin publicar.

El `sheet_id` de una pestaña de tipo vista (consulta `sheet_type` en `GET /api/v1/content/sheets`) lista el repositorio principal compartido sin sus filtros guardados. Excluye ocultos (`is_hidden = true`). Usa consulta anticipada de `page_size + 1`: `pagination.has_more === true` indica otra página, sin total. Un `sheet_id` o `prompt_id` desconocido o ajeno devuelve 403.

También disponible como herramienta MCP `list_content`.



## OpenAPI

````yaml es/api-reference/openapi.json get /api/v1/content/items
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/items:
    get:
      tags:
        - Content
      summary: Listar elementos de contenido
      description: >-
        Devuelve todos los elementos del centro de contenidos de un sitio,
        publicados o no: borradores en curso, planes, ejecuciones de snipe,
        optimize y slice, elementos programados y fallidos y páginas
        monitorizadas. Permite pasar de `sheet_id` a sus filas sin publicar.
        `POST /api/v1/content` solo lista filas terminadas con métricas; una
        hoja de borradores generados parece vacía allí: usa este endpoint para
        verlos.


        Solo devuelve identidad (id, título, tipo, fase, hoja, URL, fechas e ID
        de consultas objetivo), sin métricas. Lee el almacén principal sin
        caché, por lo que el elemento aparece cuando `POST
        /api/v1/content/generate` devuelve `content_id`. Lee el texto con `GET
        /api/v1/content/{content_id}`.


        `stage` es estado interno del proceso, no indicador de publicación:
        `null` significa sin registro (la mayoría de externos e importados) y
        los elementos manuales tienen `generated`. Solo considera publicado uno
        con fase `done` (o externo o importado) y `url`; `done` sin `url` es un
        huérfano sin publicar.


        El `sheet_id` de una pestaña de tipo vista (consulta `sheet_type` en
        `GET /api/v1/content/sheets`) lista el repositorio principal compartido
        sin sus filtros guardados. Excluye ocultos (`is_hidden = true`). Usa
        consulta anticipada de `page_size + 1`: `pagination.has_more === true`
        indica otra página, sin total. Un `sheet_id` o `prompt_id` desconocido o
        ajeno devuelve 403.


        También disponible como herramienta MCP `list_content`.
      operationId: listContentItems
      parameters:
        - name: website_id
          in: query
          description: Sitio web cuyo centro de contenido se enumerará.
          required: true
          schema:
            type: string
            format: uuid
        - name: sheet_id
          in: query
          description: >-
            Limita los resultados a una pestaña del centro de contenidos. Obtén
            los ID con `GET /api/v1/content/sheets`. Una pestaña de tipo vista
            se resuelve al repositorio principal compartido. Omítelo para
            incluir todas.
          required: false
          schema:
            type: string
            format: uuid
        - name: content_type
          in: query
          description: >-
            Limita los resultados a un tipo de contenido. `athena_created` es un
            atajo para los cuatro subtipos generados por Athena (draft, snipe,
            optimize, slice). Omítelo para incluir todos los tipos.
          required: false
          schema:
            type: string
            enum:
              - external
              - imported
              - athena_created
              - draft
              - snipe
              - optimize
              - slice
              - manual
        - name: stage
          in: query
          description: >-
            Limita los resultados a una fase del proceso. Solo coincide con el
            registro del proceso, así que nunca selecciona filas sin él (la
            mayoría de páginas externas e importadas). Omítelo para incluir
            todas las fases.
          required: false
          schema:
            type: string
            enum:
              - scheduled
              - pending
              - pending_brief
              - generated_brief
              - pending_article
              - generated
              - done
              - failed
        - name: prompt_id
          in: query
          description: >-
            Limita los resultados a elementos escritos para esta consulta (sus
            consultas objetivo, los mismos ID que admite `POST
            /api/v1/content/generate`). Las consultas eliminadas de forma lógica
            siguen coincidiendo.
          required: false
          schema:
            type: string
            format: uuid
        - name: page_num
          in: query
          required: false
          description: Número de página, empezando en cero.
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: page_size
          in: query
          description: Número de elementos por página (1-100).
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
      responses:
        '200':
          description: Respuesta correcta con la página de elementos de contenido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItemsListResponse'
              example:
                content:
                  - content_id: 11111111-2222-3333-4444-555555555555
                    title: How to Apply Foundation on Mature Skin
                    type: draft
                    stage: generated
                    url: null
                    normalized_url: null
                    sheet_id: 00000000-0000-4000-8000-000000000001
                    sheet_name: Drafts - sprint 1
                    topic_name: Makeup for Mature Skin
                    prompt_ids:
                      - aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee
                    prompt_count: 1
                    mark_as_done_time: null
                    created_at: '2026-09-01T20:59:53.000Z'
                    updated_at: '2026-09-01T21:09:04.000Z'
                pagination:
                  page_num: 0
                  page_size: 50
                  has_more: false
        '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_stage:
                  value:
                    error: >-
                      stage: Invalid option: expected one of
                      "scheduled"|"pending"|"pending_brief"|"generated_brief"|"pending_article"|"generated"|"done"|"failed"
        '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 `sheet_id` /
            `prompt_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
                prompt:
                  value:
                    error: Unauthorized access to this prompt
        '500':
          description: Error interno del servidor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
components:
  schemas:
    ContentItemsListResponse:
      type: object
      required:
        - content
        - pagination
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/ContentInventoryItem'
        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
    ContentInventoryItem:
      type: object
      description: >-
        Elemento del centro de contenidos tal como lo lista `GET
        /api/v1/content/items`: solo identidad y campos del flujo de trabajo,
        sin métricas. Filas publicadas, borradores sin publicar y páginas
        monitorizadas comparten esta estructura.
      required:
        - content_id
        - title
        - type
        - stage
        - url
        - normalized_url
        - sheet_id
        - sheet_name
        - topic_name
        - prompt_ids
        - prompt_count
        - mark_as_done_time
        - created_at
        - updated_at
      properties:
        content_id:
          type: string
          format: uuid
          description: >-
            Identificador único del elemento de contenido. Pásalo a `GET
            /api/v1/content/{content_id}` para leer el plan de contenido y el
            cuerpo.
          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: How to Apply Foundation on Mature Skin
        type:
          type: string
          nullable: true
          description: >-
            Cómo ha llegado el contenido al centro: `draft` (artículo de
            Athena), `optimize` (reescritura de una página), `snipe`, `slice`,
            `manual` (redactado en el editor), `external` (añadido manualmente),
            `imported` (mediante GA4). `null` para filas antiguas.
          example: draft
        stage:
          type: string
          nullable: true
          enum:
            - scheduled
            - pending
            - pending_brief
            - generated_brief
            - pending_article
            - generated
            - done
            - failed
          description: >-
            Estado interno del flujo de procesamiento, no indicador de
            publicación. `null` si no hay registro (la mayoría de páginas
            externas e importadas). `generated`: texto listo sin publicar
            (también en contenido manual); `done`: publicado o marcado como
            terminado; `scheduled`: publicación programada. Solo cuenta como
            publicado si la fase es `done` (o es una página externa o importada)
            y tiene `url`.
          example: generated
        url:
          type: string
          nullable: true
          description: >-
            URL canónica (formato de visualización, puede incluir `www.`).
            `null` hasta que el elemento se publique en algún sitio.
          example: null
        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: null
        sheet_id:
          type: string
          format: uuid
          nullable: true
          description: >-
            Pestaña del centro de contenidos en la que está fijado el elemento.
            `null` para el contenido del repositorio principal compartido.
        sheet_name:
          type: string
          nullable: true
          description: Nombre legible de la pestaña. Es `null` cuando `sheet_id` es null.
          example: Drafts - sprint 1
        topic_name:
          type: string
          nullable: true
          description: Tema vinculado al contenido, si lo hay.
          example: Makeup for Mature Skin
        prompt_ids:
          type: array
          items:
            type: string
            format: uuid
          description: >-
            Consultas para las que se ha escrito este elemento, limitadas a 25
            por fila; `prompt_count` es el total sin recortar. Incluye consultas
            eliminadas de forma lógica que `GET /api/v1/prompts` no lista. Vacío
            si no hay consultas objetivo, algo normal en páginas importadas o
            externas. No son las consultas cuyas respuestas citan la página;
            consulta `POST /api/v1/content/prompts` para ellas.
        prompt_count:
          type: integer
          description: >-
            Número total de consultas a las que se dirige este elemento,
            incluidas las que superan las 25 de `prompt_ids`. Lee el resto
            mediante `GET /api/v1/content/{content_id}`.
          example: 1
        mark_as_done_time:
          type: string
          format: date-time
          nullable: true
          description: >-
            Momento en que el contenido se ha marcado como publicado o terminado
            en el centro de contenidos. `null` mientras no esté publicado.
          example: null
        created_at:
          type: string
          format: date-time
          description: Cuándo se creó la fila de contenido (UTC).
          example: '2026-09-01T20:59:53.000Z'
        updated_at:
          type: string
          format: date-time
          description: >-
            La más reciente de las fechas de actualización de la fila del
            contenido y de su registro de procesamiento (UTC); el avance de
            generación la actualiza.
          example: '2026-09-01T21:09:04.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
  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.