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

# Lister l’activité

> Renvoie les changements des prompts, sujets et étiquettes dans l’organisation, du plus récent au plus ancien par défaut. Chaque entrée indique site, type d’entité, changement (`created`, `updated`, `deleted`, `restored`, `paused`, `unpaused`), ID concernés et auteur. Permet de comprendre les changements sans relister tous les sites.

`entity_ids` vaut `null` si l’ensemble est inconnu (import groupé, par exemple) ; relistez les prompts du site avec `GET /api/v1/prompts`. Une entrée `topic` ou `prompt_tag` peut modifier `topic_name` ou `tags` des prompts : relistez aussi le site. Les changements par clé portent son ID et nom dans `actor` pour ignorer vos propres écritures. Ceux de l’application portent ID et e-mail dans `actor.user`. Une clé limitée aux sites ne voit que l’identité de leurs membres ; les autres sont `user: null`. Les sites provisionnés par `POST /api/v1/websites/provision` n’apparaissent pas ici ; listez-les une fois après création.

Pour répliquer les données, fixez une fenêtre par synchronisation : `since` = `until` précédent, `until` = maintenant moins une minute, `order=asc`, puis parcourez `page_num` jusqu’à `pagination.has_more` égal à `false`. Conservez ce `until` pour la suite. `since` exclusif et `until` inclusif évitent chevauchement et omission. Sans `since`, tout l’historique est parcouru ; `order=asc` sans bornes donne un export complet. La pagination anticipe `page_size + 1`, sans total.

Clé API partenaire requise. Les clés limitées ne voient que leurs sites.



## OpenAPI

````yaml fr/api-reference/openapi.json get /api/v1/activity
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/activity:
    get:
      tags:
        - Basics
      summary: Lister l’activité
      description: >-
        Renvoie les changements des prompts, sujets et étiquettes dans
        l’organisation, du plus récent au plus ancien par défaut. Chaque entrée
        indique site, type d’entité, changement (`created`, `updated`,
        `deleted`, `restored`, `paused`, `unpaused`), ID concernés et auteur.
        Permet de comprendre les changements sans relister tous les sites.


        `entity_ids` vaut `null` si l’ensemble est inconnu (import groupé, par
        exemple) ; relistez les prompts du site avec `GET /api/v1/prompts`. Une
        entrée `topic` ou `prompt_tag` peut modifier `topic_name` ou `tags` des
        prompts : relistez aussi le site. Les changements par clé portent son ID
        et nom dans `actor` pour ignorer vos propres écritures. Ceux de
        l’application portent ID et e-mail dans `actor.user`. Une clé limitée
        aux sites ne voit que l’identité de leurs membres ; les autres sont
        `user: null`. Les sites provisionnés par `POST
        /api/v1/websites/provision` n’apparaissent pas ici ; listez-les une fois
        après création.


        Pour répliquer les données, fixez une fenêtre par synchronisation :
        `since` = `until` précédent, `until` = maintenant moins une minute,
        `order=asc`, puis parcourez `page_num` jusqu’à `pagination.has_more`
        égal à `false`. Conservez ce `until` pour la suite. `since` exclusif et
        `until` inclusif évitent chevauchement et omission. Sans `since`, tout
        l’historique est parcouru ; `order=asc` sans bornes donne un export
        complet. La pagination anticipe `page_size + 1`, sans total.


        Clé API partenaire requise. Les clés limitées ne voient que leurs sites.
      operationId: listActivity
      parameters:
        - name: since
          in: query
          description: >-
            Horodatage ISO 8601. Uniquement les modifications strictement
            postérieures à cet instant. Omettez pour commencer au début de
            l’historique de l’organisation.
          required: false
          schema:
            type: string
            format: date-time
        - name: until
          in: query
          description: >-
            Horodatage ISO 8601 : changements jusqu’à cet instant inclus.
            Fixez-le par synchronisation pour stabiliser les pages pendant la
            pagination.
          required: false
          schema:
            type: string
            format: date-time
        - name: order
          in: query
          description: >-
            `desc`, par défaut, liste les changements récents d’abord. `asc`
            exporte/synchronise dans l’ordre chronologique.
          required: false
          schema:
            type: string
            enum:
              - desc
              - asc
            default: desc
        - name: website_id
          in: query
          description: >-
            Limite à un site. Omettez pour toute l’organisation. Un site hors
            périmètre de la clé ou hors organisation renvoie 403.
          required: false
          schema:
            type: string
            format: uuid
        - name: entity_type
          in: query
          description: >-
            Liste des types d’entités à inclure, séparés par des virgules.
            Omettez pour tous les inclure.
          required: false
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
              enum:
                - prompt
                - topic
                - prompt_tag
        - name: change_type
          in: query
          description: >-
            Types de changement à inclure, séparés par virgules. Omettez pour
            tous.
          required: false
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
              enum:
                - created
                - updated
                - deleted
                - restored
                - paused
                - unpaused
        - name: page_num
          in: query
          description: Numéro de page commençant à zéro.
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: page_size
          in: query
          description: Nombre d’entrées par page (1–100).
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
      responses:
        '200':
          description: Réponse réussie avec la page de changements.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityListResponse'
              example:
                activity:
                  - id: 6f1c2a3e-5b7d-4e8f-9a0b-1c2d3e4f5a6b
                    occurred_at: '2026-09-20T08:14:03.512Z'
                    website_id: 3b9d1e2f-4a5b-4c6d-8e7f-9a0b1c2d3e4f
                    entity_type: prompt
                    change_type: created
                    entity_ids:
                      - a1f0b2c3-d4e5-4f60-8172-839405a6b7c8
                    actor:
                      type: user
                      api_key_id: null
                      api_key_name: null
                      user:
                        id: 5e7a0000-0000-4000-8000-000000000001
                        email: ada@example.com
                  - id: 7a44b5c6-d7e8-4f90-a1b2-c3d4e5f6a7b8
                    occurred_at: '2026-09-20T08:15:41.007Z'
                    website_id: 3b9d1e2f-4a5b-4c6d-8e7f-9a0b1c2d3e4f
                    entity_type: prompt
                    change_type: deleted
                    entity_ids:
                      - c2d1e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f
                      - c2d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f
                    actor:
                      type: user
                      api_key_id: null
                      api_key_name: null
                      user:
                        id: 5e7a0000-0000-4000-8000-000000000001
                        email: ada@example.com
                  - id: 8b90c1d2-e3f4-4a5b-9c6d-7e8f9a0b1c2d
                    occurred_at: '2026-09-20T09:02:10.220Z'
                    website_id: 9e07f1a2-b3c4-4d5e-8f60-718293a4b5c6
                    entity_type: topic
                    change_type: updated
                    entity_ids:
                      - d5510000-0000-4000-8000-000000000001
                    actor:
                      type: user
                      api_key_id: null
                      api_key_name: null
                      user:
                        id: 5e7a0000-0000-4000-8000-000000000001
                        email: ada@example.com
                  - id: 9c12d3e4-f5a6-4b7c-8d9e-0f1a2b3c4d5e
                    occurred_at: '2026-09-20T11:30:00.918Z'
                    website_id: 9e07f1a2-b3c4-4d5e-8f60-718293a4b5c6
                    entity_type: prompt
                    change_type: updated
                    entity_ids: null
                    actor:
                      type: api_key
                      api_key_id: a8f20000-0000-4000-8000-000000000002
                      api_key_name: Production integration
                      user: null
                pagination:
                  page_num: 0
                  page_size: 100
                  has_more: true
        '400':
          description: Requête incorrecte, paramètres invalides.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                page_size_out_of_range:
                  value:
                    error: page_size must be between 1 and 100
                unknown_entity_type:
                  value:
                    error: entity_type must be one of prompt, topic, prompt_tag
        '401':
          description: Non autorisé, clé API invalide ou manquante.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Interdit. L’organisation de la clé n’est pas partenaire ou le site
            demandé est hors du périmètre ou de l’organisation de la clé.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                not_a_partner:
                  value:
                    error: 'Forbidden: partner API key required'
                website_out_of_scope:
                  value:
                    error: Unauthorized access to this website
        '429':
          description: Limite de débit dépassée.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Erreur interne du serveur.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
