Files
langflow/embedded-chat-widget.html
github-merge-queue[bot] 74f987fca7 deploy: 332738a317
2025-06-23 16:30:37 +00:00

103 lines
54 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-Concepts/embedded-chat-widget" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
<title data-rh="true">Embedded chat widget | Langflow Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.langflow.org/embedded-chat-widget"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Embedded chat widget | Langflow Documentation"><meta data-rh="true" name="description" content="On the Publish pane, the Embed into site tab displays code that can be inserted in the `` of your HTML to interact with your flow."><meta data-rh="true" property="og:description" content="On the Publish pane, the Embed into site tab displays code that can be inserted in the `` of your HTML to interact with your flow."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/embedded-chat-widget"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/embedded-chat-widget" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/embedded-chat-widget" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://UZK6BDPCVY-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SLQFLQ3KPT"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-SLQFLQ3KPT",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Langflow Documentation" href="/opensearch.xml">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sora:wght@550;600&amp;display=swap">
<script>!function(){window.semaphore=window.semaphore||[],window.ketch=function(){window.semaphore.push(arguments)};var e=document.createElement("script");e.type="text/javascript",e.src="https://global.ketchcdn.com/web/v3/config/datastax/langflow_org_web/boot.js",e.defer=e.async=!0,document.getElementsByTagName("head")[0].appendChild(e)}()</script>
<script defer="true">!function(){const e=e=>{if(window.gtag&&e.purposes&&"analytics"in e.purposes&&"targeted_advertising"in e.purposes){const n=!0===e.purposes.analytics?"granted":"denied",t=!0===e.purposes.targeted_advertising?"granted":"denied",a={analytics_storage:n,ad_personalization:t,ad_storage:t,ad_user_data:t};window.gtag("consent","update",a)}};window.ketch&&window.ketch("on","consent",e)}()</script><link rel="stylesheet" href="/assets/css/styles.556d0cc8.css">
<script src="/assets/js/runtime~main.f9deadf0.js" defer="defer"></script>
<script src="/assets/js/main.32dc3196.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/langflow" target="_blank" class="navbar__item navbar__link header-github-link"></a><a href="https://twitter.com/langflow_ai" target="_blank" class="navbar__item navbar__link header-twitter-link"></a><a href="https://discord.gg/EqksyE2EX9" target="_blank" class="navbar__item navbar__link header-discord-link"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite" aria-pressed="false"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/">Welcome to Langflow</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/get-started-installation">Get started</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/basic-prompting">Templates</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/concepts-overview">Concepts</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-overview">Langflow overview</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-playground">Playground</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-components">Components</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-flows">Flows</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-objects">Langflow objects</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-publish">Publish flows</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/embedded-chat-widget">Embedded chat widget</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-file-management">Manage files</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-voice-mode">Voice mode</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/components-agents">Components</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/agents">Agents</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/mcp-server">Model Context Protocol (MCP)</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/configuration-api-keys">Configuration</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/develop-overview">Develop</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/deployment-overview">Deployment</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/api">API reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/integrations-apify">Integrations</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/contributing-community">Contribute</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a href="https://github.com/langflow-ai/langflow/releases/latest" target="_blank" rel="noopener noreferrer" class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false">Changelog</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/troubleshoot">Support</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-ad">
<a href="https://astra.datastax.com/signup?type=langflow" target="_blank" class="menu__link">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cloud"><path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/></svg>
<div class="sidebar-ad-text-container">
<span class="sidebar-ad-text">Use Langflow in the cloud</span>
<span class="sidebar-ad-text sidebar-ad-text-gradient">Sign up for DataStax Langflow</span>
</div>
</a>
</li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Concepts</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Embedded chat widget</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Embedded chat widget</h1></header><style>[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }</style>
<!-- -->
<p>On the <a href="/concepts-publish">Publish pane</a>, the <strong>Embed into site</strong> tab displays code that can be inserted in the <code>&lt;body&gt;</code> of your HTML to interact with your flow.</p>
<p>The chat widget is implemented as a web component called <code>langflow-chat</code> and is loaded from a CDN. For more information, see the <a href="https://github.com/langflow-ai/langflow-embedded-chat" target="_blank" rel="noopener noreferrer">langflow-embedded-chat repository</a>.</p>
<p>For a sandbox example, see the <a href="https://codesandbox.io/p/sandbox/langflow-embedded-chat-example-dv9zpx" target="_blank" rel="noopener noreferrer">Langflow embedded chat CodeSandbox</a>.</p>
<p>The following example includes the minimum required inputs, called <a href="https://react.dev/learn/passing-props-to-a-component" target="_blank" rel="noopener noreferrer">props</a> in React, for using the chat widget in your HTML code, which are <code>host_url</code> and <code>flow_id</code>.
The <code>host_url</code> value must be <code>HTTPS</code>, and may not include a <code>/</code> after the URL.
The <code>flow_id</code> value is found in your Langflow URL.
For a Langflow server running the <a href="/basic-prompting">Basic prompting flow</a> at <code>https://c822-73-64-93-151.ngrok-free.app/flow/dcbed533-859f-4b99-b1f5-16fce884f28f</code>, your chat widget code is similar to the following:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span>&lt;html&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> &lt;head&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> &lt;script src=&quot;https://cdn.jsdelivr.net/gh/logspace-ai/langflow-embedded-chat@main/dist/build/static/js/bundle.min.js&quot;&gt;&lt;/script&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> &lt;/head&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> &lt;body&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> host_url=&quot;https://c822-73-64-93-151.ngrok-free.app&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> flow_id=&quot;dcbed533-859f-4b99-b1f5-16fce884f28f&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> &gt;&lt;/langflow-chat&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span> &lt;/body&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->11</span><div style="display:inline-block;margin-left:16px"><span>&lt;/html&gt;</span></div></div><br></code></div></div>
<p>When this code is embedded within HTML, it becomes a responsive chatbot, powered by the basic prompting flow.</p>
<p><img decoding="async" loading="lazy" alt="Default chat widget" src="/assets/images/chat-widget-default-50fbdf351e2e984e4103a225be85f9a4.png" width="1852" height="2668" class="img_ev3q"></p>
<p>To configure your chat widget further, include additional props.</p>
<p>All props and their types are listed in <a href="https://github.com/langflow-ai/langflow-embedded-chat/blob/main/src/index.tsx" target="_blank" rel="noopener noreferrer">index.tsx</a>.</p>
<p>To add some styling to the chat widget, customize its elements with JSON:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> host_url=&quot;https://c822-73-64-93-151.ngrok-free.app&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> flow_id=&quot;dcbed533-859f-4b99-b1f5-16fce884f28f&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> chat_window_style=&#x27;{</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &quot;backgroundColor&quot;: &quot;#1a0d0d&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &quot;border&quot;: &quot;4px solid #b30000&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &quot;borderRadius&quot;: &quot;16px&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &quot;boxShadow&quot;: &quot;0 8px 32px #b30000&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &quot;color&quot;: &quot;#fff&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &quot;fontFamily&quot;: &quot;Georgia, serif&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &quot;padding&quot;: &quot;16px&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> }&#x27;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> window_title=&quot;Custom Styled Chat&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> height=&quot;600&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> width=&quot;400&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> &gt;&lt;/langflow-chat&gt;</span></div></div><br></code></div></div>
<p>To add a custom <a href="/session-id">session ID</a> value and an API key for authentication to your Langflow server:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span>&lt;html&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> &lt;head&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> &lt;script src=&quot;https://cdn.jsdelivr.net/gh/logspace-ai/langflow-embedded-chat@main/dist/build/static/js/bundle.min.js&quot;&gt;&lt;/script&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> &lt;/head&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> &lt;body&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> host_url=&quot;https://c822-73-64-93-151.ngrok-free.app&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> flow_id=&quot;dcbed533-859f-4b99-b1f5-16fce884f28f&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;YOUR_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> session_id=&quot;YOUR_SESSION_ID&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> &gt;&lt;/langflow-chat&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span> &lt;/body&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->13</span><div style="display:inline-block;margin-left:16px"><span>&lt;/html&gt;</span></div></div><br></code></div></div>
<p>The chat widget requires your flow to contain <strong>Chat Input</strong> and <strong>Chat Output</strong> components for the widget to communicate with it.
Sending a message to Langflow without a <strong>Chat Input</strong> still triggers the flow, but the LLM warns you the message is empty.
<strong>Text Input</strong> and <strong>Text Output</strong> components can send and receive messages with Langflow, but without the ongoing LLM &quot;chat&quot; context.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="embed-the-chat-widget-with-react">Embed the chat widget with React<a href="#embed-the-chat-widget-with-react" class="hash-link" aria-label="Direct link to Embed the chat widget with React" title="Direct link to Embed the chat widget with React"></a></h2>
<p>To use the chat widget in your React application, create a component that loads the widget script and renders the chat interface:</p>
<ol>
<li>Declare your web component and encapsulate it in a React component.</li>
</ol>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span>declare global {</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> namespace JSX {</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> interface IntrinsicElements {</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> &quot;langflow-chat&quot;: any;</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span>export default function ChatWidget({ className }) {</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> return (</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> &lt;div className={className}&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> host_url=&quot;https://c822-73-64-93-151.ngrok-free.app&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> flow_id=&quot;dcbed533-859f-4b99-b1f5-16fce884f28f&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> &gt;&lt;/langflow-chat&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> &lt;/div&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span> );</span></div></div><div><span class="ch-code-line-number">_<!-- -->18</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><br></code></div></div>
<ol start="2">
<li>Place the component anywhere in your code to display the chat widget.</li>
</ol>
<p>For example, in this docset, the React widget component is located at <code>docs &gt; src &gt; components &gt; ChatWidget &gt; index.tsx</code>.
<code>index.tsx</code> includes a script to load the chat widget code from CDN and initialize the <code>ChatWidget</code> component with props pointing to a Langflow server.</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span>import React, { useEffect } from &#x27;react&#x27;;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span>// Component to load the chat widget script</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span>const ChatScriptLoader = () =&gt; {</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> useEffect(() =&gt; {</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> if (!document.querySelector(&#x27;script[src*=&quot;langflow-embedded-chat&quot;]&#x27;)) {</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> const script = document.createElement(&#x27;script&#x27;);</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> script.src = &#x27;https://cdn.jsdelivr.net/gh/langflow-ai/langflow-embedded-chat@main/dist/build/static/js/bundle.min.js&#x27;;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> script.async = true;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> document.body.appendChild(script);</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> }, []);</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> return null;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span>};</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span>declare global {</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> namespace JSX {</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> interface IntrinsicElements {</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> &quot;langflow-chat&quot;: any;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span>export default function ChatWidget({ className }) {</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> return (</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> &lt;div className={className}&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> &lt;ChatScriptLoader /&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> host_url=&quot;https://c822-73-64-93-151.ngrok-free.app&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> flow_id=&quot;dcbed533-859f-4b99-b1f5-16fce884f28f&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> &gt;&lt;/langflow-chat&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> &lt;/div&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span> );</span></div></div><div><span class="ch-code-line-number">_<!-- -->35</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><br></code></div></div>
<ol start="3">
<li>To import the component to your page, add this to your site.</li>
</ol>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>import ChatWidget from &#x27;@site/src/components/ChatWidget&#x27;;</span></div></div><br></code></div></div>
<ol start="4">
<li>To add the widget to your page, include <code>&lt;ChatWidget className=&quot;my-chat-widget&quot; /&gt;</code>.</li>
</ol>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="embed-the-chat-widget-with-angular">Embed the chat widget with Angular<a href="#embed-the-chat-widget-with-angular" class="hash-link" aria-label="Direct link to Embed the chat widget with Angular" title="Direct link to Embed the chat widget with Angular"></a></h2>
<p>To use the chat widget in your <a href="https://angular.dev/overview" target="_blank" rel="noopener noreferrer">Angular</a> application, create a component that loads the widget script and renders the chat interface.</p>
<p>Angular requires you to explicitly allow custom web components like <code>langflow-chat</code> in components, so you must add the <code>&lt;langflow-chat&gt;</code> element to your Angular template and configure Angular to recognize it. Add <code>CUSTOM_ELEMENTS_SCHEMA</code> to your module&#x27;s configuration to enable this.</p>
<p>To add <code>CUSTOM_ELEMENTS_SCHEMA</code> to your module&#x27;s configuration, do the following:</p>
<ol>
<li>Open the module file <code>.module.ts</code> where you want to add the <code>langflow-chat</code> web component.</li>
<li>Import <code>CUSTOM_ELEMENTS_SCHEMA</code> at the top of the <code>.module.ts</code> file:</li>
</ol>
<p><code>import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from &#x27;@angular/core&#x27;;</code></p>
<ol start="3">
<li>Add <code>CUSTOM_ELEMENTS_SCHEMA</code> to the <code>schemas</code> array inside the <code>@NgModule</code> decorator:</li>
</ol>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span>import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from &#x27;@angular/core&#x27;;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span>import { BrowserModule } from &#x27;@angular/platform-browser&#x27;;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span>import { AppComponent } from &#x27;./app.component&#x27;;</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span>@NgModule({</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> declarations: [</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> AppComponent</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> ],</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> imports: [</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> BrowserModule</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> ],</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> schemas: [CUSTOM_ELEMENTS_SCHEMA],</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> providers: [],</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span> bootstrap: [AppComponent]</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span>})</span></div></div><div><span class="ch-code-line-number">_<!-- -->16</span><div style="display:inline-block;margin-left:16px"><span>export class AppModule { }</span></div></div><br></code></div></div>
<ol start="4">
<li>Add the chat widget to your component&#x27;s template by including the <code>langflow-chat</code> element in your component&#x27;s <code>.component.ts</code> file:</li>
</ol>
<p>For style properties that accept <code>JSON</code> objects like <code>chat_window_style</code> and <code>bot_message_style</code>, use Angular&#x27;s property binding syntax <code>[propertyName]</code> to pass them as JavaScript objects.</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span>import { Component } from &#x27;@angular/core&#x27;;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span>@Component({</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> selector: &#x27;app-root&#x27;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> template: `</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> &lt;div class=&quot;container&quot;&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> &lt;h1&gt;Langflow Chat Test&lt;/h1&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> host_url=&quot;https://c822-73-64-93-151.ngrok-free.app&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> flow_id=&quot;dcbed533-859f-4b99-b1f5-16fce884f28f&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> [chat_window_style]=&#x27;{&quot;backgroundColor&quot;: &quot;#ffffff&quot;}&#x27;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> [bot_message_style]=&#x27;{&quot;color&quot;: &quot;#000000&quot;}&#x27;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> [user_message_style]=&#x27;{&quot;color&quot;: &quot;#000000&quot;}&#x27;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> window_title=&quot;Chat with us&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> placeholder=&quot;Type your message...&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> height=&quot;600&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> width=&quot;400&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> chat_position=&quot;bottom-right&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> &gt;&lt;/langflow-chat&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> &lt;/div&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> `,</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> styles: [`</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> .container {</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> padding: 20px;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> text-align: center;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> `]</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span>})</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span>export class AppComponent {</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span> title = &#x27;Langflow Chat Test&#x27;;</span></div></div><div><span class="ch-code-line-number">_<!-- -->31</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><br></code></div></div>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="chat-widget-configuration">Chat widget configuration<a href="#chat-widget-configuration" class="hash-link" aria-label="Direct link to Chat widget configuration" title="Direct link to Chat widget configuration"></a></h2>
<p>Use the widget API to customize your chat widget.</p>
<p>Props with the type <code>JSON</code> need to be passed as stringified JSON, with the format {&quot;key&quot;:&quot;value&quot;}.</p>
<p>All props and their types are listed in <a href="https://github.com/langflow-ai/langflow-embedded-chat/blob/main/src/index.tsx" target="_blank" rel="noopener noreferrer">index.tsx</a>.</p>
<table><thead><tr><th>Prop</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>flow_id</td><td>String</td><td>Required. Identifier for the flow associated with the component.</td></tr><tr><td>host_url</td><td>String</td><td>Required. URL of the host for communication with the chat component.</td></tr><tr><td>api_key</td><td>String</td><td>X-API-Key header to send to Langflow.</td></tr><tr><td>additional_headers</td><td>JSON</td><td>Additional headers to be sent to the Langflow server.</td></tr><tr><td>session_id</td><td>String</td><td>Custom session id to override the random session id.</td></tr><tr><td>height</td><td>Number</td><td>Height of the chat window in pixels.</td></tr><tr><td>width</td><td>Number</td><td>Width of the chat window in pixels.</td></tr><tr><td>chat_position</td><td>String</td><td>Position of chat window, such as <code>top-right</code> or <code>bottom-left</code>.</td></tr><tr><td>start_open</td><td>Boolean</td><td>Whether the chat window should be open by default.</td></tr><tr><td>chat_window_style</td><td>JSON</td><td>Overall chat window appearance.</td></tr><tr><td>chat_trigger_style</td><td>JSON</td><td>Chat trigger button styling.</td></tr><tr><td>bot_message_style</td><td>JSON</td><td>Bot message formatting.</td></tr><tr><td>user_message_style</td><td>JSON</td><td>User message formatting.</td></tr><tr><td>error_message_style</td><td>JSON</td><td>Error message formatting.</td></tr><tr><td>input_style</td><td>JSON</td><td>Chat input field styling.</td></tr><tr><td>input_container_style</td><td>JSON</td><td>Input container styling.</td></tr><tr><td>send_button_style</td><td>JSON</td><td>Send button styling.</td></tr><tr><td>send_icon_style</td><td>JSON</td><td>Send icon styling.</td></tr><tr><td>window_title</td><td>String</td><td>Title displayed in the chat window header.</td></tr><tr><td>placeholder</td><td>String</td><td>Placeholder text for the chat input field.</td></tr><tr><td>placeholder_sending</td><td>String</td><td>Placeholder text while sending a message.</td></tr><tr><td>online</td><td>Boolean</td><td>Whether the chat component is online.</td></tr><tr><td>online_message</td><td>String</td><td>Custom message when chat is online.</td></tr><tr><td>input_type</td><td>String</td><td>Input type for chat messages.</td></tr><tr><td>output_type</td><td>String</td><td>Output type for chat messages.</td></tr><tr><td>output_component</td><td>String</td><td>Output ID when multiple outputs are present.</td></tr><tr><td>chat_output_key</td><td>String</td><td>Which output to display if multiple outputs are available.</td></tr><tr><td>tweaks</td><td>JSON</td><td>Additional custom adjustments for the flow.</td></tr></tbody></table></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/concepts-publish"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Publish flows</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/concepts-file-management"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Manage files</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#embed-the-chat-widget-with-react" class="table-of-contents__link toc-highlight">Embed the chat widget with React</a></li><li><a href="#embed-the-chat-widget-with-angular" class="table-of-contents__link toc-highlight">Embed the chat widget with Angular</a></li><li><a href="#chat-widget-configuration" class="table-of-contents__link toc-highlight">Chat widget configuration</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><div class="footer-links">
<span>© 2025 Langflow</span>
<span id="preferenceCenterContainer"> ·&nbsp; <a href="https://langflow.org/preferences">Manage Privacy Choices</a></span>
</div></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/lf-docs-light.svg" alt="Langflow" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="160" height="40"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="160" height="40"></div></div></div></footer><div style="position:fixed;right:20px;bottom:20px;z-index:100;display:flex;align-items:center;gap:10px;cursor:pointer"><div style="background-color:#f6f6f6;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,0.1)"><img src="/img/langflow-icon-black-transparent.svg" style="width:40px" alt="Search"></div></div></div>
</body>
</html>