Ferndesk

Articles

Créer un article

Crée un nouvel article du centre d’aide sous forme de brouillon ouvert. L’article n’est pas publié tant que vous ne l’avez pas publié (POST /articles/:id/publish), sauf si vous transmettez publish: true pour le publier en un seul appel (comportement historique).

Fournissez le contenu dans content (JSON Tiptap) ou markdown.

Nécessite le scope content:write. Limite de débit : 60 requêtes par heure et par clé API.

Scope requis : content:write

POST /articles

Créer un article

curl --request POST \
  --url 'https://api.ferndesk.com/v1/articles' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "key": "value"
}'
{
  "id": "<string>",
  "title": "<string>",
  "slug": "<string>",
  "contentHtml": "<string>",
  "contentMarkdown": "<string>",
  "contentJson": "<string>",
  "url": "<url>",
  "sectionId": "<string>",
  "collectionId": "<string>",
  "status": "<string>",
  "publishedAt": "<string>",
  "createdAt": "<string>"
}

Article créé (brouillon ou publié lorsque `publish=true`)

Authorizations

  • Authorization string requis header

    Toutes les requêtes nécessitent un jeton Bearer dans l’en-tête Authorization. Les clés API sont préfixées par fdsk_ et doivent rester secrètes. Vous pouvez générer et gérer les clés depuis la page Paramètres du développeur.

    Les clés peuvent être limitées à n’importe quel sous-ensemble des scopes suivants (chaque endpoint indique le scope requis via x-required-scopes) :

    • content:read : Lire et rechercher les articles, collections, sections et traductions du centre d’aide
    • content:write : Créer et modifier les brouillons d’articles, les utilisateurs et les tâches ; déplacer les articles et les collections
    • content:publish : Publier, dépublier, restaurer et mettre à la corbeille le contenu (rendre les modifications visibles)
    • analytics:read : Lire les rapports, les analyses et les retours sur les articles du centre d’aide
    • conversations:read : Lire les conversations et transcriptions de l’assistant IA
    • webhooks:manage : Créer et gérer les abonnements aux webhooks sortants

    L’attribution de content:write ou content:publish implique content:read. Les clés créées avant la mise en place des scopes ont des scopes null = accès complet (mode historique).

Request Body

application/json
  • title string requis

    Titre de l’article.

  • content any

    Contenu de l’article sous forme de document JSON Tiptap/ProseMirror. Mutuellement exclusif avec markdown.

  • markdown string

    Contenu de l’article au format Markdown. Converti en texte enrichi lors de l’écriture. Mutuellement exclusif avec content.

  • publish boolean default

    Lorsque cette valeur est true, l’article est publié immédiatement après sa création (comportement historique en un seul appel). Par défaut, cette valeur est false : la création laisse un brouillon ouvert que vous publiez séparément. Default: false.

  • sectionId string requis

    ID de la section dans laquelle l’article doit être créé.

  • collectionId string | null

    ID de collection facultatif pour regrouper cet article.

  • keywords string

    Mots-clés SEO.

  • metaDescription string

    Méta-description SEO.

  • ogImage string

    URL de l’image Open Graph.

  • slug string

    Slug d’URL personnalisé. Fournir un nouveau slug active automatiquement le mode de slug personnalisé.

Response

application/json
  • id string

    ID d’article Ferndesk (art_...).

  • title string

    Titre principal de l’article.

  • slug string | null

    Slug d’URL de l’article.

  • contentHtml string

    Contenu de l’article rendu au format HTML. Présent lorsque format=html (valeur par défaut).

  • contentMarkdown string

    Contenu de l’article rendu au format Markdown. Présent lorsque format=markdown.

  • contentJson any | null

    Document ProseMirror/Tiptap brut stocké. Présent lorsque format=json. Utilise le schéma ProseMirror de Ferndesk (nœuds personnalisés tels que callout, steps, cards) et constitue la représentation sans perte.

  • url string (uri) | null

    URL publique canonique de cet article.

  • sectionId string | null

    ID de la section contenant l’article.

  • collectionId string | null

    ID de regroupement de collection facultatif pour l’article.

  • status string | null

    Statut de publication de l’article.

  • publishedAt string | null

    Horodatage de publication de l’article.

  • createdAt string

    Horodatage ISO 8601 en UTC.

  • updatedAt string

    Horodatage ISO 8601 en UTC.

  • draft_id string | null

    Brouillon ouvert créé pour cet article, ou null lorsqu’il est créé avec publish: true.