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

# Ajouter des faits de marque

> Ajoute 1 à 50 faits à la base du site. Chaque fait suit le pipeline complet : déduplication, approbation et attribution de pilier. Aucune approbation forcée ; entrées déclaratives (texte, source et pilier facultatifs), un résultat par fait. Sans pillar_id, orientation automatique pouvant rester non classée. Un fait similaire à un existant n’est pas ajouté : `duplicate` liste les correspondances dans `matches` et renvoie `match_token`. Résolvez par un deuxième appel avec mêmes faits, `match_token`, décision par correspondance et `save_submitted`. Clé administrateur du site requise. Disponible aussi comme MCP `add_brand_facts`.



## OpenAPI

````yaml fr/api-reference/openapi.json post /api/v1/knowledge-base/facts
openapi: 3.1.0
info:
  title: API AthenaHQ
  description: >-
    L’API AthenaHQ permet de gérer vos sites et prompts par programme pour
    l’optimisation de contenu par IA.
  version: 1.0.0
  contact:
    email: support@athenahq.ai
servers:
  - url: https://api.athenahq.ai
    description: Serveur de production
security:
  - apiKey: []
tags:
  - name: Basics
    description: Opérations API principales pour gérer sites et prompts
  - name: Metrics
    description: Points de terminaison de métriques et analyses de visibilité IA
  - name: Billing
    description: Points de facturation et crédits pour gérer la consommation
  - name: Team Management
    description: Points de terminaison de gestion des membres et invitations
  - name: Groups
    description: Points de terminaison de gestion des groupes de sites
  - name: Content
    description: >-
      Points de terminaison Content Hub : onglets, URL suivies et détail des
      prompts par URL.
  - name: Pitch Workspace
    description: >-
      Points de terminaison des rapports Pitch Workspace : exécutions à
      l’échelle de l’organisation avec concurrents, prompts, attributs et
      métriques agrégées.
  - name: Knowledge Base
    description: >-
      Endpoints de lecture de la base de connaissances de la marque — faits
      approuvés et piliers qui les organisent.
