Personnalisez l'image de marque et les thèmes du centre d'aide avec l'API Notiondesk

Mettez à jour l'image de marque du centre d'aide Notiondesk via l'API REST : couleurs, polices, mise en page, liens d'en-tête et de pied de page, affichage de la recherche et thèmes.

8 minutes de lecture

L'API Notiondesk vous permet de lire et de modifier l'identité visuelle de votre centre d'aide : couleurs, polices, mise en page, en-tête et pied de page, liens, affichage des résultats de recherche et des commentaires, et thème. Utilisez-la pour déployer une identité visuelle uniforme sur plusieurs centres d'aide ou pour conserver votre identité visuelle dans le code, au même titre que le reste de votre système de conception.

Méthode Chemin Portée Fait
GET/sites/{site_id}/settings/customizereadLit le logo
PATCH/sites/{site_id}/settings/customizeadminMise à jour de l'image de marque
GET/sites/{site_id}/themesreadListe les thèmes disponibles

L'identité visuelle est visible sur toutes les pages publiques ; sa mise à jour nécessite donc le droit admin, et non write. Seule une clé créée par le propriétaire de l'espace de travail ou un administrateur détient le droit admin.

Pour modifier l'image de marque dans le tableau de bord, consultez la section Personnaliser les couleurs et les polices de votre centre d'aide .

Ce que l'API ne change pas

Ces éléments restent accessibles uniquement via le tableau de bord. La méthode de lecture ne les renvoie pas, et une mise à jour qui en nomme un renvoie une erreur 400 validation_error.

  • logos (clairs et foncés), logos de pied de page (clairs et foncés), favicon, image des médias sociaux et images d'en-tête (claires et foncées).

Lisez votre image de marque

La réponse contient exactement les champs acceptés par la mise à jour, sous les mêmes noms. Voici un exemple simplifié :

curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/customize" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16"
{
  "colors": {
    "primary": "#2563eb",
    "text": "#111827",
    "link": "#2563eb",
    "link_hover": "#1d4ed8",
    "header": "#2563eb",
    "header_text": "#ffffff",
    "background": "#ffffff",
    "footer_background": ""
  },
  "appearance": null,
  "layout_collection": "column_2",
  "layout_article": "column_1",
  "footer_layout": "compact",
  "primary_font": "Inter",
  "header_links": [{"title": "Docs", "url": "https://example.com/docs"}],
  "footer_links": [{"title": "Product", "links": [{"title": "Pricing", "url": "https://example.com/pricing"}]}],
  "show_powered_by_badge": false,
  "theme": null
}
  • La couleur qui n'a jamais été définie est "". colors.dark contient les couleurs du mode sombre et est absente lorsque le centre d'aide ne dispose pas de palette sombre.
  • Une liste qui ne contient rien se lit [].
  • theme est le code du thème actuel, ou null.

Mettez à jour votre image de marque

L'itinéraire répond à 204 No Content. Veuillez relire le marquage pour confirmer le changement.

curl -i -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/customize" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -d '{"primary_font": "Inter", "colors": {"primary": "#2563eb"}, "header_links": [{"title": "Docs", "url": "https://example.com/docs"}]}'
  • Un champ non renseigné conserve sa valeur. Dans colors, une couleur non renseignée conserve également sa valeur.
  • Une liste que vous envoyez remplace toute la liste stockée, et [] la vide.
  • Les couleurs sont exprimées en valeurs hexadécimales #rrggbb ou "". Les formes abrégées telles que #fff sont rejetées.
  • Envoyer des booléens JSON. Les valeurs 0 et "false" sont lues comme true, et null comme false.
Chaque mise à jour acceptée actualise l'intégralité du centre d'aide : Notiondesk efface ses pages en cache et reconstruit chaque page, quelles que soient les modifications apportées. Envoyez chaque modification en une seule requête, et non une requête par champ.

Mises à jour sécurisées : lire, modifier, renvoyer

La méthode la plus sûre pour mettre à jour votre identité visuelle consiste à renvoyer le texte reçu, après y avoir appliqué vos modifications. Un champ renvoyé avec sa valeur actuelle est accepté quel que soit votre abonnement ; ainsi, cette méthode ne risque jamais de dépasser la limite de votre abonnement pour les champs que vous n'avez pas modifiés.

Un corps de requête renvoyé peut encore être refusé dans deux cas : corrigez la valeur dans le tableau de bord ou omettez ce champ dans le corps de la requête.

const url = "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/customize";
const headers = {
  Authorization: `Bearer ${process.env.NOTIONDESK_API_KEY}`,
  "nd-version": "2026-10-16",
  "Content-Type": "application/json",
};

const branding = await (await fetch(url, { headers })).json();
branding.colors.primary = "#7c3aed";
branding.colors.link = "#7c3aed";

const response = await fetch(url, { method: "PATCH", headers, body: JSON.stringify(branding) });
console.log(response.status);
  • une couleur stockée sous une forme abrégée telle que #fff;
  • une liste stockée plus longue que les limites ci-dessous.

Champs que vous pouvez modifier

