Update help center settings with the Notiondesk API

Update Notiondesk help center settings via the REST API: SEO indexing, page titles, llms.txt and markdown export, the contact form, and changelogs.

6 min read

The Notiondesk API lets you change your help center's settings from code: search engine indexing, the page title and description in each language, AI optimization, the contact form and the changelog. Use it to apply the same configuration to several help centers, or to keep settings under version control.

MethodPathScopeChanges
PATCH/sites/{site_id}/settings/contentwriteSearch engine indexing, page title and description per language
PATCH/sites/{site_id}/settings/ai-optimizationwritellms.txt, markdown export and the AI contextual menu
PATCH/sites/{site_id}/settings/contact-formwriteWhether the contact form is shown
PATCH/sites/{site_id}/settings/changelogwriteThe changelog and its options

Languages and automatic translation have their own article: Manage languages and automatic translation with the Notiondesk API. Colors, fonts and layout are in Customize help center branding and themes with the Notiondesk API.

How settings updates work

Every route on this page follows the same rules:

  • Send only what you change. A field you leave out keeps its current value.
  • Send JSON booleans. true or false only: the values 0 and "false" are read as true.
  • Unknown fields are rejected with 400 validation_error, and nothing changes.

Search engine indexing, page titles and descriptions

curl -i -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/content" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -d '{"seo_indexing_enabled": true, "items": [{"locale": "fr", "page_title": "Centre d aide Example", "page_description": "Toutes les réponses sur Example"}]}'
FieldTypeNotesRead back as
seo_indexing_enabledbooleanWhether search engines may index the help centerseo_indexing_enabled
itemslist of objectsOne object per language to changesetting_content_items

Each object in items:

FieldTypeNotes
localestringRequired. A language the help center serves, at most once in the list
page_titlestring or nullUp to 255 characters. null clears it
page_descriptionstring or nullUp to 255 characters. null clears it

An object changes only the fields it carries, and a language you leave out of items keeps its title and description. items cannot add or remove a language.

An error on one language names it in the field path, for example items[fr].page_title.

seo_indexing_enabled: false asks search engines to stop indexing your whole help center. See Prevent search engines from crawling and indexing your help center.

AI optimization

curl -i -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/ai-optimization" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -d '{"llms_txt_enabled": true, "markdown_export_enabled": true, "ai_contextual_menu_enabled": true}'
FieldTypeRead back as
llms_txt_enabledboolean: whether the help center publishes llms.txtllms_txt_enabled
markdown_export_enabledboolean: whether articles can be read as markdownmarkdown_export_enabled
ai_contextual_menu_enabledboolean: whether articles show the AI contextual menuai_contextual_menu_enabled

Your plan must include AI optimization. Learn what each feature does in Setting up AI Optimization in your help center and Introduction to GEO / AI optimization.

Contact form

curl -i -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/contact-form" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'
FieldTypeRead back as
enabledboolean: whether the help center shows its contact formcontact_form_enabled
  • The API turns the form on or off, nothing more. The addresses that receive submissions are set in the dashboard. A body with destination_emails answers 400 validation_error and changes nothing.
  • The form stays on only with a stored address. Turning it on for a help center with no address answers 400 validation_error for destination_emails. Set an address in the dashboard first. Turning the form off needs no address.
  • Your plan must include advanced customization, even to turn the form off.

Changelog

curl -i -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/changelog" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true, "reactions_enabled": true, "changelog_categories": [{"category_id": "2984612035", "color": "blue_sky"}]}'
FieldTypeNotesRead back as
enabledbooleanWhether the changelog is publishedchangelog_enabled
email_subscriptions_enabledbooleanWhether readers can subscribe to changelog emails. true needs a plan with changelog email notificationschangelog_email_subscriptions_enabled
reactions_enabledbooleanWhether readers can react to changelog entrieschangelog_reactions_enabled
email_subject_patternstringThe subject line of changelog emails, up to 255 characters. It cannot be cleared: null and "" leave it unchangedchangelog_email_subject_pattern
changelog_categorieslist of objectsThe full set of changelog collectionschangelog_categories

Each object in changelog_categories has a required category_id, the id of one of your collections, and an optional color of up to 255 characters.

changelog_categories replaces the whole set. A collection you leave out stops being a changelog collection, and [] removes them all. Read changelog_categories from GET /sites/{site_id} first when you only want to add one. The set holds up to 100 collections.

Your plan must include the changelog. If email subscriptions are on but your plan no longer includes changelog email notifications, every request to this route answers 403 permission_denied until it sends "email_subscriptions_enabled": false.

Learn more in Setting up changelogs on your help center and How to enable email subscriptions for your changelogs.

Errors

StatuscodeWhen
400validation_errorA value is invalid or too long, a language or collection is unknown or repeated, more than 100 changelog collections, destination_emails was sent, the contact form would stay on without an address, or the body has an unknown field
403insufficient_scopeThe key lacks the write scope
403permission_deniedYour plan does not include the feature (AI optimization, advanced customization, the changelog, or changelog email notifications), or the key's creator cannot change this help center
404not_foundThe help center does not exist in your workspace

See Handle Notiondesk API errors, rate limits, and retries for the error envelope and the other codes.

Common questions

How do I confirm a settings change?

Read GET /sites/{site_id}. Each field's "Read back as" column above names where the new value appears.

Can I change the contact form's email addresses with the API?

No. Set them in the dashboard. The API only turns the form on or off.

Can I turn MCP Search on with the API?

No. Turn MCP Search on in the dashboard. The API shows its state in mcp_search_enabled. See Enable MCP Search.

Can I change the help center's access mode with the API?

No. Public, password and guest-account access are set in the dashboard. The API shows the current mode in access_mode.

What's next

Related articles

Was this page helpful?

Still need help? Ask us