Notiondesk API を使用して、記事、コレクション、変更履歴エントリを読み取ります。

Notiondesk ヘルプセンターの記事やコレクションを、同期状態を維持しながら、任意の言語でマークダウン形式で閲覧し、REST API を介して変更履歴エントリを一覧表示します。

3 分で読めます

Notiondesk API は、ヘルプセンターで公開されているすべてのコンテンツ(あらゆる言語の記事とコレクション、Markdown 形式のコンテンツ、公開ステータス、同期状態、および公開済みの変更履歴エントリ)を読み取ります。この API を使用して、ヘルプセンターのバックアップを作成したり、コンテンツを他のツールに取り込んだり、同期に失敗した記事を確認したりできます。

APIはコンテンツを読み取りますが、書き込むことはありません。記事やコレクションはNotion内に保持されます。変更するには、Notionで編集して同期をトリガーしてください。

Notiondesk API では、コレクションはカテゴリと呼ばれます。

方法パス範囲する
GET/sites/{site_id}/articlesread1つの言語の記事を一覧表示する
GET/sites/{site_id}/articles/{article_id}readマークダウンコンテンツを含む記事を1つ読みます。
GET/sites/{site_id}/categoriesread階層構造を持つコレクションを、1つの言語で一覧表示します。
GET/sites/{site_id}/categories/{category_id}readマークダウンコンテンツを含むコレクションを1つ読み込みます。
GET/sites/{site_id}/changelogread公開された変更履歴エントリを一覧表示します(新しい順)。

言語を選択してください

このページのすべてのルートは、?locale=fr などのオプションのクエリ パラメータ locale を受け取ります。これがない場合、応答にはヘルプ センターのデフォルト言語が使用されます。リスト ルートでは、locale はヘルプセンターが提供する言語のいずれかである必要があります。つまり、ヘルプ センターの supported_locales です。言語を追加するには、 「ヘルプ センターで複数の言語をサポートする」を参照してください。

記事一覧

リストには、すべてのステータスのすべての記事、下書き、アーカイブされた記事も、作成順に含まれています。ページネーションとバージョン Notiondesk API リクエストの説明にあるように、page_size と cursor を使用してページをめくります。

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"
}
分野意味
id記事の識別子。article_id として使用され、記事を読み取ります。
title、slugヘルプセンターの記事タイトルとそのパス部分
statusdraft、published、review、またはarchived。 記事の表示設定方法については、「記事の表示設定方法」を参照してください。
categoriesこの記事が属するコレクションは、それぞれid、name、slug、locale、statusで示されています。
tags記事のタグにはそれぞれnameとslugが付いています。
locales_countこの記事はいくつの言語で存在しますか?
updated_at、published_at記事の最終更新日時と公開日時
localeこのアイテムの言語
reading_time推定読書時間(分)
views_count読者が記事を開いた回数
reactions_percent各読者の反応とその全反応に占める割合(パーセント)。反応名はフィードバックのスタイルによって異なります。
source_notion_page_id、notion_article_page_url記事が同期される元のNotionページ、およびこの言語のNotionページのURL(自動翻訳の場合はnull)
sync_in_progress、sync_timeout、sync_failed、sync_error_code記事の同期が実行中かどうか、前回の同期がタイムアウトまたは失敗したかどうか、そしてその理由
auto_translatedこの言語が自動翻訳によって生成されたかどうか
注:コードで結果をフィルタリングして、最後の同期が失敗したすべての記事を見つけ、Notion でそれを修正して再度同期します。sync_failed: true

記事をマークダウン形式で読む

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
}
分野意味
type常にarticle
text記事の内容をマークダウン形式で記述します。コンテンツがまだ保存されていない場合は空欄になります。
truncatedtext が 200,000 バイトで切り取られたとき、true が切り取られました。切り取りは常に文字単位で行われます。
content_availableNotiondesk にこの言語のコンテンツが含まれているかどうか
url記事の公開演説
categoryこの記事の主要コレクション:id、title、slug
tags記事のタグのスラッグ
author記事の著者: name

