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.
| Method | Path | Scope | Changes |
|---|---|---|---|
PATCH | /sites/{site_id}/settings/content | write | Search engine indexing, page title and description per language |
PATCH | /sites/{site_id}/settings/ai-optimization | write | llms.txt, markdown export and the AI contextual menu |
PATCH | /sites/{site_id}/settings/contact-form | write | Whether the contact form is shown |
PATCH | /sites/{site_id}/settings/changelog | write | The 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.
- The answer is
204 No Content, with no body, even when nothing changed. Read the new state withGET /sites/{site_id}, as described in Read your help centers with the Notiondesk API.
- Send JSON booleans.
trueorfalseonly: the values0and"false"are read astrue.
- Unknown fields are rejected with 400
validation_error, and nothing changes.
- Retries are safe with an
Idempotency-Key. See Handle Notiondesk API errors, rate limits, and retries.
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"}]}'| Field | Type | Notes | Read back as |
|---|---|---|---|
seo_indexing_enabled | boolean | Whether search engines may index the help center | seo_indexing_enabled |
items | list of objects | One object per language to change | setting_content_items |
Each object in items:
| Field | Type | Notes |
|---|---|---|
locale | string | Required. A language the help center serves, at most once in the list |
page_title | string or null | Up to 255 characters. null clears it |
page_description | string or null | Up 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}'| Field | Type | Read back as |
|---|---|---|
llms_txt_enabled | boolean: whether the help center publishes llms.txt | llms_txt_enabled |
markdown_export_enabled | boolean: whether articles can be read as markdown | markdown_export_enabled |
ai_contextual_menu_enabled | boolean: whether articles show the AI contextual menu | ai_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}'| Field | Type | Read back as |
|---|---|---|
enabled | boolean: whether the help center shows its contact form | contact_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_emailsanswers 400validation_errorand changes nothing.
- The form stays on only with a stored address. Turning it on for a help center with no address answers 400
validation_errorfordestination_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"}]}'| Field | Type | Notes | Read back as |
|---|---|---|---|
enabled | boolean | Whether the changelog is published | changelog_enabled |
email_subscriptions_enabled | boolean | Whether readers can subscribe to changelog emails. true needs a plan with changelog email notifications | changelog_email_subscriptions_enabled |
reactions_enabled | boolean | Whether readers can react to changelog entries | changelog_reactions_enabled |
email_subject_pattern | string | The subject line of changelog emails, up to 255 characters. It cannot be cleared: null and "" leave it unchanged | changelog_email_subject_pattern |
changelog_categories | list of objects | The full set of changelog collections | changelog_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
| Status | code | When |
|---|---|---|
| 400 | validation_error | A 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 |
| 403 | insufficient_scope | The key lacks the write scope |
| 403 | permission_denied | Your 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 |
| 404 | not_found | The 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.