Zone Champs
Couleurs colors avec primary, text, link, link_hover, header, header_top, header_text, header_top_text, header_link, header_link_hover, background, footer_background, footer_text, article_card_background, collection_card_background, aside_menu_text, aside_menu_text_hover, aside_menu_background_hover et dark avec les mêmes champs pour le foncé mode
Apparence appearance (default: light, dark ou system; strict: booléen)
Polices et mise en page primary_font, secondary_font, layout_collection, layout_article (column_1, column_2 ou column_3), theme
En-tête header_variant (hero ou bar), headline_size, header_background_type (color, image ou gradient), header_gradient_type, header_gradient_angle, header_gradient_colors, header_shape_type, header_links, header_link_translations, homepage_link, homepage_link_translations
Recherche search_bar_length, search_bar_alignment, search_bar_corner_style, search_bar_shadow, search_result_variant, instant_search, segmented_search_results, ai_search_enabled, ai_search_display_mode, ai_search_aside_position
Collections collections_style, collection_card_corner_style, collection_section_variant, collection_content_variant, collapsable_sub_categories, collapsable_sub_categories_default_state, show_collection_icons, show_collection_descriptions, show_collection_content, show_collection_authors, show_collection_articles_count
Articles articles_style, article_card_corner_style, content_tabs_style, article_footer_variant, table_of_contents_position, show_table_of_contents, show_article_icons, show_article_descriptions, show_article_authors, show_related_articles, show_breadcrumb_icon, show_article_publish_date, show_article_page_author
Retour show_article_feedback_form, require_email_for_article_feedback, feedback_reaction_style (emoji ou thumbs), feedback_question_label, feedback_comment_mode
Menu d'accompagnement aside_menu_expansion_mode, show_aside_menu_article_icons, show_aside_menu_collection_icons
Pied de page footer_layout (compact, standard ou multi_level), footer_shape_type, footer_links, footer_link_translations, footer_text_translations, social_media_links, social_link_translations
Bouton de contact show_contact_us_button, contact_us_custom_link, contact_us_button_position (header ou footer)
Badgeshow_powered_by_badge

Les liens sont des objets comportant un champ title et un champ url. Les groupes de liens de pied de page sont des objets comportant un champ title et une liste links. Les traductions sont des objets comportant un champ locale et la traduction correspondante : links, groups ou value.

Limites du plan

Champs Fonctionnalité du plan nécessaire pour les modifier
show_powered_by_badgeSupprimer la marque. Voir Comment supprimer le badge « Propulsé par Notiondesk ».
theme, header_shape_type, instant_search, segmented_search_results, ai_search_display_mode, ai_search_aside_position, show_article_publish_date, show_article_page_author, les champs de commentaires, les champs du menu latéral, les champs du pied de page, les liens vers les réseaux sociaux et les champs du bouton de contact Personnalisation avancée

Modifier l'un d'eux sur un forfait sans la fonctionnalité répond 403 permission_denied, le message nomme la fonctionnalité et rien n'est écrit.

Sans personnalisation avancée, les couleurs du pied de page conservent leur valeur enregistrée sans erreur. Sans chatbot IA activé, les valeurs enregistrées de ai_search_display_mode, ai_search_aside_position et ai_search_enabled: true sont également conservées.

Limites de la liste

  • Chaque liste peut contenir jusqu'à 100 entrées, de même que chaque liste links ou groups à l'intérieur.
  • L'ensemble des listes peut contenir jusqu'à 3 000 entrées, en comptant les entrées imbriquées et les listes stockées que votre corps ne prend pas en compte.

Le bouton de contact active le formulaire de contact.

Lorsque show_contact_us_button est true sur un forfait avec personnalisation avancée, chaque mise à jour de la marque active le formulaire de contact du centre d'aide, comme le fait un enregistrement dans le tableau de bord. Consultez la section « Formulaire de contact » de la documentation « Mise à jour des paramètres du centre d'aide avec l'API Notiondesk » .

Choisissez un thème

La liste contient toujours tous les thèmes dans une seule réponse, dans l'ordre d'affichage. Appliquez-en un en envoyant son code comme theme :

La définition d'un thème nécessite une personnalisation avancée. L'envoi de "theme": null laisse le thème inchangé.

Erreurs

curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/themes" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16"
{
  "object": "list",
  "data": [
    {
      "code": "ocean",
      "name": "Ocean",
      "description": "A calm, airy theme",
      "preview_image_url": "https://example.com/ocean.png",
      "layout": "default"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
curl -i -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/customize" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -d '{"theme": "ocean"}'
Statut Quandcode
400 Le corps du formulaire désigne un champ réservé au tableau de bord, une valeur ne figure pas parmi les choix possibles du champ, une couleur n'est pas #rrggbb, une valeur obligatoire est null, une liste est trop longue, theme ne désigne aucun thème, ou le corps du formulaire contient un champ inconnu.validation_error
403 La clé ne possède pas la portée read, ni admin pour la mise à jour.insufficient_scope
403 La mise à jour modifie un champ qui n'est pas inclus dans votre forfait, ou le créateur de la clé ne peut pas modifier ce centre d'aide.permission_denied
404 Le centre d'aide n'existe pas dans votre espace de travail.not_found

Les erreurs de champ indiquent la valeur, par exemple colors.primary ou footer_links[0].links. Voir Gestion des erreurs d'API, des limites de débit et des nouvelles tentatives Notiondesk .

Questions fréquentes

Puis-je télécharger un logo avec l'API Notiondesk ?

Non. Les logos, le favicon et les images d'en-tête sont définis dans le tableau de bord.

Puis-je modifier le CSS ou le JavaScript personnalisé avec l'API ?

Non. Les fichiers CSS et JavaScript personnalisés sont uniquement accessibles via le tableau de bord, et l'API ne les lit ni ne les modifie jamais.

Pourquoi ma mise à jour renvoie-t-elle une erreur 403 sur un champ que je n'ai pas modifié ?

Vous avez envoyé une valeur différente de celle enregistrée pour un champ non inclus dans votre forfait. Veuillez consulter les spécifications techniques et renvoyer la valeur enregistrée, ou bien omettre ce champ.

Une mise à jour de marque nécessite-t-elle une synchronisation ?

Non. La mise à jour actualise automatiquement l'intégralité du centre d'aide.

Et ensuite ?

Articles associés

Cette page a-t-elle été utile ?

Encore besoin d'aide ? Écrivez-nous