すべてのステータスは読みやすいので、公開前に下書きを読むことができます。要求されたlocaleに翻訳がない記事は、404 not_foundを返します。

リストコレクション

各項目は、リクエストされた言語のコレクションであり、コレクションが作成された順序で並んでいます。

3つのフィールドを使用してコレクションツリーを再構築します。

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
}
分野意味
is_parent階層構造の最上位にあるコレクションに対してtrue
parent_idsこのコレクションのすぐ上にあるコレクション
children_idsこのコレクションのすぐ下のコレクション

このリストには記事数は含まれていません。コレクションの記事数をカウントするには、記事を一覧表示し、「categories」でグループ化してください。ヘルプセンターをコレクションで整理する方法については、「コレクションを使用して記事を整理する」を参照してください。

コレクションを読む

レスポンスは記事と同じ形式です。type は、同期フィールドである category、title、slug、url、status、およびコレクション独自のコンテンツをマークダウンで含む text で構成され、コンテンツがない場合は空になります。

変更履歴エントリの一覧

変更履歴には、変更履歴コレクションに登録された公開済みの記事が、新しい順に表示されます。設定方法は、 ヘルプセンターの「変更履歴の設定」をご覧ください。

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"
}
分野意味
idarticle: に続いてエントリの記事 ID が続きます。プレフィックスを削除すると、記事ルートでエントリ全体を読むことができます。
textエントリーのプレーンテキスト(通常は約30語の抜粋)
published_at、last_updated記事が公開された日時と最終更新日時
tagsエントリのタグのスラッグ
urlこの言語での変更履歴ページ

知っておくと良いこと:

  • エントリは、その変更履歴コレクションが要求された言語で公開された場合にのみ表示されます。
  • ゲストアカウントを使用するヘルプセンターでは、リストにはすべての閲覧者が閲覧できるエントリのみが表示されます。
  • このリストには、最新のエントリが最大で1,000件まで表示されます。それ以降は、古いエントリが存在する場合でも、has_moreはfalseとなります。
  • まれに、一時的なサービス障害発生時に、リストの読み込みでエントリがスキップされたり、重複して読み込まれることがあります。完全なリストを表示するには、後でもう一度読み込んでください。

エラー

状態いつcode
400 page_size が 1 ~ 100 の範囲外である、cursor が無効である、locale がヘルプセンターが対応している言語(リスト)ではないか、2 ~ 10 文字(単一読み取り)ではない、またはクエリに不明なパラメータが含まれている。validation_error
403キーにはreadスコープがありませんinsufficient_scope
403変更履歴のみ:変更履歴が無効になっているか、プランに含まれていないか、ヘルプセンターの分析機能が無効になっています。permission_denied
404ヘルプセンター、記事、またはコレクションがワークスペースに存在しないか、locale に翻訳がないか、変更履歴が有効になっているが変更履歴コレクションがないnot_found

すべてのルートは、invalid_version、authentication_error、rate_limited、およびinternal_errorにも応答できます。__ ND_TERM_5bcd8dee__ APIエラー、レート制限、および再試行の処理を参照してください。

よくある質問

Notiondesk API を使用して記事を作成または編集できますか?

いいえ。Notionはコンテンツの信頼できる情報源です。Notionで記事を編集した後、APIとの同期を実行するか、スケジュールされた同期をお待ちください。

記事一覧には下書きも含まれていますか?

はい。リストと読み取りルートには、draft、published、review、archived のすべてのステータスが含まれています。公開済みの記事のみを残すには、コード内で status で結果をフィルタリングしてください。

すべての記事をマークダウン形式でエクスポートするにはどうすればよいですか?

記事の一覧を表示し、それぞれの記事をidの順に読んでください。例の記事には、完全なバックアップスクリプトが含まれています。

truncated: trueとはどういう意味ですか?

この記事のマークダウンは20万バイトを超えているため、textには最初の20万バイトが格納され、1文字単位で切り取られます。

なぜ一部の言語ではnotion_article_page_urlが空になるのですか?

その言語は自動翻訳によって生成されたため、Notionには専用のページがありません。

次は?

関連する記事

このページは役に立ちましたか?

Still need help? Ask us