Langflow website screenshot

Langflow

Langflow is an open-source low-code visual builder for AI agents, RAG pipelines, and LangChain-based workflows. It pairs a drag-and-drop React Flow frontend with a FastAPI backend that exposes every flow as a REST API, an MCP server, and an OpenAI-compatible Responses endpoint. Components are editable Python and ship with integrations across most major LLMs, vector stores, and observability platforms. Langflow was acquired by DataStax in 2025; DataStax itself was acquired by IBM and the deal closed on May 28, 2025, making Langflow an IBM property while remaining MIT-licensed open source. The project is the canonical reference implementation for visually composing LangChain agents — 149k+ GitHub stars, distributed via PyPI, Docker, Helm, and native Desktop apps, with a hosted cloud option run by DataStax.

13 APIs 22 Features
AIArtificial IntelligenceAgentsWorkflowsLow-CodeVisual BuilderLangChainRAGMCPOpen SourceFastAPI

APIs

Langflow API

Langflow's FastAPI-based REST API exposes every capability of a running Langflow server — running flows, building flows, managing projects, files, users, API keys, MCP servers, ...

Langflow Flows API

Create, read, update, delete, upload, download, and list flows. A flow is the canonical Langflow unit — a directed graph of components representing an AI agent or workflow. Incl...

Langflow Run API

Execute a flow by id or name via POST `/api/v1/run/{flow_id_or_name}` (simplified), POST `/api/v1/run/advanced/{flow_id_or_name}` (experimental advanced), or POST `/api/v1/webho...

Langflow Build API

Build endpoints run a flow with full vertex-level streaming. POST `/api/v1/build/{flow_id}/flow` kicks off a build job and returns a job id; GET `/api/v1/build/{job_id}/events` ...

Langflow Projects API

Create, list, read, update, delete, upload, and download Langflow projects. Projects are containers that group flows and provide MCP server installation context.

Langflow Files API

Upload, download, list, and delete files attached to a flow (v1) or to the authenticated user (v2). The v2 Files API supports batch upload/download, batch delete, and profile-pi...

Langflow Monitor API

Inspect and manage execution history — vertex builds, chat messages, sessions, and shared sessions. Supports listing, updating, renaming, and deleting messages and entire sessio...

Langflow Traces API

Retrieve and delete execution traces. GET `/api/v1/monitor/traces` lists traces with flow-id filtering; GET `/api/v1/monitor/traces/{trace_id}` returns a single trace. Integrate...

Langflow Users API

User management endpoints — create, read, patch, and delete users; `/api/v1/users/whoami` returns the current authenticated user; reset-password endpoint for superuser-driven cr...

Langflow MCP API

Manage MCP (Model Context Protocol) servers attached to Langflow projects and globally. Every Langflow project can be exposed as an MCP server so its flows are callable as MCP t...

Langflow Workflow API

v2 Workflow execution API — POST `/api/v2/workflows` executes a workflow; GET returns workflow status; POST `/api/v2/workflows/stop` halts a running workflow. The v2 workflow su...

Langflow OpenAI Responses API

OpenAI-compatible Responses endpoint at POST `/api/v1/responses`. Lets clients written against OpenAI's Responses API point at a Langflow flow without code changes — the flow pl...

Langflow API Keys API

Create, list, rotate, and delete Langflow API keys. Keys authenticate requests against any of the Langflow REST endpoints via the `x-api-key` header. Also creatable via the `lan...

Collections

Langflow

OPEN

Features

Visual drag-and-drop builder for AI agents, RAG pipelines, and LangChain workflows
FastAPI-based REST API with OpenAPI 3.1 spec served at /docs and /openapi.json on every deployment
67 REST endpoints covering flows, builds, projects, files, users, API keys, MCP servers, monitoring, and traces
OpenAI-compatible Responses endpoint (/api/v1/responses) so OpenAI clients can target a Langflow flow
Webhook execution endpoint per flow for event-driven invocation
Streaming flow execution via SSE on the build endpoints
Native MCP (Model Context Protocol) server — every Langflow project is exposable as an MCP server
MCP client support for consuming external MCP servers as Langflow components
Project / flow / component hierarchy with import-export, batch operations, and public-flow sharing
Session-aware chat with shared sessions for read-only collaboration
Built-in trace explorer plus integrations with LangSmith and LangFuse for observability
Pluggable Python components — every component's source is editable in the UI
Multi-agent orchestration with conditional routing and tool calls
Vector-store integrations including Astra DB, Chroma, Pinecone, Milvus, Weaviate, Qdrant, and pgvector
LLM integrations including OpenAI, Anthropic, Google, Azure, Bedrock, Mistral, Cohere, Hugging Face, Ollama, and Groq
File upload and per-user file management with batch operations (v2 Files API)
API key authentication via `x-api-key` header or query parameter
Auto-login mode for local dev and superuser mode for production
Distributed by Python package on PyPI (`pip install langflow`), Docker image (`langflowai/langflow:latest`), Helm chart, and Desktop app for macOS and Windows
MIT-licensed, written in Python (FastAPI backend) and TypeScript (React Flow frontend)
149k+ GitHub stars, v1.9.3 (May 2026) — actively maintained by langflow-ai with 800+ contributors
Hosted Langflow Cloud offering operated by IBM DataStax (post-acquisition)

