La API Notiondesk te permite leer y modificar la identidad visual de tu centro de ayuda: colores, fuentes, diseño, encabezado y pie de página, enlaces, visualización de búsqueda y comentarios, y tema. Úsala para implementar la misma identidad visual en varios centros de ayuda o para mantenerla integrada en el código junto con el resto de tu sistema de diseño.
| Método | Camino | Alcance | Hace |
|---|---|---|---|
GET | /sites/{site_id}/settings/customize | read | Lee la marca |
PATCH | /sites/{site_id}/settings/customize | admin | Actualiza la imagen de marca. |
GET | /sites/{site_id}/themes | read | Enumera los temas disponibles. |
La marca es visible en todas las páginas públicas, por lo que para actualizarla se necesita el ámbito admin, no write. Solo una clave creada por el propietario o administrador del espacio de trabajo tiene el ámbito admin.
Para cambiar la imagen de marca en el panel de control, consulte Personalizar los colores y las fuentes del centro de ayuda .
Lo que la API no cambia
Estos permanecen solo en el panel de control. La ruta de lectura no los devuelve, y una actualización que nombra uno responde 400 validation_error:
- CSS personalizado y JavaScript personalizado. Consulte Personalizar su centro de ayuda con CSS personalizado ;
- Logotipos (claros y oscuros), logotipos de pie de página (claros y oscuros), favicon, imagen de redes sociales e imágenes de encabezado (claras y oscuras).
Lee tu marca
La respuesta contiene exactamente los campos que acepta la actualización, con los mismos nombres. Un ejemplo abreviado:
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
}- Un color que nunca se configuró se lee
"".colors.darkcontiene los colores del modo oscuro y está ausente cuando el centro de ayuda no tiene una paleta oscura.
- Una lista que no contiene nada se lee
[].
themees elcodedel tema actual, onull.
Actualiza tu marca
La ruta responde 204 No Content. Lea la información de marca nuevamente para confirmar el cambio.
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 campo que omitas conserva su valor. Dentro de
colors, un color que omitas también conserva su valor.
- Una lista que envíes reemplaza toda la lista almacenada, y
[]la vacía.
- Los colores son valores hexadecimales
#rrggbbo"". Se rechazan las formas abreviadas como#fff.
- Envía valores booleanos JSON. Los valores
0y"false"se leen comotrue, ynullcomofalse.
Actualizaciones seguras: leer, modificar, devolver.
La forma más segura de actualizar la marca es enviar de vuelta lo que leíste, con los cambios aplicados. Un campo enviado con su valor actual se acepta en cualquier plan, por lo que este método nunca activa el límite del plan para campos que no modificaste.
Un cuerpo devuelto aún puede ser rechazado en dos casos. Corrija el valor en el panel de control o elimine ese campo del cuerpo:
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);- un color almacenado en formato abreviado como
#fff;
- una lista almacenada más larga que los límites que se indican a continuación.
Campos que puedes cambiar
| Área | Campos |
|---|---|
| Bandera | colors con 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 y dark con los mismos campos para oscuro modo |
| Apariencia | appearance (default: light, dark o system; strict: booleano) |
| Fuentes y diseño | primary_font, secondary_font, layout_collection, layout_article (column_1, column_2 o column_3), theme |
| Encabezamiento | header_variant (hero o bar), headline_size, header_background_type (color, image o gradient), header_gradient_type, header_gradient_angle, header_gradient_colors, header_shape_type, header_links, header_link_translations, homepage_link, homepage_link_translations |
| Buscar | 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 |
| Colecciones | 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 |
| Artículos | 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 |
| Comentario | show_article_feedback_form, require_email_for_article_feedback, feedback_reaction_style (emoji o thumbs), feedback_question_label, feedback_comment_mode |
| Menú lateral | __PRESERVADO_66__, __PRESERVADO_65__, __PRESERVADO_64__ |
| Pie de página | footer_layout (compact, standard o multi_level), footer_shape_type, footer_links, footer_link_translations, footer_text_translations, social_media_links, social_link_translations |
| Botón de contacto | show_contact_us_button, contact_us_custom_link, contact_us_button_position (header o footer) |
| Insignia | show_powered_by_badge |
Los enlaces son objetos con un title y un url. Los grupos de enlaces del pie de página son objetos con un title y una lista links. Las traducciones son objetos con un locale y la traducción links, groups o value.
Límites del plan
| Campos | Se necesita la función de planificación para cambiarlos |
|---|---|
show_powered_by_badge | Elimine la marca. Consulte Cómo eliminar la insignia Powered by 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, los campos de comentarios, los campos del menú lateral, los campos del pie de página, los enlaces a redes sociales y los campos del botón de contacto. | Personalización avanzada |
Cambiar uno de ellos en un plan sin la función responde 403 permission_denied, el mensaje nombra la función y no se escribe nada.
Sin personalización avanzada, los colores del pie de página conservan su valor almacenado sin errores. Sin un chatbot de IA habilitado, ai_search_display_mode, ai_search_aside_position y ai_search_enabled: true también conservan su valor almacenado.
Límites de la lista
- Cada lista admite hasta 100 entradas, al igual que cada lista
linksogroupsque se encuentre dentro de ella.
- Todas las listas juntas pueden contener hasta 3000 entradas, incluyendo las entradas anidadas y las listas almacenadas que tu cuerpo omite.
El botón de contacto activa el formulario de contacto.
Mientras que show_contact_us_button es true en un plan con personalización avanzada, cada actualización de marca activa el formulario de contacto del centro de ayuda, como lo hace un guardado en el panel. Consulte la sección del formulario de contacto de Actualizar la configuración del centro de ayuda con la API Notiondesk .
Elige un tema
La lista siempre contiene todos los temas en una sola respuesta, en el orden en que se muestran. Aplique uno enviando su code como theme:
Configurar un tema requiere una personalización avanzada. Enviar "theme": null deja el tema sin cambios.
Errores
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"}'| Estado | Cuando | code |
|---|---|---|
| 400 | El cuerpo nombra un campo exclusivo del panel de control, un valor no es una de las opciones del campo, un color no es #rrggbb, un valor obligatorio es null, una lista es demasiado larga, theme no nombra ningún tema, o el cuerpo tiene un campo desconocido. | validation_error |
| 403 | La clave carece del ámbito read, o admin para la actualización. | insufficient_scope |
| 403 | La actualización modifica un campo que su plan no incluye, o el creador de la clave no puede modificar este centro de ayuda. | permission_denied |
| 404 | El centro de ayuda no existe en tu espacio de trabajo. | not_found |
Los errores de campo nombran el valor, por ejemplo colors.primary o footer_links[0].links. Consulte Manejo de errores de API, límites de velocidad y reintentos de Notiondesk .
Preguntas frecuentes
¿Puedo subir un logotipo con la API Notiondesk?
No. Los logotipos, el favicon y las imágenes de encabezado se configuran en el panel de control.
¿Puedo modificar el CSS o JavaScript personalizado mediante la API?
No. El CSS y el JavaScript personalizados solo están disponibles en el panel de control, y la API nunca los lee ni los modifica.
¿Por qué mi actualización devuelve un error 403 en un campo que no he modificado?
Enviaste un valor que difiere del almacenado en un campo que tu plan no incluye. Consulta primero la documentación y envía el valor almacenado, o bien, omite ese campo.
¿Es necesario sincronizar una actualización de marca?
No. La actualización renueva automáticamente todo el centro de ayuda.