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

# Añadir datos de marca

> Añade datos de marca en lote a la base de conocimientos de un sitio (1-50 por llamada). Cada dato pasa por deduplicación, controles de aprobación y asignación a pilares; no se puede forzar la aprobación. Las entradas son declarativas (texto, URL opcional y pilar fijado opcional) y la respuesta indica un resultado por dato. Sin pillar_id se asignan automáticamente y pueden quedar sin pilar. Si ya hay datos similares, no se añade: devuelve `duplicate`, los lista en `matches` y aporta `match_token`. Resuelve con una segunda llamada con los mismos datos, el `match_token`, una decisión por coincidencia y `save_submitted`. Requiere una clave de administrador del sitio. También disponible como herramienta MCP `add_brand_facts`.



## OpenAPI

````yaml es/api-reference/openapi.json post /api/v1/knowledge-base/facts
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/knowledge-base/facts:
    post:
      tags:
        - Knowledge Base
      summary: Añadir datos de marca
      description: >-
        Añade datos de marca en lote a la base de conocimientos de un sitio
        (1-50 por llamada). Cada dato pasa por deduplicación, controles de
        aprobación y asignación a pilares; no se puede forzar la aprobación. Las
        entradas son declarativas (texto, URL opcional y pilar fijado opcional)
        y la respuesta indica un resultado por dato. Sin pillar_id se asignan
        automáticamente y pueden quedar sin pilar. Si ya hay datos similares, no
        se añade: devuelve `duplicate`, los lista en `matches` y aporta
        `match_token`. Resuelve con una segunda llamada con los mismos datos, el
        `match_token`, una decisión por coincidencia y `save_submitted`.
        Requiere una clave de administrador del sitio. También disponible como
        herramienta MCP `add_brand_facts`.
      operationId: addBrandFacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                website_id:
                  type: string
                  format: uuid
                  description: >-
                    Sitio web a cuya base de conocimientos se añadirán los
                    datos.
                facts:
                  type: array
                  minItems: 1
                  maxItems: 50
                  description: >-
                    Datos que se ingerirán. No existe ningún campo de estado o
                    aprobación: lo decide el proceso.
                  items:
                    type: object
                    properties:
                      text:
                        type: string
                        minLength: 1
                        maxLength: 2000
                        description: Enunciado del dato.
                      source_url:
                        type: string
                        description: >-
                          URL que respalda el dato. Solo puede aprobarse
                          automáticamente si pertenece a los dominios del sitio
                          web: sus patrones de URL y las páginas y dominios
                          marcados como propios en Fuentes. Cualquier otra URL
                          requiere revisión humana. Los datos sin URL pueden
                          aprobarse automáticamente.
                      pillar_id:
                        type: string
                        format: uuid
                        description: >-
                          Fija el dato a este pilar (debe pertenecer al sitio
                          web). Omítelo para que lo asigne el proceso.
                    required:
                      - text
                match_token:
                  type: string
                  description: >-
                    Solo en la segunda llamada: el `match_token` de una
                    respuesta que incluía `matches`. Envíalo con los mismos
                    datos no añadidos, una decisión por cada coincidencia y
                    `save_submitted`.
                decisions:
                  type: array
                  maxItems: 500
                  description: >-
                    Solo en la segunda llamada: una decisión por cada dato de
                    `matches`, y solo esos. `approve` conserva el dato: si ya
                    está aprobado, sigue así y se asigna al pilar de los datos
                    si no tiene; uno pendiente solo se aprueba si las reglas
                    habituales admiten texto y fuente (una fuente de terceros o
                    afirmación competitiva lo mantiene pendiente). Con `text`,
                    se sustituye por esa redacción y las mismas reglas deciden
                    su estado. `delete` rechaza uno pendiente o archiva uno
                    aprobado.
                  items:
                    type: object
                    properties:
                      claim_id:
                        type: string
                        description: El `id` de una coincidencia de la lista.
                      action:
                        type: string
                        enum:
                          - approve
                          - delete
                      text:
                        type: string
                        minLength: 1
                        maxLength: 2000
                        description: 'Con `approve`: sustituye el dato por esta redacción.'
                    required:
                      - claim_id
                      - action
                save_submitted:
                  type: boolean
                  description: >-
                    Solo en la segunda llamada: true añade los datos tal como
                    están escritos, sin otra comprobación de similitud y con los
                    controles habituales de aprobación; false solo aplica las
                    decisiones. Decisiones y datos se escriben conjuntamente o
                    no se escribe nada.
              required:
                - website_id
                - facts
      responses:
        '201':
          description: >-
            Datos ingeridos; un resultado por dato, en el mismo orden que la
            solicitud
          content:
            application/json:
              schema:
                type: object
                properties:
                  outcomes:
                    type: array
                    items:
                      $ref: '#/components/schemas/BrandFactIngestOutcome'
                  match_token:
                    type: string
                    description: >-
                      Aparece cuando algún resultado incluye `matches`.
                      Devuélvelo en la segunda llamada.
                  resolved:
                    type: object
                    description: >-
                      Presente en la segunda llamada: datos listados que las
                      decisiones han aprobado, los aprobados que las reglas
                      mantienen pendientes (un dato con nueva redacción tiene un
                      ID nuevo) y los rechazados o archivados.
                    properties:
                      approved_fact_ids:
                        type: array
                        items:
                          type: string
                      pending_fact_ids:
                        type: array
                        items:
                          type: string
                      removed_fact_ids:
                        type: array
                        items:
                          type: string
                    required:
                      - approved_fact_ids
                      - pending_fact_ids
                      - removed_fact_ids
                required:
                  - outcomes
        '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
                empty_facts:
                  value:
                    error: facts must contain at least one fact
                foreign_pillar:
                  value:
                    error: facts[1].pillar_id does not exist on this website
                unsafe_source_url:
                  value:
                    error: facts[0].source_url is not a valid URL
        '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 de administrador a este sitio web
            o la base de conocimientos no está habilitada para la organización
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                unauthorized_website:
                  value:
                    error: Unauthorized access to this website
                kb_not_enabled:
                  value:
                    error: Knowledge Base is not enabled for this organization
      security:
        - apiKey: []