Semantic Vocabularies

Langflow Context

27 classes · 13 properties

JSON-LD

API Governance Rules

Langflow API Rules

6 rules · 3 warnings 1 info

SPECTRAL

JSON Structure

Langflow Flow Structure

10 properties

JSON STRUCTURE

Example Payloads

Langflow Create Flow Example

2 fields

EXAMPLE

Langflow Run Flow Example

2 fields

EXAMPLE

Langflow Webhook Example

2 fields

EXAMPLE

Resources

🌐
Portal
Portal
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
🚀
GettingStarted
GettingStarted
🔗
Documentation
Documentation
🔑
Authentication
Authentication
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
📄
ChangeLog
ChangeLog
💻
SourceCode
SourceCode
👥
GitHubOrganization
GitHubOrganization
🔗
License
License
📄
ChangeLog
ChangeLog
🔗
IssueTracker
IssueTracker
🔗
Documentation
Documentation
🔗
HelmChart
HelmChart
🔧
Tools
Tools
📦
SDKs
SDKs
🔗
Deployment
Deployment
🔧
Tools
Tools
🔧
Tools
Tools
💻
CodeExamples
CodeExamples
🔧
Tools
Tools
🔗
Package
Package
🔗
Container
Container
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Forums
Forums
🔗
Video
Video
🔗
Twitter
Twitter
🔗
LinkedIn
LinkedIn
📰
Blog
Blog
📰
Newsletter
Newsletter
🔗
Owner
Owner

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Langflow
  version: 1.9.0
items:
- info:
    name: Base
    type: folder
  items:
  - info:
      name: Get All
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/all'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Retrieve all component types with compression for better performance.<br><br>Returns a compressed response containing
      all available component types.
  - info:
      name: Get Config
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/config'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: 'Retrieve application configuration settings.<br><br>Returns different configuration based on authentication status:<br>-
      Authenticated users: Full ConfigResponse with all settings<br>- Unauthenticated users: PublicConfigResponse with limited,
      safe-to-expose settings<br><br>Args:<br>    user: The authenticated user, or None if unauthenticated.<br><br>Returns:<br>    ConfigResponse
      | PublicConfigResponse: Configuration settings appropriate for the user''s auth status.<br><br>Raises:<br>    HTTPExce'
  - info:
      name: Experimental Run Flow
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/run/advanced/:flow_id_or_name'
      params:
      - name: flow_id_or_name
        value: ''
        type: path
      - name: user_id
        value: ''
        type: query
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: x-api-key
        value: '{{x-api-key}}'
        placement: query
    docs: 'Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.<br><br>This
      endpoint supports running flows with caching to enhance performance and efficiency.<br><br>### Parameters:<br>- `flow`
      (Flow): The flow object to be executed, resolved via dependency injection.<br>- `inputs` (List[InputValueRequest], optional):
      A list of inputs specifying the input values and components<br>  for the flow. Each input can target specific components
      and provid'
  - info:
      name: Simplified Run Flow
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/run/:flow_id_or_name'
      params:
      - name: flow_id_or_name
        value: ''
        type: path
      - name: stream
        value: ''
        type: query
      - name: user_id
        value: ''
        type: query
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: x-api-key
        value: '{{x-api-key}}'
        placement: query
    docs: 'Executes a specified flow by ID with support for streaming and telemetry (API key auth).<br><br>This endpoint executes
      a flow identified by ID or name, with options for streaming the response<br>and tracking execution metrics. It handles
      both streaming and non-streaming execution modes.<br>This endpoint uses API key authentication (Bearer token).<br><br>Args:<br>    background_tasks
      (BackgroundTasks): FastAPI background task manager<br>    flow (FlowRead | None): The flow to execute, loaded via '
  - info:
      name: Get Version
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/version'
    docs: Get Version
  - info:
      name: Webhook Run Flow
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/webhook/:flow_id_or_name'
      params:
      - name: flow_id_or_name
        value: ''
        type: path
      - name: user_id
        value: ''
        type: query
    docs: 'Run a flow using a webhook request.<br><br>Args:<br>    flow_id_or_name: The flow ID or endpoint name (used by
      dependency).<br>    flow: The flow to be executed.<br>    request: The incoming HTTP request.<br><br>Returns:<br>    A
      dictionary containing the status of the task.<br><br>Raises:<br>    HTTPException: If the flow is not found or if there
      is an error processing the request.'
