L'API Notiondesk lit tout ce que publie votre centre d'aide : chaque article et collection, quelle que soit la langue, avec son contenu au format Markdown, son statut de publication et son état de synchronisation, ainsi que les entrées de votre journal des modifications. Utilisez-la pour sauvegarder votre centre d'aide, intégrer votre contenu à un autre outil ou identifier les articles qui n'ont pas pu être synchronisés.
L'API lit le contenu mais ne l'écrit jamais. Vos articles et collections restent dans Notion : pour en modifier un, éditez-le dans Notion et déclenchez une synchronisation .
Dans l'API Notiondesk, une collection est appelée une catégorie .
| Méthode | Chemin | Portée | Fait |
|---|---|---|---|
GET | /sites/{site_id}/articles | read | Liste des articles dans une seule langue |
GET | /sites/{site_id}/articles/{article_id} | read | Lit un article avec son contenu Markdown |
GET | /sites/{site_id}/categories | read | Liste les collections dans une langue, avec leur hiérarchie |
GET | /sites/{site_id}/categories/{category_id} | read | Lit une collection avec son contenu Markdown |
GET | /sites/{site_id}/changelog | read | Liste des entrées du journal des modifications publiées, de la plus récente à la plus ancienne. |
Choisissez la langue
Chaque route de cette page accepte un paramètre de requête optionnel locale, tel que ?locale=fr. Sans ce paramètre, la réponse utilise la langue par défaut du centre d'aide. Pour les routes de type liste, locale doit correspondre à l'une des langues prises en charge par le centre d'aide : la langue supported_locales du centre d'aide . Consultez la section « Prise en charge de plusieurs langues dans votre centre d'aide » pour ajouter des langues.
Articles de liste
La liste comprend tous les articles, quel que soit leur statut, y compris les brouillons et les articles archivés, dans l'ordre de leur création. Parcourez-la avec page_size et cursor, comme décrit dans la section Pagination et les requêtes API de la version Notiondesk .
curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/articles?page_size=100&locale=en" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"{
"object": "list",
"data": [
{
"id": "1761580412",
"title": "Connect your Notion workspace",
"slug": "connect-your-notion-workspace",
"status": "published",
"categories": [
{"id": "910000002", "name": "Connecting Notion", "slug": "connecting-notion", "locale": "en", "status": "published"}
],
"tags": [{"name": "Setup", "slug": "setup"}],
"locales_count": 2,
"updated_at": "2026-10-18T14:39:03+00:00",
"published_at": "2026-10-05T04:39:04+00:00",
"locale": "en",
"reading_time": 3,
"views_count": 42,
"reactions_percent": {"smiley": 50, "neutral_face": 25, "disappointed": 25},
"source_notion_page_id": "3d5001d0-2470-8122-a1b2-c3d4e5f60789",
"notion_article_page_url": "https://www.notion.so/3d5001d024708122a1b2c3d4e5f60789",
"sync_in_progress": false,
"sync_timeout": false,
"sync_failed": false,
"sync_error_code": null,
"auto_translated": false
}
],
"has_more": true,
"next_cursor": "OPAQUE_CURSOR"
}| Champ | Signification |
|---|---|
id | L'identifiant de l'article, utilisé comme article_id pour lire l'article |
title, slug | Le titre de l'article et son chemin d'accès dans le centre d'aide |
status | draft, published, review ou archived. Voir Comment contrôler la visibilité des articles |
categories | Les collections auxquelles appartient l'article, chacune comportant les mentions id, name, slug, locale et status |
tags | Les balises de l'article, chacune comportant name et slug |
locales_count | Dans combien de langues l'article existe-t-il ? |
| __PRÉSERVÉ_85__, __PRÉSERVÉ_84__ | Date de dernière modification de l'article et date de publication |
locale | La langue de cet article |
reading_time | Temps de lecture estimé, en minutes |
views_count | Combien de fois les lecteurs ont ouvert l'article ? |
reactions_percent | Chaque réaction de lecteur est accompagnée de sa part, en pourcentage, dans l'ensemble des réactions. Le nom des réactions dépend de votre style de feedback. |
| __PRÉSERVÉ_79__, __PRÉSERVÉ_78__ | La page Notion à partir de laquelle l'article est synchronisé, et l'URL de la page Notion de cette langue (null pour une traduction automatique) |
sync_in_progress, sync_timeout, sync_failed, sync_error_code | Si la synchronisation de l'article est en cours, si la dernière a expiré ou échoué, et pourquoi |
auto_translated | Que ce langage ait été produit par traduction automatique |
sync_failed: trueLire l'article en format Markdown
curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/articles/1761580412?locale=en" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"{
"id": "1761580412",
"type": "article",
"title": "Connect your Notion workspace",
"slug": "connect-your-notion-workspace",
"text": "# Connect your Notion workspace\n\nOpen **Settings**, then **Notion**...",
"url": "https://help.example.com/en/articles/connect-your-notion-workspace",
"locale": "en",
"last_updated": "2026-10-18T14:39:03+00:00",
"category": {"id": "910000002", "title": "Connecting Notion", "slug": "connecting-notion"},
"tags": ["setup"],
"truncated": false,
"author": {"name": "Ada Lovelace"},
"status": "published",
"content_available": true,
"sync_in_progress": false,
"sync_timeout": false,
"sync_failed": false,
"sync_error_code": null
}| Champ | Signification |
|---|---|
type | Toujours __PRÉSERVÉ_69__ |
text | Le contenu de l'article au format Markdown. Vide si aucun contenu n'est encore enregistré. |
truncated | true lorsque text a été tronqué à 200 000 octets. La troncature se fait toujours sur un caractère entier. |
content_available | Est-ce que Notiondesk contient déjà du contenu pour cette langue ? |
url | L'adresse publique de l'article |
category | Collection principale de l'article : id, title et slug |
tags | Les identifiants des balises de l'article |
author | L'auteur de l'article : name |
Chaque statut est lisible, vous pouvez donc lire un brouillon avant de le publier. Un article sans traduction dans la réponse demandée locale renvoie 404 not_found.
Liste des collections
Chaque élément est une collection dans la langue demandée, dans l'ordre de création des collections :
Reconstruisez l'arborescence de votre collection avec trois champs :
curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/categories?page_size=100" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"{
"id": "910000001",
"name": "Getting Started",
"slug": "getting-started",
"updated_at": "2026-10-18T14:39:12+00:00",
"locale": "en",
"is_parent": true,
"source_notion_page_id": "5d5001d0-2470-8122-a1b2-c3d4e5f60789",
"notion_category_page_url": "https://www.notion.so/5d5001d024708122a1b2c3d4e5f60789",
"sync_in_progress": false,
"sync_timeout": false,
"sync_failed": false,
"sync_error_code": null,
"parent_ids": [],
"children_ids": ["910000002"],
"locales_count": 2,
"status": "published",
"auto_translated": false
}| Champ | Signification |
|---|---|
is_parent | true pour une collection au sommet de la hiérarchie |
parent_ids | Les collections juste au-dessus de celle-ci |
children_ids | Les collections juste en dessous de celle-ci |
Cette liste ne contient pas le nombre d'articles. Pour compter les articles d'une collection, listez-les et regroupez-les par categories. Découvrez comment les collections organisent votre centre d'aide dans la section « Utiliser les collections pour organiser vos articles » .
Lire une collection
La réponse a la même forme qu'un article : type est category, title, slug, url, status, les champs de synchronisation, et text avec le contenu propre de la collection au format Markdown, vide lorsqu'il n'y en a pas.
Liste des entrées du journal des modifications
Le journal des modifications répertorie les articles publiés, classés par ordre chronologique inverse. Configurez-le en suivant les instructions de la section « Configuration des journaux des modifications » de votre centre d'aide .
curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/categories/910000001?locale=en" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/changelog?page_size=50&locale=en" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"{
"object": "list",
"data": [
{
"id": "article:1761497350",
"title": "Multilingual sync is now available",
"slug": "multilingual-sync-is-now-available",
"text": "Help centers on the Enterprise plan can now sync every configured locale in a single run instead of one language at a time.",
"published_at": "2026-10-13T09:12:44+00:00",
"last_updated": "2026-10-18T14:39:03+00:00",
"tags": [],
"url": "https://help.example.com/en/changelogs",
"locale": "en"
}
],
"has_more": true,
"next_cursor": "OPAQUE_CURSOR"
}| Champ | Signification |
|---|---|
id | article: suivi de l'identifiant de l'article. Supprimez le préfixe pour lire l'article complet. |
text | Le texte brut de l'entrée, généralement un extrait d'environ 30 mots |
published_at, last_updated | Date de publication et date de dernière modification de l'article |
tags | Les slugs des balises de l'entrée |
url | Votre page de journal des modifications dans cette langue |
Bon à savoir :
- Une entrée n'apparaît que lorsque son journal des modifications est publié dans la langue demandée.
- Sur un centre d'aide utilisant des comptes invités, la liste n'affiche que les entrées visibles par tous les lecteurs.
- La liste ne contient au maximum que les 1 000 entrées les plus récentes. Au-delà,
has_moredevientfalsemême si des entrées plus anciennes existent.
- Il arrive exceptionnellement, lors d'une interruption de service temporaire, qu'une entrée soit omise ou répétée lors de la lecture d'une liste. Veuillez la consulter à nouveau ultérieurement pour obtenir la liste complète.
Erreurs
| Statut | Quand | code |
|---|---|---|
| 400 | page_size est hors de la plage 1 à 100, cursor est invalide, locale n'est pas une langue prise en charge par le centre d'aide (listes) ou ne comporte pas entre 2 et 10 caractères (lecture unique), ou la requête contient un paramètre inconnu | validation_error |
| 403 | La clé ne possède pas la portée read | insufficient_scope |
| 403 | Journal des modifications uniquement : le journal des modifications est désactivé ou non inclus dans votre forfait, ou les analyses du centre d’aide sont désactivées. | permission_denied |
| 404 | Le centre d'aide, l'article ou la collection n'existe pas dans votre espace de travail, il n'a pas de traduction dans locale, ou le journal des modifications est activé mais ne contient aucune collection de journaux des modifications | not_found |
Chaque route peut également répondre aux requêtes invalid_version, authentication_error, rate_limited et internal_error. Voir Gestion des erreurs, des limites de débit et des nouvelles tentatives de l'API Notiondesk .
Questions fréquentes
Puis-je créer ou modifier des articles avec l'API Notiondesk ?
Non. Notion est la source de référence pour votre contenu. Modifiez l'article dans Notion, puis déclenchez une synchronisation avec l'API ou attendez la synchronisation planifiée.
La liste des articles inclut-elle les brouillons ?
Oui. La liste et le chemin de lecture incluent tous les statuts : draft, published, review et archived. Filtrez les résultats dans votre code sur status pour ne conserver que les articles publiés.
Comment exporter tous les articles au format Markdown ?
Listez les articles, puis lisez chacun d'eux en fonction de son id. L' article « Exemples » contient un script de sauvegarde complet.
Que signifie truncated: true ?
truncated: true ?Le texte Markdown de l'article est plus long que 200 000 octets, donc text contient les 200 000 premiers octets, coupés sur un caractère entier.
Pourquoi la variable notion_article_page_url est-elle vide pour certaines langues ?
notion_article_page_url est-elle vide pour certaines langues ?Ce texte a été produit par traduction automatique, il ne possède donc pas de page Notion dédiée.