Files
langflow/concepts-publish.html
github-merge-queue[bot] abb6ec69be deploy: 61a323d97d
2025-08-27 18:54:40 +00:00

225 lines
86 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/concepts-publish" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
<title data-rh="true">Trigger flows with the Langflow API | 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/concepts-publish"><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="Trigger flows with the Langflow API | Langflow Documentation"><meta data-rh="true" name="description" content="After you build a flow, you probably want to run it within an application, such as a chatbot within a mobile app or website."><meta data-rh="true" property="og:description" content="After you build a flow, you probably want to run it within an application, such as a chatbot within a mobile app or website."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/concepts-publish"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/concepts-publish" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/concepts-publish" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://UZK6BDPCVY-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Trigger flows with the Langflow API","item":"https://docs.langflow.org/concepts-publish"}]}</script><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">
<script>!function(){var e="analytics",t=window[e]=window[e]||[];if(!t.initialize)if(t.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{t.invoked=!0,t.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"],t.factory=function(n){return function(){if(window[e].initialized)return window[e][n].apply(window[e],arguments);var r=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(n)>-1){var i=document.querySelector("link[rel='canonical']");r.push({__t:"bpc",c:i&&i.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}return r.unshift(n),t.push(r),t}};for(var n=0;n<t.methods.length;n++){var r=t.methods[n];t[r]=t.factory(r)}t.load=function(n,r){var i=document.createElement("script");i.type="text/javascript",i.async=!0,i.setAttribute("data-global-segment-analytics-key",e),i.src="https://cdn.segment.com/analytics.js/v1/"+n+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(i,a),t._loadOptions=r},t._writeKey="60AfGDrVxy8nAGJngo3fCYWG4LvhMAlG",t.SNIPPET_VERSION="5.2.0",t.load("60AfGDrVxy8nAGJngo3fCYWG4LvhMAlG"),t.page()}}()</script>
<script>window.__SCROLL_TRACKING_CONFIG__={selectors:[{selector:"h1, h2, h3, h4, h5, h6",eventName:"Docs.langflow.org - Heading Viewed",properties:{element_type:"heading"}},{selector:".ch-codeblock",eventName:"Docs.langflow.org - Codeblock Viewed",properties:{element_type:"code",language:"helper:codeLanguage"}}]}</script>
<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.40667d1b.css">
<script src="/assets/js/runtime~main.77c6ff16.js" defer="defer"></script>
<script src="/assets/js/main.6b3faa68.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),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="theme-layout-navbar navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="theme-layout-navbar-left 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="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/langflow" target="_blank" class="navbar__item navbar__link header-github-link" data-event="Docs.langflow.org - Social Clicked" data-platform="github"></a><a href="https://twitter.com/langflow_ai" target="_blank" class="navbar__item navbar__link header-twitter-link" data-event="Docs.langflow.org - Social Clicked" data-platform="x"></a><a href="https://discord.gg/EqksyE2EX9" target="_blank" class="navbar__item navbar__link header-discord-link" data-event="Docs.langflow.org - Social Clicked" data-platform="discord"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP 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" aria-hidden="true" class="toggleIcon_g3eP 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><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></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="theme-layout-main 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="/about-langflow">Get started</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">Flows</a></div><ul 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">Use the visual editor</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">Build flows</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 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" tabindex="0" href="/concepts-publish">Run flows</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/concepts-publish">Trigger flows with the Langflow API</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/webhook">Trigger flows with webhooks</a></li></ul></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">Test 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-flows-import">Import and export flows</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="/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-client">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="/api-keys-and-authentication">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">Deploy</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="/concepts-components">Components 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="/api-reference-api-examples">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="/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 class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/release-notes">Release notes</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://www.langflow.org/desktop" target="_blank" class="menu__link">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1645_37)">
<path d="M12 17H20C21.1046 17 22 16.1046 22 15V13M12 17H4C2.89543 17 2 16.1046 2 15V5C2 3.89543 2.89543 3 4 3H10M12 17V21M8 21H12M12 21H16M11.75 10.2917H13.2083L16.125 7.375H17.5833L20.5 4.45833H21.9583M16.125 11.75H17.5833L20.5 8.83333H21.9583M11.75 5.91667H13.2083L16.125 3H17.5833" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_1645_37">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>
<div class="sidebar-ad-text-container">
<span class="sidebar-ad-text">Get started in minutes</span>
<span class="sidebar-ad-text sidebar-ad-text-gradient">Download Langflow Desktop</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"><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">Flows</span></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Run flows</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Trigger flows with the Langflow API</span></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>Trigger flows with the Langflow API</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>After you build a flow, you probably want to run it within an application, such as a chatbot within a mobile app or website.</p>
<p>Langflow provides several ways to run flows from external applications:</p>
<ul>
<li><a href="#api-access">Trigger flows with the Langflow API</a></li>
<li><a href="#embedded-chat-widget">Add an embedded chat widget to a website</a></li>
<li><a href="#serve-flows-through-a-langflow-mcp-server">Serve flows through a Langflow MCP server</a></li>
</ul>
<p>Although you can use these options with an isolated, local Langflow instance, they are typically more valuable when you have <a href="/deployment-overview">deployed a Langflow server</a> or <a href="/develop-application">packaged Langflow as a dependency of an application</a>.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="api-access">Use the Langflow API to run flows<a href="#api-access" class="hash-link" aria-label="Direct link to Use the Langflow API to run flows" title="Direct link to Use the Langflow API to run flows"></a></h2>
<p>The Langflow API is the primary way to access your flows and Langflow servers programmatically.</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>Try it</div><div class="admonitionContent_BuS1"><p>For an example of a script that calls the Langflow API, see the <a href="/get-started-quickstart">Quickstart</a>.</p></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="generate-api-code-snippets">Generate API code snippets<a href="#generate-api-code-snippets" class="hash-link" aria-label="Direct link to Generate API code snippets" title="Direct link to Generate API code snippets"></a></h3>
<p>To help you embed Langflow API requests in your scripts, Langflow automatically generates Python, JavaScript, and curl code snippets for your flows.
To get these code snippets, do the following:</p>
<ol>
<li>
<p>In Langflow, open the flow that you want to embed in your application.</p>
</li>
<li>
<p>Click <strong>Share</strong>, and then select <strong>API access</strong>.</p>
<p>These code snippets call the <code>/v1/run/$FLOW_ID</code> endpoint, and they automatically populate minimum values, like the Langflow server URL, flow ID, headers, and request parameters.</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>Windows</div><div class="admonitionContent_BuS1"><p>The paths generated by the API access pane assume a *nix environment.
If you use Microsoft Windows or WSL, you might need to adjust the filepaths given in the code snippets.</p></div></div>
<p><img decoding="async" loading="lazy" alt="API access pane" src="/assets/images/api-pane-9cb07c8f812374268f94e3f8e65c6be3.png" width="4000" height="2212" class="img_ev3q"></p>
</li>
<li>
<p>Optional: Click <a href="#input-schema"><strong>Input Schema</strong></a> to modify component parameters in the code snippets without changing the flow itself.</p>
</li>
<li>
<p>Copy the snippet for the language that you want to use.</p>
</li>
<li>
<p>Run the snippet as is, or use the snippet in the context of a larger script.</p>
</li>
</ol>
<p>For more information and examples of other Langflow API endpoints, see <a href="/api-reference-api-examples">Get started with the Langflow API</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="langflow-api-authentication">Langflow API authentication<a href="#langflow-api-authentication" class="hash-link" aria-label="Direct link to Langflow API authentication" title="Direct link to Langflow API authentication"></a></h3>
<p>In Langflow versions 1.5 and later, most API endpoints require authentication with a Langflow API key.</p>
<p>Code snippets generated in the <strong>API access</strong> pane include a script that checks for a <code>LANGFLOW_API_KEY</code> environment variable set in the local terminal session.
This script doesn&#x27;t check for Langflow API keys set anywhere besides the local terminal session.</p>
<p>For this script to work, you must set a <code>LANGFLOW_API_KEY</code> variable in the terminal session where you intend to run the code snippet, such as <code>export LANGFLOW_API_KEY=&quot;sk...&quot;</code>.</p>
<p>Alternatively, you can edit the code snippet to include an <code>x-api-key</code> header and ensure that the request can authenticate to the Langflow API.</p>
<p>For more information, see <a href="/api-keys-and-authentication">API keys and authentication</a> and <a href="/api-reference-api-examples">Get started with the Langflow API</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="input-schema">Input Schema (tweaks)<a href="#input-schema" class="hash-link" aria-label="Direct link to Input Schema (tweaks)" title="Direct link to Input Schema (tweaks)"></a></h3>
<p>Tweaks are one-time overrides that modify component parameters at runtime, rather than permanently modifying the flow itself.
For an example of tweaks in a script, see the <a href="/get-started-quickstart">Quickstart</a>.</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>Tweaks make your flows more dynamic and reusable.</p><p>You can create one flow and use it for multiple applications by passing application-specific tweaks in each application&#x27;s Langflow API requests.</p></div></div>
<p>In the <strong>API access</strong> pane, click <strong>Input Schema</strong> to add <code>tweaks</code> to the request payload in a flow&#x27;s code snippets.</p>
<p>Changes to a flow&#x27;s <strong>Input Schema</strong> are saved exclusively as tweaks for that flow&#x27;s <strong>API access</strong> code snippets.
These tweaks don&#x27;t change the flow parameters set in the <a href="/concepts-overview#workspace">workspace</a>, and they don&#x27;t apply to other flows.</p>
<p>Adding tweaks through the <strong>Input Schema</strong> can help you troubleshoot formatting issues with tweaks that you manually added to Langflow API requests.</p>
<p>For example, the following curl command includes a tweak that disables the <strong>Store Messages</strong> setting in a flow&#x27;s <strong>Chat Input</strong> component:</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">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span>curl --request POST \</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> --url &quot;http://LANGFLOW_SERVER_ADDRESS/api/v1/run/FLOW_ID&quot; \</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> --header &quot;Content-Type: application/json&quot; \</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> --header &quot;x-api-key: LANGFLOW_API_KEY&quot; \</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> --data &#x27;{</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> &quot;input_value&quot;: &quot;Text to input to the flow&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> &quot;output_type&quot;: &quot;chat&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> &quot;input_type&quot;: &quot;chat&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> &quot;tweaks&quot;: {</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> &quot;ChatInput-4WKag&quot;: {</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> &quot;should_store_message&quot;: false</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->14</span><div style="display:inline-block;margin-left:16px"><span>}&#x27;</span></div></div><br></code></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="use-a-flow-id-alias">Use a flow ID alias<a href="#use-a-flow-id-alias" class="hash-link" aria-label="Direct link to Use a flow ID alias" title="Direct link to Use a flow ID alias"></a></h3>
<p>If you want your requests to use an alias instead of the actual flow ID, you can rename the flow&#x27;s <code>/v1/run/$FLOW_ID</code> endpoint:</p>
<ol>
<li>
<p>In Langflow, open the flow, click <strong>Share</strong>, and then select <strong>API access</strong>.</p>
</li>
<li>
<p>Click <strong>Input Schema</strong>.</p>
</li>
<li>
<p>In the <strong>Endpoint Name</strong> field, enter an alias for your flow&#x27;s ID, such as a memorable, human-readable name.</p>
<p>The name can contain only letters, numbers, hyphens, and underscores, such as <code>flow-customer-database-agent</code>.</p>
</li>
<li>
<p>To save the change, close the <strong>Input Schema</strong> pane.</p>
</li>
</ol>
<p>The automatically generated code snippets now use your new endpoint name instead of the original flow ID, such as <code>url = &quot;http://localhost:7868/api/v1/run/flow-customer-database-agent&quot;</code>.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="embedded-chat-widget">Embed a flow into a website<a href="#embedded-chat-widget" class="hash-link" aria-label="Direct link to Embed a flow into a website" title="Direct link to Embed a flow into a website"></a></h2>
<p>For each flow, Langflow provides a code snippet that you can insert into the <code>&lt;body&gt;</code> of your website&#x27;s HTML to interact with your flow through an embedded chat widget.</p>
<div class="theme-admonition theme-admonition-important admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Required components</div><div class="admonitionContent_BuS1"><p>The chat widget only supports flows that have <strong>Chat Input</strong> and <strong>Chat Output</strong> components, which are required for the chat experience.
<strong>Text Input</strong> and <strong>Text Output</strong> components can send and receive messages, but they don&#x27;t include ongoing LLM chat context.</p><p>Attempting to chat with a flow that doesn&#x27;t have <a href="/components-io"><strong>Chat Input</strong> component</a> will trigger the flow, but the response only indicates that the input was empty.</p></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="get-a-langflow-chat-snippet">Get a langflow-chat snippet<a href="#get-a-langflow-chat-snippet" class="hash-link" aria-label="Direct link to Get a langflow-chat snippet" title="Direct link to Get a langflow-chat snippet"></a></h3>
<p>To get a flow&#x27;s embedded chat widget code snippet, do the following:</p>
<ol>
<li>In Langflow, open the flow you want to embed.</li>
<li>Click <strong>Share</strong>, and then select <strong>Embed into site</strong>.</li>
<li>Copy the code snippet and use it in the <code>&lt;body&gt;</code> of your website&#x27;s HTML.
For more information, see <a href="#embed-the-chat-widget">Embed the chat widget with React, Angular, or HTML</a>.</li>
<li>Add the <code>api_key</code> prop to ensure the widget has permission to run the flow, as explained in <a href="#configure-the-langflow-chat-web-component">Configure the langflow-chat web component</a>.</li>
</ol>
<p>The chat widget is implemented as a web component called <code>langflow-chat</code> that 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 example, the following HTML embeds a chat widget for a <strong>Basic Prompting</strong> template flow hosted on a Langflow server deployed on ngrok:</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">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;html&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span> &lt;head&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span> &lt;script src=&quot;https://cdn.jsdelivr.net/gh/langflow-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">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span> &lt;/head&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span> &lt;body&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</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">_<!-- -->12</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">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</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">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span> &lt;/body&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</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 deployed to a live site, it renders as a responsive chatbot.
If a user interacts with the chatbot, the input triggers the specified flow, and then the chatbot returns the output from the flow run.</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>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>Try it</div><div class="admonitionContent_BuS1"><p>Use the <a href="https://codesandbox.io/p/sandbox/langflow-embedded-chat-example-dv9zpx" target="_blank" rel="noopener noreferrer">Langflow embedded chat CodeSandbox</a> for an interactive live demo of the embedded chat widget that uses your own flow.
For more information, see the <a href="https://github.com/langflow-ai/langflow-embedded-chat?tab=readme-ov-file#live-example" target="_blank" rel="noopener noreferrer">langflow-embedded-chat README</a>.</p></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="embed-the-chat-widget">Embed the chat widget with React, Angular, or HTML<a href="#embed-the-chat-widget" class="hash-link" aria-label="Direct link to Embed the chat widget with React, Angular, or HTML" title="Direct link to Embed the chat widget with React, Angular, or HTML"></a></h3>
<p>The following examples show how to use embedded chat widget in React, Angular, and plain HTML.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">React</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Angular</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTML</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><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>
<p>Declare your web component, and then encapsulate it in a React component:</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">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>//Declaration of langflow-chat web component</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>declare global {</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>namespace JSX {</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span> interface IntrinsicElements {</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</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">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>//Definition for langflow-chat React component</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</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">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>return (</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</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">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</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">_<!-- -->21</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">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</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">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span> &lt;/div&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>);</span></div></div><div><span class="ch-code-line-number">_<!-- -->21</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><br></code></div></div>
</li>
<li>
<p>Place the component anywhere in your code to render the chat widget.</p>
<p>In the following example, the React widget component is located at <code>docs/src/components/ChatWidget/index.tsx</code>, and <code>index.tsx</code> includes a script to load the chat widget code from CDN, along with the declaration and definition from the previous step:</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">_<!-- -->38</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">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->38</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">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>const ChatScriptLoader = () =&gt; {</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>useEffect(() =&gt; {</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</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">_<!-- -->38</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">_<!-- -->38</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">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> script.async = true;</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> document.body.appendChild(script);</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>}, []);</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>return null;</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>};</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>//Declaration of langflow-chat web component</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>declare global {</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>namespace JSX {</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> interface IntrinsicElements {</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</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">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>//Definition for langflow-chat React component</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</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">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>return (</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</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">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> &lt;ChatScriptLoader /&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</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">_<!-- -->38</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">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</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">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span> &lt;/div&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>);</span></div></div><div><span class="ch-code-line-number">_<!-- -->38</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><br></code></div></div>
</li>
<li>
<p>Import the <code>langflow-chat</code> React component to make it available for use on a page.
Modify the following import statement with your React component&#x27;s name and path:</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">_<!-- -->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>
</li>
<li>
<p>To display the widget, call your <code>langflow-chat</code> component in the desired location on the page.
Modify the following reference for your React component&#x27;s name and the desired <code>className</code>:</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">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&lt;ChatWidget className=&quot;my-chat-widget&quot; /&gt;</span></div></div><br></code></div></div>
</li>
</ol></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>To use the chat widget in your Angular application, create a component that loads the widget script and renders the chat interface.</p><p>In an Angular application, <code>langflow-chat</code> is a custom web component that you must explicitly allow in your site&#x27;s <code>.components.ts</code>.
Therefore, to use the embedded chat widget, you must add <code>CUSTOM_ELEMENTS_SCHEMA</code> to your module&#x27;s configuration, and then integrate the <code>&lt;langflow-chat&gt;</code> element.</p><p>Angular requires you to explicitly allow custom web components, like <code>langflow-chat</code>, in your site&#x27;s <code>components</code>.
Therefore, you must add the <code>&lt;langflow-chat&gt;</code> element to your Angular template and configure Angular to recognize it.
You must add <code>CUSTOM_ELEMENTS_SCHEMA</code> to your module&#x27;s configuration to enable this.</p><ol>
<li>
<p>In your Angular application, edit the <code>.module.ts</code> file where you want to add the <code>langflow-chat</code> web component.</p>
</li>
<li>
<p>At the top of <code>.module.ts</code>, import <code>CUSTOM_ELEMENTS_SCHEMA</code>:</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">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from &#x27;@angular/core&#x27;;</span></div></div><br></code></div></div>
</li>
<li>
<p>In the <code>@NgModule</code> decorator, add <code>CUSTOM_ELEMENTS_SCHEMA</code> to the <code>schemas</code> array:</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>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>
</li>
<li>
<p>Edit the <code>.component.ts</code> file where you want to use the embedded chat widget.</p>
</li>
<li>
<p>In the <code>@Component</code> decorator, add the <code>&lt;langflow-chat&gt;</code> element to the <code>template</code> key:</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">_<!-- -->24</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">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span>@Component({</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</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">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span>template: `</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</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">_<!-- -->24</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">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</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">_<!-- -->24</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">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</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">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span> &lt;/div&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span>`,</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span>styles: [`</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span> .container {</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span> padding: 20px;</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span> text-align: center;</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span>`]</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span>})</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span>export class AppComponent {</span></div></div><div><span class="ch-code-line-number">_<!-- -->24</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">_<!-- -->24</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><br></code></div></div>
</li>
</ol></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><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">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;html lang=&quot;en&quot;&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;head&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;script src=&quot;https://cdn.jsdelivr.net/gh/langflow-ai/langflow-embedded-chat@v1.0.7/dist/build/static/js/bundle.min.js&quot;&gt;&lt;/script&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;/head&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;body&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</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">_<!-- -->12</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">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</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">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;/body&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->12</span><div style="display:inline-block;margin-left:16px"><span>&lt;/html&gt;</span></div></div><br></code></div></div></div></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="configure-the-langflow-chat-web-component">Configure the langflow-chat web component<a href="#configure-the-langflow-chat-web-component" class="hash-link" aria-label="Direct link to Configure the langflow-chat web component" title="Direct link to Configure the langflow-chat web component"></a></h3>
<p>To use the embedded chat widget in your HTML, the <code>langflow-chat</code> web component must include the following minimum inputs (also known as <em>props</em> in React):</p>
<ul>
<li><code>host_url</code>: Your Langflow server URL. Must be <code>HTTPS</code>. Don&#x27;t include a trailing slash (<code>/</code>).</li>
<li><code>flow_id</code>: The ID of the flow you want to embed.</li>
<li><code>api_key</code>: A <a href="/api-keys-and-authentication">Langflow API key</a>.
This prop is recommended to ensure the widget has permission to run the flow.</li>
</ul>
<p>The minimum inputs are automatically populated in the <a href="#get-a-langflow-chat-snippet"><strong>Embed into site</strong> code snippet</a> that is generated by Langflow.</p>
<p>You can use additional inputs (props) to modify the embedded chat widget.
For a list of all props, types, and descriptions, see the <a href="https://github.com/langflow-ai/langflow-embedded-chat?tab=readme-ov-file#configuration" target="_blank" rel="noopener noreferrer">langflow-embedded-chat README</a>.</p>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Example: Langflow API key prop</summary><div><div class="collapsibleContent_i85q"><p>The <code>api_key</code> prop stores a Langflow API key that the chat widget can use to authenticate the underlying Langflow API request.</p><p>The Langflow team recommends following industry best practices for handling sensitive credentials.
For example, securely store your API key, and then retrieve with an environment variable:</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">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</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">_<!-- -->10</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">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&gt;&lt;/langflow-chat&gt;</span></div></div><br></code></div></div></div></div></details>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Example: Style props</summary><div><div class="collapsibleContent_i85q"><p>There are many props you can use to customize the style and positioning of the embedded chat widget.
Many of these props are of type JSON, and they require specific formatting, depending on where you embed the <code>langflow-chat</code> web component.</p><p>In React and plain HTML, JSON props are expressed as JSON objects or stringified JSON, such as <code>\{&quot;key&quot;:&quot;value&quot;\}</code>:</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">_<!-- -->17</span><div style="display:inline-block;margin-left:16px"><span>&lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->17</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">_<!-- -->17</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">_<!-- -->17</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->17</span><div style="display:inline-block;margin-left:16px"><span> chat_window_style=&#x27;{</span></div></div><div><span class="ch-code-line-number">_<!-- -->17</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">_<!-- -->17</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">_<!-- -->17</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">_<!-- -->17</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">_<!-- -->17</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">_<!-- -->17</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">_<!-- -->17</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">_<!-- -->17</span><div style="display:inline-block;margin-left:16px"><span> }&#x27;</span></div></div><div><span class="ch-code-line-number">_<!-- -->17</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">_<!-- -->17</span><div style="display:inline-block;margin-left:16px"><span> height=&quot;600&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->17</span><div style="display:inline-block;margin-left:16px"><span> width=&quot;400&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->17</span><div style="display:inline-block;margin-left:16px"><span>&gt;&lt;/langflow-chat&gt;</span></div></div><br></code></div></div><p>For Angular applications, use <a href="https://angular.dev/guide/templates/binding#binding-dynamic-properties-and-attributes" target="_blank" rel="noopener noreferrer">property binding syntax</a> to pass JSON props as JavaScript objects.
For example:</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">_<!-- -->30</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">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span>@Component({</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</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">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> template: `</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</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">_<!-- -->30</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">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</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">_<!-- -->30</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">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</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">_<!-- -->30</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">_<!-- -->30</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">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> height=&quot;600&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> width=&quot;400&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</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">_<!-- -->30</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">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> &lt;/div&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> `,</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> styles: [`</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> .container {</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> padding: 20px;</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> text-align: center;</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span> `]</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span>})</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span>export class AppComponent {</span></div></div><div><span class="ch-code-line-number">_<!-- -->30</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">_<!-- -->30</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><br></code></div></div></div></div></details>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Example: Session ID prop</summary><div><div class="collapsibleContent_i85q"><p>The following example adds a custom <a href="/session-id">session ID</a> to help identify flow runs started by the embeded chat widget:</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">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</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">_<!-- -->10</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">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> session_id=&quot;$SESSION_ID&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&gt;&lt;/langflow-chat&gt;</span></div></div><br></code></div></div></div></div></details>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Example: Tweaks prop</summary><div><div class="collapsibleContent_i85q"><p>Use the <code>tweaks</code> prop to modify flow parameters at runtime.
The available keys for the <code>tweaks</code> object depend on the flow you are serving through the embedded chat widget.</p><p>In React and plain HTML, <code>tweaks</code> are declared as a JSON object, similar to how you would pass them to a Langflow API endpoint like <a href="/api-flows-run#run-flow"><code>/v1/run/$FLOW_ID</code></a>.
For example:</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">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</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">_<!-- -->10</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">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> tweaks=&#x27;{</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;model_name&quot;: &quot;llama-3.1-8b-instant&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> }&#x27;</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&gt;&lt;/langflow-chat&gt;</span></div></div><br></code></div></div><p>For Angular applications, use <a href="https://angular.dev/guide/templates/binding#binding-dynamic-properties-and-attributes" target="_blank" rel="noopener noreferrer">property binding syntax</a> to pass JSON props as JavaScript objects.
For example:</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">_<!-- -->25</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">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span>@Component({</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</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">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> template: `</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</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">_<!-- -->25</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">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> &lt;langflow-chat</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</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">_<!-- -->25</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">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> api_key=&quot;$LANGFLOW_API_KEY&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> [tweaks]=&#x27;{&quot;model_name&quot;: &quot;llama-3.1-8b-instant&quot;}&#x27;</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</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">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> &lt;/div&gt;</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> `,</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> styles: [`</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> .container {</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> padding: 20px;</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> text-align: center;</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span> `]</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span>})</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span>export class AppComponent {</span></div></div><div><span class="ch-code-line-number">_<!-- -->25</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">_<!-- -->25</span><div style="display:inline-block;margin-left:16px"><span>}</span></div></div><br></code></div></div></div></div></details>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="serve-flows-through-a-langflow-mcp-server">Serve flows through a Langflow MCP server<a href="#serve-flows-through-a-langflow-mcp-server" class="hash-link" aria-label="Direct link to Serve flows through a Langflow MCP server" title="Direct link to Serve flows through a Langflow MCP server"></a></h2>
<p>Each <a href="/concepts-flows#projects">Langflow project</a> has an MCP server that exposes the project&#x27;s flows as <a href="https://modelcontextprotocol.io/docs/concepts/tools" target="_blank" rel="noopener noreferrer">tools</a> that <a href="https://modelcontextprotocol.io/clients" target="_blank" rel="noopener noreferrer">MCP clients</a> can use to generate responses.</p>
<p>In addition to serving flows through Langflow MCP servers, you can use Langflow as an MCP client to access any MCP server, including Langflow MCP servers.</p>
<p>Interactions with Langflow MCP servers happen through the Langflow API&#x27;s <code>/mcp</code> endpoints.</p>
<p>For more information, see <a href="/mcp-server">Use Langflow as an MCP server</a> and <a href="/mcp-client">Use Langflow as an MCP client</a>.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="see-also">See also<a href="#see-also" class="hash-link" aria-label="Direct link to See also" title="Direct link to See also"></a></h2>
<ul>
<li><a href="/concepts-flows-import">Import and export flows</a></li>
<li><a href="/api-files">Files endpoints</a></li>
<li><a href="/concepts-playground">Test flows in the Playground</a></li>
</ul></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/concepts-flows"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Build flows</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/webhook"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Trigger flows with webhooks</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="#api-access" class="table-of-contents__link toc-highlight">Use the Langflow API to run flows</a><ul><li><a href="#generate-api-code-snippets" class="table-of-contents__link toc-highlight">Generate API code snippets</a></li><li><a href="#langflow-api-authentication" class="table-of-contents__link toc-highlight">Langflow API authentication</a></li><li><a href="#input-schema" class="table-of-contents__link toc-highlight">Input Schema (tweaks)</a></li><li><a href="#use-a-flow-id-alias" class="table-of-contents__link toc-highlight">Use a flow ID alias</a></li></ul></li><li><a href="#embedded-chat-widget" class="table-of-contents__link toc-highlight">Embed a flow into a website</a><ul><li><a href="#get-a-langflow-chat-snippet" class="table-of-contents__link toc-highlight">Get a langflow-chat snippet</a></li><li><a href="#embed-the-chat-widget" class="table-of-contents__link toc-highlight">Embed the chat widget with React, Angular, or HTML</a></li><li><a href="#configure-the-langflow-chat-web-component" class="table-of-contents__link toc-highlight">Configure the langflow-chat web component</a></li></ul></li><li><a href="#serve-flows-through-a-langflow-mcp-server" class="table-of-contents__link toc-highlight">Serve flows through a Langflow MCP server</a></li><li><a href="#see-also" class="table-of-contents__link toc-highlight">See also</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column 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></footer><div style="position:fixed;right:21px;bottom:21px;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>