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/customize | read | Lit le logo |
PATCH | /sites/{site_id}/settings/customize | admin | Mise à jour de l'image de marque |
GET | /sites/{site_id}/themes | read | Liste 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.
- CSS et JavaScript personnalisés. Consultez la section Personnaliser votre centre d'aide avec du CSS personnalisé ;
- 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.darkcontient 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
[].
themeest lecodedu thème actuel, ounull.
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
#rrggbbou"". Les formes abrégées telles que#fffsont rejetées.
- Envoyer des booléens JSON. Les valeurs
0et"false"sont lues commetrue, etnullcommefalse.
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) |
| Badge | show_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_badge | Supprimer 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
linksougroupsà 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 | Quand | code |
|---|---|---|
| 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.