Read your help centers with the Notiondesk API

List your Notiondesk help centers, read their domain, languages and settings, and check scheduled Notion sync status with the Notiondesk API.

5 min read

The Notiondesk API lets you list every help center in your workspace, read each help center's configuration, and check the status of its scheduled Notion sync. Start here: the help center id these routes return is the site_id every other Notiondesk API route takes in its path.

In the Notiondesk API, a help center is called a site.

MethodPathScopeDoes
GET/sitesreadLists the help centers of your workspace
GET/sites/{site_id}readReads one help center and its settings
GET/sites/{site_id}/sync-statusreadReads the scheduled Notion sync of a help center

List your help centers

curl "https://api.notiondesk.so/sites?page_size=50" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16"

The list includes every help center in the workspace that owns your key, oldest first, using cursor pagination with page_size and cursor.

{
  "object": "list",
  "data": [
    {
      "id": "c74781f6-1aea-4e17-ab23-bbb8b4d174b6",
      "full_domain": "help.example.com",
      "enabled": true,
      "default_locale": "en",
      "locales": ["en", "fr"]
    }
  ],
  "has_more": false,
  "next_cursor": null
}
FieldTypeMeaning
idstringThe help center identifier, used as site_id in every other path
full_domainstring or nullThe domain readers visit: your custom domain when one is active, otherwise your Notiondesk subdomain
enabledbooleanWhether the help center is enabled
default_localestringThe default language, for example en
localeslist of stringsThe languages the help center serves, default first, limited to your plan's language allowance

Running several help centers? See Create multiple Help Centers.

Read a help center's configuration

curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16"

The response describes the help center and every setting the API can change. Read it again after a settings update to confirm the new state: the settings routes answer 204 No Content with no body.

{
  "id": "c74781f6-1aea-4e17-ab23-bbb8b4d174b6",
  "full_domain": "help.example.com",
  "enabled": true,
  "default_locale": "en",
  "access_mode": "public",
  "guest_access_requires_login": true,
  "supported_locales": ["en", "fr"],
  "available_locales": ["en", "fr", "de", "es"],
  "auto_sync_enabled": true,
  "seo_indexing_enabled": true,
  "setting_content_items": [
    {"locale": "en", "page_title": "Example Help Center", "page_description": "Answers about Example"}
  ],
  "auto_translate_enabled": false,
  "auto_translate_source_locale": null,
  "llms_txt_enabled": true,
  "markdown_export_enabled": true,
  "ai_contextual_menu_enabled": false,
  "mcp_search_enabled": true,
  "contact_form_enabled": true,
  "changelog_enabled": true,
  "changelog_email_subscriptions_enabled": false,
  "changelog_reactions_enabled": true,
  "changelog_email_subject_pattern": null,
  "changelog_categories": [
    {"category_id": "2984612035", "color": "blue_sky"}
  ]
}
FieldMeaningChange it with
id, full_domain, enabled, default_localeAs in the list abovedefault_locale: Languages
access_modeWho can read the help center: public, password or guest_accountsDashboard only
guest_access_requires_loginWhether a guest-account help center asks readers to sign inDashboard only
supported_localesThe languages the help center serves, default firstLanguages
available_localesEvery language a help center can be configured to serveNot editable
auto_sync_enabledWhether Notiondesk syncs from Notion on a scheduleSyncs
seo_indexing_enabledWhether search engines may index the help centerSettings
setting_content_itemsThe page title and description per language: locale, page_title, page_descriptionSettings
auto_translate_enabled, auto_translate_source_localeWhether missing translations are produced automatically, and from which languageLanguages
llms_txt_enabled, markdown_export_enabled, ai_contextual_menu_enabledWhether the help center publishes llms.txt, offers articles as markdown, and shows the AI contextual menuSettings
mcp_search_enabledWhether the help center's public MCP search is onDashboard only. See Enable MCP Search
contact_form_enabledWhether the help center shows its contact formSettings
changelog_enabled, changelog_email_subscriptions_enabled, changelog_reactions_enabled, changelog_email_subject_pattern, changelog_categoriesThe changelog and its options. Each changelog category has a category_id and a colorSettings

Check the scheduled sync status

curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/sync-status" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16"

The response is the same status the dashboard shows for scheduled syncs:

{
  "auto_sync_enabled": true,
  "frequency": "daily",
  "next_sync_at": "2026-10-19T06:00:00+00:00",
  "current_status": "idle",
  "recent_runs": [
    {
      "started_at": "2026-10-18T06:00:02+00:00",
      "finished_at": "2026-10-18T06:01:41+00:00",
      "status": "success",
      "message": "Synced successfully.",
      "error_category": null,
      "requires_customer_action": false
    }
  ]
}
FieldMeaning
auto_sync_enabledWhether scheduled sync is on
frequencydaily, every_2h, hourly or auto; null when scheduled sync is off
next_sync_atWhen the next scheduled sync starts; null when none is planned
current_statusin_progress while a scheduled run is going, failed when the latest run failed, otherwise idle
recent_runsUp to the 10 most recent scheduled runs, newest first

Each run has started_at, finished_at (null while it runs, and for a run that timed out), status (in_progress, success or failed), a short message, and for a failed run:

error_categoryMeaning
notion_connectionNotiondesk could not reach your Notion workspace, for example after the connection was removed
notion_configurationYour Notion databases or pages are not set up the way Notiondesk expects
temporary_notion_issueNotion had a temporary problem
temporary_network_issueA temporary network problem interrupted the run
unknownAny other cause

When requires_customer_action is true, the next run fails too until you fix something, such as the Notion connection. See How to synchronize your help center with Notion.

The sync status lists scheduled runs only. A sync you trigger through the API or the dashboard does not appear in recent_runs. See Trigger Notion syncs with the Notiondesk API to confirm a triggered sync.

Errors

StatuscodeWhen
400validation_errorOn GET /sites: page_size is outside 1 to 100, the cursor is invalid, or the query has an unknown parameter
403insufficient_scopeThe key lacks the read scope
404not_foundsite_id names no help center in your workspace

Every route can also answer invalid_version, authentication_error, rate_limited and internal_error. See Handle Notiondesk API errors, rate limits, and retries.

Common questions

Where do I find my help center's site_id?

Call GET /sites: each help center's id is its site_id. It is also the identifier after /s/ in your Notiondesk dashboard's address bar.

Can I create or delete a help center with the Notiondesk API?

No. Create and delete help centers in the dashboard. The API reads and configures the help centers that already exist.

Can I change the sync frequency with the API?

No. The API turns scheduled sync on or off. Change the frequency in the dashboard.

Why does a help center list fewer languages than I configured?

locales and supported_locales are limited to your plan's language allowance. Languages beyond the allowance are not served.

What's next

Related articles

Was this page helpful?

Still need help? Ask us