paths:
  /api/v1/knowledge-base/facts:
    post:
      tags:
        - Knowledge Base
      summary: Ajouter des faits de marque
      description: >-
        Ajoute 1 à 50 faits à la base du site. Chaque fait suit le pipeline
        complet : déduplication, approbation et attribution de pilier. Aucune
        approbation forcée ; entrées déclaratives (texte, source et pilier
        facultatifs), un résultat par fait. Sans pillar_id, orientation
        automatique pouvant rester non classée. Un fait similaire à un existant
        n’est pas ajouté : `duplicate` liste les correspondances dans `matches`
        et renvoie `match_token`. Résolvez par un deuxième appel avec mêmes
        faits, `match_token`, décision par correspondance et `save_submitted`.
        Clé administrateur du site requise. Disponible aussi comme MCP
        `add_brand_facts`.
      operationId: addBrandFacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                website_id:
                  type: string
                  format: uuid
                  description: Site dont alimenter la base de connaissances.
                facts:
                  type: array
                  minItems: 1
                  maxItems: 50
                  description: >-
                    Faits à ingérer. Aucun champ de statut ou d’approbation : le
                    pipeline décide.
                  items:
                    type: object
                    properties:
                      text:
                        type: string
                        minLength: 1
                        maxLength: 2000
                        description: Énoncé du fait.
                      source_url:
                        type: string
                        description: >-
                          URL justifiant le fait. Approbation automatique
                          uniquement si elle correspond aux domaines du site :
                          motifs d’URL et pages/domaines marqués Propriétaire
                          dans Sources. Toute autre URL laisse le fait en
                          attente d’examen humain. Sans URL, l’approbation
                          automatique est possible.
                      pillar_id:
                        type: string
                        format: uuid
                        description: >-
                          Rattachez le fait à ce pilier, qui doit appartenir au
                          site. Omettez-le pour laisser le pipeline l’orienter.
                    required:
                      - text
                match_token:
                  type: string
                  description: >-
                    Deuxième appel uniquement : le `match_token` d’une réponse
                    ayant répertorié des `matches`. Envoyez-le avec les mêmes
                    faits non ajoutés, une décision par correspondance
                    répertoriée et `save_submitted`.
                decisions:
                  type: array
                  maxItems: 500
                  description: >-
                    Deuxième appel uniquement : une décision pour chaque fait de
                    `matches`, et aucun autre. `approve` conserve : un fait
                    approuvé le reste et rejoint le pilier des faits s’il n’en a
                    pas ; un fait en attente n’est approuvé que selon les règles
                    d’un nouveau fait (source tierce ou affirmation
                    concurrentielle le garde en attente). Avec `text`, remplace
                    la formulation, dont le statut suit les mêmes règles.
                    `delete` rejette un fait en attente ou archive un fait
                    approuvé.
                  items:
                    type: object
                    properties:
                      claim_id:
                        type: string
                        description: '`id` d’une correspondance répertoriée.'
                      action:
                        type: string
                        enum:
                          - approve
                          - delete
                      text:
                        type: string
                        minLength: 1
                        maxLength: 2000
                        description: >-
                          Avec `approve` : remplace le fait par cette
                          formulation.
                    required:
                      - claim_id
                      - action
                save_submitted:
                  type: boolean
                  description: >-
                    Deuxième appel uniquement : true ajoute les faits tels
                    qu’ils sont rédigés, sans autre vérification de similarité,
                    via les étapes d’approbation habituelles ; false applique
                    uniquement les décisions. Les décisions et les faits ajoutés
                    sont enregistrés ensemble ou pas du tout.
              required:
                - website_id
                - facts
      responses:
        '201':
          description: >-
            Faits intégrés ; un résultat par fait, aligné par index avec la
            requête
          content:
            application/json:
              schema:
                type: object
                properties:
                  outcomes:
                    type: array
                    items:
                      $ref: '#/components/schemas/BrandFactIngestOutcome'
                  match_token:
                    type: string
                    description: >-
                      Présent si un résultat contient `matches`. Renvoyez-le au
                      deuxième appel.
                  resolved:
                    type: object
                    description: >-
                      Au deuxième appel : faits approuvés par les décisions,
                      faits dont les règles ont maintenu l’attente (nouvelle
                      formulation : nouvel ID), et faits rejetés/archivés.
                    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: Requête incorrecte — paramètres invalides
          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: Non autorisé — clé API invalide ou absente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Interdit — aucun accès administrateur au site ou base non activée
            pour l’organisation
          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: Position du fait dans le tableau facts de la requête.
        outcome:
          type: string
          enum:
            - approved
            - pending
            - duplicate
          description: >-
            Décision du pipeline d’ingestion. Extensible : de nouvelles valeurs
            peuvent apparaître ; traitez les valeurs inconnues comme non
            terminales.
        fact_id:
          type:
            - string
            - 'null'
          description: ID du fait créé ; null pour les doublons, sans insertion.
        pillar_id:
          type:
            - string
            - 'null'
          description: >-
            Pilier de classement du fait, imposé ou automatique ; null si non
            classé.
        matches:
          type: array
          description: >-
            Présent si le fait n’est pas ajouté car des faits existants disent
            quelque chose de similaire, résultat `duplicate`. Examinez-les puis
            résolvez par un deuxième appel.
          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: >-
                  Origine du fait dans la base : recherche, import ou votre
                  contenu.
              source_url:
                type:
                  - string
                  - 'null'
              first_party:
                type:
                  - boolean
                  - 'null'
                description: Source sur vos domaines ; null si le fait n’a pas de source.
              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: Objet de réponse d’erreur
      required:
        - error
      properties:
        error:
          type: string
          description: Message expliquant l’erreur
          example: Unauthorized
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Clé API d’authentification. Créez-en une
        [ici](https://app.athenahq.ai/organization?tab=api).

````

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