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

# Obtenir le détail du contenu

> Récupère le détail complet d’un contenu, dont le brief (`brief`) et le corps (`body`). `body` contient aussi bien brouillons générés, réécritures optimize, articles snipe, textes rédigés ou pages suivies extraites.

Après liste (`POST /api/v1/content`), lit le texte d’un `content_id` ou suit `status` pendant la génération ; `generated_brief` signifie brief prêt et article en rédaction. Disponible aussi comme MCP `get_content_detail`.

Les pages non extraites renvoient des textes `null`. `content_id` inconnu ou masqué : 404.



## OpenAPI

````yaml fr/api-reference/openapi.json get /api/v1/content/{content_id}
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/content/{content_id}:
    get:
      tags:
        - Content
      summary: Obtenir le détail du contenu
      description: >-
        Récupère le détail complet d’un contenu, dont le brief (`brief`) et le
        corps (`body`). `body` contient aussi bien brouillons générés,
        réécritures optimize, articles snipe, textes rédigés ou pages suivies
        extraites.


        Après liste (`POST /api/v1/content`), lit le texte d’un `content_id` ou
        suit `status` pendant la génération ; `generated_brief` signifie brief
        prêt et article en rédaction. Disponible aussi comme MCP
        `get_content_detail`.


        Les pages non extraites renvoient des textes `null`. `content_id`
        inconnu ou masqué : 404.
      operationId: getContentDetail
      parameters:
        - name: content_id
          in: path
          description: UUID du contenu à récupérer.
          required: true
          schema:
            type: string
            format: uuid
        - name: website_id
          in: query
          description: Site web auquel appartient le contenu.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Réponse réussie avec le détail complet du contenu.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentDetailResponse'
              example:
                content_id: 11111111-2222-3333-4444-555555555555
                title: Best CRMs for early-stage startups
                url: https://example.com/blog/best-crms
                normalized_url: example.com/blog/best-crms
                type: draft
                sheet_id: 22222222-3333-4444-5555-666666666666
                status: generated
                brief: |-
                  ## Brief

                  Target the comparison angle for early-stage buyers…
                body: |-
                  # Best CRMs for early-stage startups

                  Choosing a CRM before product-market fit…
                meta_description: A practical comparison of CRMs for early-stage startups.
                cited_urls:
                  - https://example.org/2026-crm-report
                internal_links:
                  - https://example.com/blog/crm-migration
                brief_cited_urls:
                  - https://example.org/2026-crm-report
                brief_internal_links:
                  - https://example.com/blog/crm-migration
                optimize_summary: null
                linkedin_post: null
                x_post: null
                facebook_post: null
                instagram_post: null
                reddit_post: null
                topic_name: CRM
                prompts:
                  - id: 77777777-8888-9999-aaaa-bbbbbbbbbbbb
                    prompt: best CRM for early-stage startups
                    topic_name: CRM
                    status: active
                prompts_total: 1
                mark_as_done_time: null
                created_at: '2026-06-01T12:00:00.000Z'
                updated_at: '2026-06-02T08:30:00.000Z'
        '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
                invalid_content_id:
                  value:
                    error: content_id must be a uuid
        '401':
          description: Non autorisé — clé API invalide ou absente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Interdit — vous n’avez pas accès à ce site.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Unauthorized access to this website
        '404':
          description: Contenu introuvable pour ce site.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Content not found
        '500':
          description: Erreur interne du serveur.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