- info:
    name: Chat
    type: folder
  items:
  - info:
      name: Build Flow
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/build/:flow_id/flow'
      params:
      - name: flow_id
        value: ''
        type: path
      - name: stop_component_id
        value: ''
        type: query
      - name: start_component_id
        value: ''
        type: query
      - name: log_builds
        value: ''
        type: query
      - name: flow_name
        value: ''
        type: query
      - name: event_delivery
        value: ''
        type: query
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: 'Build and process a flow, returning a job ID for event polling.<br><br>This endpoint requires authentication through
      the CurrentActiveUser dependency.<br>For public flows that don''t require authentication, use the /build_public_tmp/flow_id/flow
      endpoint.<br><br>Args:<br>    flow_id: UUID of the flow to build<br>    background_tasks: Background tasks manager<br>    inputs:
      Optional input values for the flow<br>    data: Optional flow data<br>    files: Optional files to include<br>    stop_compon'
  - info:
      name: Cancel Build
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/build/:job_id/cancel'
      params:
      - name: job_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Cancel a specific build job.<br><br>Requires authentication and ownership verification to prevent a user from<br>aborting
      another user's running build (DoS via job cancellation).<br>Jobs with no registered owner (build_public_tmp) are accessible
      to any<br>authenticated user, consistent with get_build_events.
  - info:
      name: Get Build Events
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/build/:job_id/events'
      params:
      - name: job_id
        value: ''
        type: path
      - name: event_delivery
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Get events for a specific build job.<br><br>Requires authentication and ownership verification. A job owner is registered<br>when
      build_flow is called; if a registered owner does not match the requesting<br>user the endpoint returns 404 to avoid
      leaking job existence.<br>Jobs started via build_public_tmp have no registered owner and remain accessible<br>to any
      authenticated user.
  - info:
      name: Build Public Tmp
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/build_public_tmp/:flow_id/flow'
      params:
      - name: flow_id
        value: ''
        type: path
      - name: stop_component_id
        value: ''
        type: query
      - name: start_component_id
        value: ''
        type: query
      - name: log_builds
        value: ''
        type: query
      - name: flow_name
        value: ''
        type: query
      - name: event_delivery
        value: ''
        type: query
      body:
        type: json
        data: '{}'
    docs: Build a public flow without requiring authentication.<br><br>This endpoint is specifically for public flows that
      don't require authentication.<br>It uses a client_id cookie to create a deterministic flow ID for tracking purposes.<br><br>Security
      Note:<br>- The 'data' parameter is NOT accepted to prevent flow definition tampering<br>- Public flows must execute
      the stored flow definition only<br>- The flow definition is always loaded from the database<br><br>The endpoint:<br>1.
      Verifies the reques
  - info:
      name: Cancel Build Public
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/build_public_tmp/:job_id/cancel'
      params:
      - name: job_id
        value: ''
        type: path
    docs: Cancel a public flow build job.<br><br>This endpoint does not require authentication, matching the public build
      endpoint.<br>It is used by the shareable playground to cancel builds.
  - info:
      name: Get Build Events Public
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/build_public_tmp/:job_id/events'
      params:
      - name: job_id
        value: ''
        type: path
      - name: event_delivery
        value: ''
        type: query
    docs: Get events for a public flow build job.<br><br>This endpoint does not require authentication, matching the public
      build endpoint.<br>It is used by the shareable playground to consume build events.