components:
  schemas:
    ActivityListResponse:
      type: object
      required:
        - activity
        - pagination
      properties:
        activity:
          type: array
          items:
            $ref: '#/components/schemas/ActivityEntry'
        pagination:
          $ref: '#/components/schemas/Pagination'
    Error:
      type: object
      description: Objet de réponse d’erreur
      required:
        - error
      properties:
        error:
          type: string
          description: Message expliquant l’erreur
          example: Unauthorized
    ActivityEntry:
      type: object
      required:
        - id
        - occurred_at
        - website_id
        - entity_type
        - change_type
        - entity_ids
        - actor
      properties:
        id:
          type: string
          format: uuid
          description: ID stable et unique du changement.
        occurred_at:
          type: string
          format: date-time
          description: Date du changement.
        website_id:
          type: string
          format: uuid
          description: Site concerné par le changement.
        entity_type:
          type: string
          enum:
            - prompt
            - topic
            - prompt_tag
        change_type:
          type: string
          enum:
            - created
            - updated
            - deleted
            - restored
            - paused
            - unpaused
        entity_ids:
          type: array
          nullable: true
          items:
            type: string
            format: uuid
          description: >-
            ID des entités concernées. `null` signifie que l’ensemble concerné
            est inconnu : répertoriez à nouveau les éléments du site web.
        actor:
          $ref: '#/components/schemas/ActivityActor'
    Pagination:
      type: object
      description: >-
        Métadonnées de pagination. Anticipation sur `page_size + 1` :
        `has_more=true` signifie que la page suivante n’est pas vide. Aucun
        total, volontairement, pour éviter un appel `COUNT(*)` supplémentaire.
      required:
        - page_num
        - page_size
        - has_more
      properties:
        page_num:
          type: integer
          description: Numéro de page renvoyé, à partir de zéro.
          example: 0
        page_size:
          type: integer
          description: Maximum d’éléments par page.
          example: 50
        has_more:
          type: boolean
          description: '`true` si une autre page est disponible.'
          example: true
    ActivityActor:
      type: object
      description: >-
        Auteur du changement. Une personne est identifiée par ID/e-mail dans
        `user` ; une clé par ID/nom pour ignorer les propres écritures de
        l’intégration.
      required:
        - type
        - api_key_id
        - api_key_name
        - user
      properties:
        type:
          type: string
          enum:
            - user
            - api_key
            - system
          description: >-
            `user` pour un changement dans l’application, `api_key` via l’API,
            `system` pour une automatisation ou une clé supprimée depuis.
        api_key_id:
          type: string
          format: uuid
          nullable: true
          description: ID de la clé API à l’origine du changement si `type` vaut `api_key`.
        api_key_name:
          type: string
          nullable: true
          description: Nom de cette clé API.
        user:
          type: object
          nullable: true
          description: >-
            Auteur si `type` vaut `user`. `null` pour les changements
            API/système ou une personne hors des sites accessibles à la clé
            limitée.
          required:
            - id
            - email
          properties:
            id:
              type: string
              format: uuid
              description: ID de l’utilisateur.
            email:
              type: string
              format: email
              description: E-mail de l’utilisateur.
  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.