components:
  schemas:
    ContentDetailResponse:
      type: object
      required:
        - content_id
        - title
        - url
        - normalized_url
        - type
        - sheet_id
        - status
        - brief
        - body
        - meta_description
        - cited_urls
        - internal_links
        - brief_cited_urls
        - brief_internal_links
        - optimize_summary
        - linkedin_post
        - x_post
        - facebook_post
        - instagram_post
        - reddit_post
        - topic_name
        - prompts
        - prompts_total
        - mark_as_done_time
        - created_at
        - updated_at
      properties:
        content_id:
          type: string
          format: uuid
          description: ID du contenu.
        title:
          type: string
          nullable: true
          description: Titre du contenu.
        url:
          type: string
          nullable: true
          description: URL d’affichage du contenu.
        normalized_url:
          type: string
          nullable: true
          description: URL normalisée utilisée pour la jointure aux citations.
        type:
          type: string
          nullable: true
          description: >-
            Mode d’entrée du contenu dans le hub : `draft` (article rédigé par
            Athena), `optimize` (réécriture d’une page existante), `snipe`,
            `slice`, `manual` (rédigé dans l’éditeur), `external` (ajouté
            manuellement), `imported` (via GA4).
          example: draft
        sheet_id:
          type: string
          format: uuid
          nullable: true
          description: Feuille Content Hub du contenu. Voir `GET /api/v1/content/sheets`.
        status:
          type: string
          nullable: true
          enum:
            - done
            - generated
            - failed
            - pending
            - generated_brief
            - pending_brief
            - pending_article
            - scheduled
          description: >-
            Statut de génération : `pending`/`pending_brief`/`pending_article`,
            travail en cours ; `generated_brief`, brief prêt et article en
            rédaction ; `generated`, texte prêt ; `done`, publié/terminé ;
            `scheduled`, publication planifiée. `null` sans enregistrement de
            génération, par exemple page suivie non extraite.
        brief:
          type: string
          nullable: true
          description: >-
            Brief du contenu en markdown, disponible dès que `status` atteint
            `generated_brief`.
        body:
          type: string
          nullable: true
          description: >-
            Corps d’article/page en markdown : brouillon généré, réécriture
            optimize, article snipe, texte rédigé ou extraction d’une page
            suivie, selon `type`.
        meta_description:
          type: string
          nullable: true
          description: Méta-description générée.
        cited_urls:
          type: array
          items:
            type: string
          nullable: true
          description: >-
            URL externes citées dans le corps. À distinguer de `citations` dans
            `POST /api/v1/content`, qui compte les réponses IA citant cette URL.
        internal_links:
          type: array
          items:
            type: string
          nullable: true
          description: URL internes liées depuis le corps.
        brief_cited_urls:
          type: array
          items:
            type: string
          nullable: true
          description: URL externes référencées dans le brief.
        brief_internal_links:
          type: array
          items:
            type: string
          nullable: true
          description: URL internes suggérées par le brief.
        optimize_summary:
          type: object
          nullable: true
          description: >-
            Pour `optimize` : résumé des changements de réécriture. `null` pour
            les autres types ou sans réécriture terminée.
          required:
            - overview
            - changes
          properties:
            overview:
              type: string
              description: Présentation de la réécriture en un paragraphe.
            changes:
              type: array
              description: Changements individuels de la réécriture.
              items:
                type: object
                required:
                  - description
                properties:
                  description:
                    type: string
        linkedin_post:
          type: string
          nullable: true
          description: >-
            Dernière publication LinkedIn terminée générée pour ce contenu ;
            utilise les anciennes valeurs enregistrées pour les contenus plus
            anciens.
        x_post:
          type: string
          nullable: true
          description: >-
            Dernière publication X terminée générée pour ce contenu ; utilise
            les valeurs historiques pour les anciens contenus.
        facebook_post:
          type: string
          nullable: true
          description: >-
            Dernière publication Facebook terminée générée pour ce contenu ;
            utilise les valeurs historiques pour les anciens contenus.
        instagram_post:
          type: string
          nullable: true
          description: >-
            Dernière publication Instagram terminée générée pour ce contenu ;
            utilise les valeurs historiques pour les contenus anciens.
        reddit_post:
          type: string
          nullable: true
          description: >-
            Dernière publication Reddit terminée générée pour ce contenu ;
            utilise les anciennes valeurs stockées pour les contenus plus
            anciens.
        topic_name:
          type: string
          nullable: true
          description: Nom du sujet ciblé par le contenu, s’il est attribué.
        prompts:
          type: array
          description: >-
            Prompts que ce contenu cible, par association la plus ancienne,
            limités à 100 entrées. Lorsque `prompts_total` dépasse 100, le reste
            n’est actuellement pas récupérable. Vide si le contenu ne cible
            aucun prompt, ce qui est normal pour les pages importées ou suivies
            en externe. Ne correspond pas aux prompts qui ont cité la page —
            voir POST /api/v1/content/prompts.
          items:
            type: object
            required:
              - id
              - prompt
              - topic_name
              - status
            properties:
              id:
                type: string
                format: uuid
                description: >-
                  ID du prompt. Résolvable via GET /api/v1/prompts, sauf pour un
                  prompt supprimé que ce point ne liste pas.
              prompt:
                type: string
                description: Texte du prompt.
              topic_name:
                type: string
                nullable: true
                description: Nom du sujet du prompt, si attribué.
              status:
                type: string
                enum:
                  - active
                  - paused
                  - deleted
                description: >-
                  État actuel du prompt. Les prompts supprimés restent listés
                  car le contenu a été écrit pour eux et Content Hub les affiche
                  encore, mais ne sont plus suivis et GET /api/v1/prompts les
                  omet.
        prompts_total:
          type: integer
          description: >-
            Nombre total de prompts ciblés par ce contenu, avant le plafond de
            100 entrées appliqué aux prompts.
        mark_as_done_time:
          type: string
          format: date-time
          nullable: true
          description: Date à laquelle l’élément a été marqué comme terminé ou publié.
        created_at:
          type: string
          format: date-time
          description: Date de création du contenu.
        updated_at:
          type: string
          format: date-time
          description: >-
            Date de dernière modification du contenu ou de son texte généré (le
            plus récent des horodatages de ligne et de génération).
    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.