- info:
    name: Files
    type: folder
  items:
  - info:
      name: Delete File
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v1/files/delete/:flow_id/:file_name'
      params:
      - name: file_name
        value: ''
        type: path
      - name: flow_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete File
  - info:
      name: Download File
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/files/download/:flow_id/:file_name'
      params:
      - name: file_name
        value: ''
        type: path
      - name: flow_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Download File
  - info:
      name: Download Image
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/files/images/:flow_id/:file_name'
      params:
      - name: file_name
        value: ''
        type: path
      - name: flow_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Download image from storage for browser rendering.
  - info:
      name: List Files
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/files/list/:flow_id'
      params:
      - name: flow_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: List Files
  - info:
      name: List Profile Pictures
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/files/profile_pictures/list'
    docs: List profile pictures from local filesystem.<br><br>Profile pictures are first looked up in config_dir/profile_pictures/,<br>then
      fallback to the package's bundled profile_pictures directory.
  - info:
      name: Download Profile Picture
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/files/profile_pictures/:folder_name/:file_name'
      params:
      - name: folder_name
        value: ''
        type: path
      - name: file_name
        value: ''
        type: path
    docs: Download profile picture from local filesystem.<br><br>Profile pictures are first looked up in config_dir/profile_pictures/,<br>then
      fallback to the package's bundled profile_pictures directory.
  - info:
      name: Upload File
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/files/upload/:flow_id'
      params:
      - name: flow_id
        value: ''
        type: path
      body:
        type: multipart-form
        data: []
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Upload File
  - info:
      name: List Files
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v2/files'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: List the files available to the current user.
  - info:
      name: Upload User File
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v2/files'
      params:
      - name: append
        value: ''
        type: query
      - name: ephemeral
        value: ''
        type: query
      body:
        type: multipart-form
        data: []
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Upload a file for the current user and track it in the database.
  - info:
      name: Delete All Files
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v2/files'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete all files for the current user.
  - info:
      name: List Files
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v2/files/'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: List the files available to the current user.
  - info:
      name: Upload User File
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v2/files/'
      params:
      - name: append
        value: ''
        type: query
      - name: ephemeral
        value: ''
        type: query
      body:
        type: multipart-form
        data: []
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Upload a file for the current user and track it in the database.
  - info:
      name: Delete All Files
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v2/files/'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete all files for the current user.
  - info:
      name: Download Files Batch
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v2/files/batch/'
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Download multiple files as a zip file by their IDs.
  - info:
      name: Delete Files Batch
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v2/files/batch/'
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete multiple files by their IDs.
  - info:
      name: Download File
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v2/files/:file_id'
      params:
      - name: file_id
        value: ''
        type: path
      - name: return_content
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: 'Download a file by its ID or return its content as a string/bytes.<br><br>Args:<br>    file_id: UUID of the file.<br>    current_user:
      Authenticated user.<br>    session: Database session.<br>    storage_service: File storage service.<br>    return_content:
      If True, return raw content (str) instead of StreamingResponse.<br><br>Returns:<br>    StreamingResponse for client
      downloads or str for internal use.'
  - info:
      name: Edit File Name
      type: http
    http:
      method: PUT
      url: '{{baseUrl}}/api/v2/files/:file_id'
      params:
      - name: file_id
        value: ''
        type: path
      - name: name
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Edit the name of a file by its ID.
  - info:
      name: Delete File
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v2/files/:file_id'
      params:
      - name: file_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete a file by its ID.
- info:
    name: Flows
    type: folder
  items:
  - info:
      name: Read Flows
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/flows/'
      params:
      - name: remove_example_flows
        value: ''
        type: query
      - name: components_only
        value: ''
        type: query
      - name: get_all
        value: ''
        type: query
      - name: folder_id
        value: ''
        type: query
      - name: header_flows
        value: ''
        type: query
      - name: page
        value: ''
        type: query
      - name: size
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Retrieve a list of flows with optional pagination, filtering, and header-only mode.
  - info:
      name: Create Flow
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/flows/'
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Create Flow
  - info:
      name: Delete Multiple Flows
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v1/flows/'
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete multiple flows by their IDs.
  - info:
      name: Read Basic Examples
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/flows/basic_examples/'
    docs: Retrieve a list of basic example flows.
  - info:
      name: Create Flows
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/flows/batch/'
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Create multiple new flows.
  - info:
      name: Download Multiple File
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/flows/download/'
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Download all flows as a zip file.
  - info:
      name: Read Public Flow
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/flows/public_flow/:flow_id'
      params:
      - name: flow_id
        value: ''
        type: path
    docs: Read a public flow.
  - info:
      name: Upload File
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/flows/upload/'
      params:
      - name: folder_id
        value: ''
        type: query
      body:
        type: multipart-form
        data: []
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Upload flows from a JSON or ZIP file (upsert semantics for flows with stable IDs).
  - info:
      name: Read Flow
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/flows/:flow_id'
      params:
      - name: flow_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Read a flow.
  - info:
      name: Upsert Flow
      type: http
    http:
      method: PUT
      url: '{{baseUrl}}/api/v1/flows/:flow_id'
      params:
      - name: flow_id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Create or update a flow with a specific ID (upsert).<br><br>Returns 201 for creation, 200 for update.  Returns 404
      if owned by another user.
  - info:
      name: Update Flow
      type: http
    http:
      method: PATCH
      url: '{{baseUrl}}/api/v1/flows/:flow_id'
      params:
      - name: flow_id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Update a flow.
  - info:
      name: Delete Flow
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v1/flows/:flow_id'
      params:
      - name: flow_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete a flow.
  - info:
      name: Get Starter Projects
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/starter-projects/'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Get a list of starter projects.
- info:
    name: Flow Events
    type: folder
  items:
  - info:
      name: Get Flow Events
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/flows/:flow_id/events'
      params:
      - name: flow_id
        value: ''
        type: path
      - name: since
        value: ''
        type: query
        description: UTC timestamp to get events after
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Get Flow Events
  - info:
      name: Create Flow Event
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/flows/:flow_id/events'
      params:
      - name: flow_id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Append an event to a flow's event queue.