components:
  schemas:
    BrandFactIngestOutcome:
      type: object
      properties:
        index:
          type: integer
          description: Posición del dato en el array facts de la solicitud.
        outcome:
          type: string
          enum:
            - approved
            - pending
            - duplicate
          description: >-
            Decisión del proceso de ingesta. Es ampliable: pueden añadirse
            resultados nuevos a medida que evolucione el proceso; trata los
            valores desconocidos como no definitivos.
        fact_id:
          type:
            - string
            - 'null'
          description: >-
            ID del dato creado; null en caso de duplicados (no se ha insertado
            nada).
        pillar_id:
          type:
            - string
            - 'null'
          description: >-
            Pilar al que se ha asignado el dato (fijado o automáticamente); null
            si no está asignado.
        matches:
          type: array
          description: >-
            Aparece cuando el dato no se ha añadido porque otros de la base de
            conocimientos dicen algo similar (el resultado es `duplicate`).
            Revísalos y resuelve con una segunda llamada.
          items:
            type: object
            properties:
              id:
                type: string
              text:
                type: string
              status:
                type: string
                enum:
                  - pending
                  - approved
              source_type:
                type: string
                enum:
                  - research
                  - upload
                  - content_hub
                description: >-
                  Cómo ha llegado el dato a la base de conocimientos: hallado
                  mediante investigación, subido o extraído de tu contenido.
              source_url:
                type:
                  - string
                  - 'null'
              first_party:
                type:
                  - boolean
                  - 'null'
                description: >-
                  La fuente está en tus propios dominios; null si el dato no
                  tiene fuente.
              pillar_id:
                type:
                  - string
                  - 'null'
              pillar_name:
                type:
                  - string
                  - 'null'
              created_at:
                type: string
                format: date-time
            required:
              - id
              - text
              - status
              - source_type
              - source_url
              - first_party
              - pillar_id
              - pillar_name
              - created_at
      required:
        - index
        - outcome
        - fact_id
        - pillar_id
    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
  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.