- info:
    name: mcp_projects
    type: folder
  items:
  - info:
      name: List Project Tools
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/mcp/project/:project_id'
      params:
      - name: project_id
        value: ''
        type: path
      - name: mcp_enabled
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: List project MCP tools.
  - info:
      name: Update Project Mcp Settings
      type: http
    http:
      method: PATCH
      url: '{{baseUrl}}/api/v1/mcp/project/:project_id'
      params:
      - name: project_id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Update the MCP settings of all flows in a project and project-level auth settings.<br><br>On MCP Composer failure,
      this endpoint should return with a 200 status code and an error message in<br>the body of the response to display to
      the user.
  - info:
      name: Get Project Composer Url
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/mcp/project/:project_id/composer-url'
      params:
      - name: project_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Get the MCP Composer URL for a specific project.<br><br>On failure, this endpoint should return with a 200 status
      code and an error message in<br>the body of the response to display to the user.
  - info:
      name: Install Mcp Config
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/api/v1/mcp/project/:project_id/install'
      params:
      - name: project_id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Install MCP server configuration for Cursor, Windsurf, or Claude.
  - info:
      name: Check Installed Mcp Servers
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/mcp/project/:project_id/installed'
      params:
      - name: project_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Check if MCP server configuration is installed for this project in Cursor, Windsurf, or Claude.
- info:
    name: Monitor
    type: folder
  items:
  - info:
      name: Get Vertex Builds
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/monitor/builds'
      params:
      - name: flow_id
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Get Vertex Builds
  - info:
      name: Delete Vertex Builds
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v1/monitor/builds'
      params:
      - name: flow_id
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete Vertex Builds
  - info:
      name: Get Messages
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/monitor/messages'
      params:
      - name: flow_id
        value: ''
        type: query
      - name: session_id
        value: ''
        type: query
      - name: sender
        value: ''
        type: query
      - name: sender_name
        value: ''
        type: query
      - name: order_by
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Get Messages
  - info:
      name: Delete Messages
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v1/monitor/messages'
      body:
        type: json
        data: '{}'
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete Messages
  - info:
      name: Update Session Id
      type: http
    http:
      method: PATCH
      url: '{{baseUrl}}/api/v1/monitor/messages/session/:old_session_id'
      params:
      - name: old_session_id
        value: ''
        type: path
      - name: new_session_id
        value: ''
        type: query
        description: The new session ID to update to
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Update Session Id
  - info:
      name: Delete Messages Session
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/api/v1/monitor/messages/session/:session_id'
      params:
      - name: session_id
        value: ''
        type: path
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Delete messages for a single session.<br><br>Only deletes messages from sessions belonging to flows owned by the
      current user.
  - info:
      name: Get Message Sessions
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/api/v1/monitor/messages/sessions'
      params:
      - name: flow_id
        value: ''
        type: query
      auth:
        type: oauth2
        flow: resource_owner_password_credentials
        accessTokenUrl: api/v1/login
        credentials:
          clientId: '{{clientId}}'
          clientSecret: '{{clientSecret}}'
    docs: Get Message Sessions
  - info:
      name: Delete Messages Ses

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/langflow/refs/heads/main/apis.yml