Download OpenAPI specification:Download
List the caller's own A2A-published agent flows, each with its agent-card URL.
Authenticated and owner-scoped, mirroring the MCP-projects catalog: a public cross-user
directory would strip the per-flow card's unguessable-id obscurity and expose other users'
agents, so this enumerates only the calling user's agents. Each cardUrl is the public
discovery entry point an orchestrator fetches per agent.
[- { }
]Serve the spec-valid A2A agent card for an agent-typed, a2a_enabled flow.
Public by design: the A2A public agent card is unauthenticated by spec, so gating it behind login would break standard discovery. Returns 404 when the flag is off, the flow does not exist, the flow is not flow_type=agent, or a2a_enabled is falsy.
| flow_id required | string <uuid> (Flow Id) |
{ }Serve the A2A JSON-RPC surface (message/send, message/stream, tasks/get, tasks/resubscribe) for an agent flow.
Gated like the card route; apikey-folder flows additionally require a valid owner
key (401). The flow runs as its owner. Returns the SDK's JSON-RPC response (HTTP 200
even for JSON-RPC-level errors). No DbSession dependency here: holding a session
open across the run would fight the v2 surface's lock-avoidance design, and the
gate/run resolve from flow_id via short self-managed sessions.
| flow_id required | string <uuid> (Flow Id) |
nullRetrieve all component types with compression for better performance.
Returns a compressed response containing all available component types, with display_names translated to the locale indicated by Accept-Language.
| include_blocked | boolean (Include Blocked) Default: false |
Flow Id (string) or Flow Id (null) (Flow Id) | |
Project Id (string) or Project Id (null) (Project Id) |
nullRetrieve application configuration settings.
Returns different configuration based on authentication status:
Args: user: The authenticated user, or None if unauthenticated.
Returns: ConfigResponse | PublicConfigResponse: Configuration settings appropriate for the user's auth status.
Raises: HTTPException: If an error occurs while retrieving the configuration.
{- "a2a_enabled": false,
- "agentic_experience": true,
- "allow_custom_components": true,
- "assistant_max_message_length": 2000,
- "authz_enabled": false,
- "auto_saving": true,
- "auto_saving_interval": 0,
- "blocked_component_types": [ ],
- "catalog_governance_enabled": false,
- "custom_component_admin_only": true,
- "default_folder_name": "string",
- "default_vector_store_backend": "sqlite",
- "embedded_mode": true,
- "enable_extension_reload": true,
- "event_delivery": "polling",
- "feature_flags": {
- "data_subject_requests": false,
- "instance_migration": false,
- "mvp_components": false,
- "wxo_deployments": false
}, - "frontend_timeout": 0,
- "health_check_max_retries": 0,
- "hide_getting_started_progress": true,
- "hide_logout_button": true,
- "hide_new_flow_button": true,
- "hide_new_project_button": true,
- "hide_starter_projects": true,
- "local_vector_store_available": true,
- "max_file_size_upload": 0,
- "mcp_base_url": "string",
- "mcp_servers_locked": true,
- "public_flow_cleanup_interval": 0,
- "public_flow_expiration": 0,
- "serialization_max_items_length": 0,
- "serialization_max_text_length": 0,
- "substitute_outdated_component_code": true,
- "type": "full",
- "voice_mode_available": true,
- "webhook_auth_enable": true,
- "webhook_polling_interval": 0
}Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.
This endpoint supports running flows with caching to enhance performance and efficiency.
flow (Flow): The flow object to be executed, resolved via dependency injection.inputs (List[InputValueRequest], optional): A list of inputs specifying the input values and components
for the flow. Each input can target specific components and provide custom values.outputs (List[str], optional): A list of output names to retrieve from the executed flow.
If not provided, all outputs are returned.tweaks (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.
The tweaks can be used to modify the flow's parameters and components.
Tweaks can be overridden by the input values.stream (bool, optional): Specifies whether the results should be streamed. Defaults to False.session_id (Union[None, str], optional): An optional session ID to utilize existing session data for the flow
execution.api_key_user (User): The user associated with the current API key. Automatically resolved from the API key.A RunResponse object containing the selected outputs (or all if not specified) of the executed flow
and the session ID.
The structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.
HTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during flow execution.
POST /run/flow_id
x-api-key: YOUR_API_KEY
Payload:
{
"inputs": [
{"components": ["component1"], "input_value": "value1"},
{"components": ["component3"], "input_value": "value2"}
],
"outputs": ["Component Name", "component_id"],
"tweaks": {"parameter_name": "value", "Component Name": {"parameter_name": "value"}, "component_id": {"parameter_name": "value"}}
"stream": false
}
This endpoint facilitates complex flow executions with customized inputs, outputs, and configurations, catering to diverse application requirements.
| flow_id_or_name required | string (Flow Id Or Name) |
Array of Inputs (objects) or Inputs (null) (Inputs) | |
Array of Outputs (strings) or Outputs (null) (Outputs) | |
Session Id (string) or Session Id (null) (Session Id) | |
| stream | boolean (Stream) Default: false |
Tweaks (object) or null |
{- "inputs": [
- {
- "components": [
- "components_id",
- "Component Name"
], - "input_value": "input_value",
- "session": "session_id"
}
], - "outputs": [
- "string"
], - "session_id": "string",
- "stream": false,
- "tweaks": {
- "Component Name": {
- "parameter_name": "value"
}, - "component_id": {
- "parameter_name": "value"
}, - "parameter_name": "value",
- "stream": false,
- "temperature": 0.7
}
}{- "outputs": [ ],
- "session_id": "string"
}Executes a specified flow by ID with support for streaming and telemetry (API key auth).
This endpoint executes a flow identified by ID or name, with options for streaming the response and tracking execution metrics. It handles both streaming and non-streaming execution modes. This endpoint uses API key authentication (Bearer token).
Args: background_tasks (BackgroundTasks): FastAPI background task manager flow (FlowRead | None): The flow to execute, loaded via dependency input_request (SimplifiedAPIRequest | None): Input parameters for the flow stream (bool): Whether to stream the response api_key_user (UserRead): Authenticated user from API key context (dict | None): Optional context to pass to the flow http_request (Request): The incoming HTTP request for extracting global variables
Returns: Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results or a RunResponse with the complete execution results
Raises: HTTPException: For flow not found (404) or invalid input (400) APIException: For internal execution errors (500)
Notes: - Supports both streaming and non-streaming execution modes - Tracks execution time and success/failure via telemetry - Handles graceful client disconnection in streaming mode - Provides detailed error handling with appropriate HTTP status codes - Extracts global variables from HTTP headers with prefix X-LANGFLOW-GLOBAL-VAR-* - Merges extracted variables with the context parameter as "request_variables" - In streaming mode, uses EventManager to handle events: - "add_message": New messages during execution - "token": Individual tokens during streaming - "end": Final execution result - Authentication: Requires API key (Bearer token)
| flow_id_or_name required | string (Flow Id Or Name) |
| stream | boolean (Stream) Default: false |
Context (object) or Context (null) (Context) | |
SimplifiedAPIRequest (object) or null |
{- "context": { },
- "input_request": {
- "input_type": "chat",
- "input_value": "string",
- "output_component": "",
- "output_type": "chat",
- "session_id": "string",
- "tweaks": {
- "Component Name": {
- "parameter_name": "value"
}, - "component_id": {
- "parameter_name": "value"
}, - "parameter_name": "value",
- "stream": false,
- "temperature": 0.7
}, - "user_id": "string"
}
}nullRun a flow using a webhook request.
Args: auth: Resolved webhook user and flow, scoped to the authenticated caller. request: The incoming HTTP request.
Returns: A dictionary containing the status of the task.
Raises: HTTPException: If the flow is not found or if there is an error processing the request.
| flow_id_or_name required | string (Flow Id Or Name) |
{ }Every audit event, newest first, filtered and keyset-paginated on the server.
Filters: source, kind, resource_type, action, exclude_action,
operation, result and actor_type repeat and OR within themselves;
resource_id, user_id, actor_id, request_id, since and
until narrow further. q keeps rows whose action, operation, resource
type or name, actor username or details contain it, ignoring case.
include_total=true adds a count of every match. offset jumps to a
page by position instead of a cursor; next_cursor then continues from it.
| source | Array of any Items Enum: "authz" "resource" The store the event came from. Repeatable; values are ORed. |
| kind | Array of any Items Enum: "action" "check" What the event is about. Repeatable; values are ORed. |
| resource_type | Array of strings Resource type slug. Repeatable; values are ORed. |
| action | Array of strings Exact action. Repeatable; values are ORed. |
| exclude_action | Array of strings Action to leave out. Repeatable; values are ORed. |
| operation | Array of any Items Enum: "create" "delete" "patch" "replace" Shape of the mutation. Repeatable; values are ORed. |
| result | Array of any Items Enum: "allow" "deny" "failed" "owner_override" "skip" "succeeded" Outcome. Repeatable; values are ORed. |
| actor_type | Array of strings How the request authenticated. Repeatable; values are ORed. |
| resource_id | string <uuid> Exact resource. |
| user_id | string <uuid> Exact Langflow account. |
| actor_id | string <uuid> Exact authenticated principal or credential. |
| request_id | string <uuid> Exact request correlation id. |
| since | string <date-time> Inclusive RFC 3339 timestamp. |
| until | string <date-time> Exclusive RFC 3339 timestamp, later than since. |
| q | string <= 200 characters Free text kept against action, operation, resource type or name, actor username and details. |
| cursor | string Opaque cursor from the previous page. |
| limit | integer [ 1 .. 200 ] Default: 50 Page size. |
| offset | integer [ 0 .. 1000000 ] Jump to a page by position instead of a cursor; cannot be combined with one. |
| include_total | boolean Default: false Add a count of every match. |
{- "items": [
- {
- "action": "string",
- "actor": {
- "acting_issuer": "string",
- "acting_subject": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "string",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}, - "actor_id": "04f37679-bfbf-4906-b749-01756515cecf",
- "actor_type": "string",
- "details": { },
- "error_code": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "kind": "action",
- "operation": "string",
- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "resource_id": "4d5215ed-38bb-48ed-879a-fdb9ca58522f",
- "resource_name": "string",
- "resource_type": "string",
- "result": "string",
- "source": "resource",
- "timestamp": "string",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}
], - "next_cursor": "string",
- "total": 0
}Stream every matching event as CSV (default) or NDJSON, newest first.
The window is frozen when the export starts, so it is one consistent snapshot however long it runs, and the rows are never gathered in memory.
| source | Array of any Items Enum: "authz" "resource" The store the event came from. Repeatable; values are ORed. |
| kind | Array of any Items Enum: "action" "check" What the event is about. Repeatable; values are ORed. |
| resource_type | Array of strings Resource type slug. Repeatable; values are ORed. |
| action | Array of strings Exact action. Repeatable; values are ORed. |
| exclude_action | Array of strings Action to leave out. Repeatable; values are ORed. |
| operation | Array of any Items Enum: "create" "delete" "patch" "replace" Shape of the mutation. Repeatable; values are ORed. |
| result | Array of any Items Enum: "allow" "deny" "failed" "owner_override" "skip" "succeeded" Outcome. Repeatable; values are ORed. |
| actor_type | Array of strings How the request authenticated. Repeatable; values are ORed. |
| resource_id | string <uuid> Exact resource. |
| user_id | string <uuid> Exact Langflow account. |
| actor_id | string <uuid> Exact authenticated principal or credential. |
| request_id | string <uuid> Exact request correlation id. |
| since | string <date-time> Inclusive RFC 3339 timestamp. |
| until | string <date-time> Exclusive RFC 3339 timestamp, later than since. |
| q | string <= 200 characters Free text kept against action, operation, resource type or name, actor username and details. |
| format | any Enum: "csv" "ndjson" csv (the default) or ndjson. |
nullList role assignments scoped to one user.
user_id defaults to the caller — no superuser needed.user_id == self.id is the same as omitting it.user_id requires role:manage; otherwise 403.Results are always filtered by the resolved user_id. Admins who need
cross-user lookups make one call per user. Paginated via limit /
offset (default 100, max 200).
User Id (string) or User Id (null) (User Id) Filter by user | |
Role Id (string) or Role Id (null) (Role Id) Filter by role | |
Domain Type (string) or Domain Type (null) (Domain Type) | |
Domain Id (string) or Domain Id (null) (Domain Id) | |
| limit | integer (Limit) [ 1 .. 200 ] Default: 100 |
| offset | integer (Offset) >= 0 Default: 0 |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
[- {
- "assigned_at": "2019-08-24T14:15:22Z",
- "assigned_by": "dd7cba77-7080-4b0e-9a94-fdfd1232f6b4",
- "domain_id": "b2f7354f-b74d-4332-ab10-1a5e3c56466c",
- "domain_type": "string",
- "grant_sources": [
- {
- "administrative_actor": "e34ee007-dc77-4545-8036-a949ba13d56f",
- "created_at": "2019-08-24T14:15:22Z",
- "external_group": "string",
- "provider_id": "string",
- "source_kind": "manual",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "role_id": "ac4e70c8-d5be-48af-93eb-760f58fc91a9",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}
]Assign a role to a user as a role administrator.
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
Domain Id (string) or Domain Id (null) (Domain Id) Required when | |
| domain_type | string (Domain Type) Default: "global" Enum: "global" "org" "workspace" "project" Domain scope of the assignment. |
| role_id required | string <uuid> (Role Id) |
| user_id required | string <uuid> (User Id) |
{- "domain_id": "b2f7354f-b74d-4332-ab10-1a5e3c56466c",
- "domain_type": "global",
- "role_id": "ac4e70c8-d5be-48af-93eb-760f58fc91a9",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}{- "assigned_at": "2019-08-24T14:15:22Z",
- "assigned_by": "dd7cba77-7080-4b0e-9a94-fdfd1232f6b4",
- "domain_id": "b2f7354f-b74d-4332-ab10-1a5e3c56466c",
- "domain_type": "string",
- "grant_sources": [
- {
- "administrative_actor": "e34ee007-dc77-4545-8036-a949ba13d56f",
- "created_at": "2019-08-24T14:15:22Z",
- "external_group": "string",
- "provider_id": "string",
- "source_kind": "manual",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "role_id": "ac4e70c8-d5be-48af-93eb-760f58fc91a9",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}Remove a manual grant, returning the assignment when another source preserves it.
| assignment_id required | string <uuid> (Assignment Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
{- "assigned_at": "2019-08-24T14:15:22Z",
- "assigned_by": "dd7cba77-7080-4b0e-9a94-fdfd1232f6b4",
- "domain_id": "b2f7354f-b74d-4332-ab10-1a5e3c56466c",
- "domain_type": "string",
- "grant_sources": [
- {
- "administrative_actor": "e34ee007-dc77-4545-8036-a949ba13d56f",
- "created_at": "2019-08-24T14:15:22Z",
- "external_group": "string",
- "provider_id": "string",
- "source_kind": "manual",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "role_id": "ac4e70c8-d5be-48af-93eb-760f58fc91a9",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}List roles. Open to authenticated users so the UI can populate dropdowns.
Paginated via limit / offset so a single call cannot return the
entire catalog of roles + their permissions. Stable order is (name, id)
so offset is deterministic across calls.
Is System (boolean) or Is System (null) (Is System) Filter by is_system flag | |
Name (string) or Name (null) (Name) Substring match on role name | |
Exact Name (string) or Exact Name (null) (Exact Name) Exact match on role name | |
| limit | integer (Limit) [ 1 .. 200 ] Default: 100 |
| offset | integer (Offset) >= 0 Default: 0 |
[- {
- "created_at": "2019-08-24T14:15:22Z",
- "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_system": true,
- "name": "string",
- "parent_role_id": "7ea77ce3-4218-4d39-ad84-02444a2f4ee7",
- "permissions": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
]Create a custom (non-system) role.
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
Description (string) or Description (null) (Description) | |
| name required | string (Name) [ 1 .. 255 ] characters |
Parent Role Id (string) or Parent Role Id (null) (Parent Role Id) | |
| permissions | Array of strings (Permissions) Permission slugs in the canonical |
{- "description": "string",
- "name": "string",
- "parent_role_id": "7ea77ce3-4218-4d39-ad84-02444a2f4ee7",
- "permissions": [
- "string"
]
}{- "created_at": "2019-08-24T14:15:22Z",
- "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_system": true,
- "name": "string",
- "parent_role_id": "7ea77ce3-4218-4d39-ad84-02444a2f4ee7",
- "permissions": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Delete a custom role.
System roles cannot be deleted; roles with active assignments return 409 (delete the assignments first).
| role_id required | string <uuid> (Role Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}| role_id required | string <uuid> (Role Id) |
{- "created_at": "2019-08-24T14:15:22Z",
- "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_system": true,
- "name": "string",
- "parent_role_id": "7ea77ce3-4218-4d39-ad84-02444a2f4ee7",
- "permissions": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Update fields on a custom role. System roles are read-only.
| role_id required | string <uuid> (Role Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
Description (string) or Description (null) (Description) | |
Name (string) or Name (null) (Name) | |
Parent Role Id (string) or Parent Role Id (null) (Parent Role Id) | |
Array of Permissions (strings) or Permissions (null) (Permissions) |
{- "description": "string",
- "name": "string",
- "parent_role_id": "7ea77ce3-4218-4d39-ad84-02444a2f4ee7",
- "permissions": [
- "string"
]
}{- "created_at": "2019-08-24T14:15:22Z",
- "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_system": true,
- "name": "string",
- "parent_role_id": "7ea77ce3-4218-4d39-ad84-02444a2f4ee7",
- "permissions": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}List teams. Open to any authenticated user (for the share dialog's team picker).
Paginated via limit / offset so a single call cannot enumerate every
team. Stable order is (team_name, id) so offset is deterministic.
Search (string) or Search (null) (Search) Substring match on team_name or adom_name | |
Adom Name (string) or Adom Name (null) (Adom Name) Exact match on adom_name | |
Is Active (boolean) or Is Active (null) (Is Active) | |
| limit | integer (Limit) [ 1 .. 200 ] Default: 100 |
| offset | integer (Offset) >= 0 Default: 0 |
[- {
- "adom_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "team_name": "string",
- "updated_at": "2019-08-24T14:15:22Z"
}
]X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
| adom_name required | string (Adom Name) [ 1 .. 255 ] characters Administrative-domain slug, unique across all teams (often the SSO group name). |
Description (string) or Description (null) (Description) | |
| is_active | boolean (Is Active) Default: true |
| team_name required | string (Team Name) [ 1 .. 255 ] characters |
{- "adom_name": "string",
- "description": "string",
- "is_active": true,
- "team_name": "string"
}{- "adom_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "team_name": "string",
- "updated_at": "2019-08-24T14:15:22Z"
}| team_id required | string <uuid> (Team Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}| team_id required | string <uuid> (Team Id) |
{- "adom_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "team_name": "string",
- "updated_at": "2019-08-24T14:15:22Z"
}| team_id required | string <uuid> (Team Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
Adom Name (string) or Adom Name (null) (Adom Name) | |
Description (string) or Description (null) (Description) | |
Is Active (boolean) or Is Active (null) (Is Active) | |
Team Name (string) or Team Name (null) (Team Name) |
{- "adom_name": "string",
- "description": "string",
- "is_active": true,
- "team_name": "string"
}{- "adom_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "team_name": "string",
- "updated_at": "2019-08-24T14:15:22Z"
}List members of a team. Any authenticated user (so the UI can render team rosters).
Paginated via limit / offset so a single call cannot enumerate a
large team's full roster. Stable order is (created_at, user_id).
| team_id required | string <uuid> (Team Id) |
| limit | integer (Limit) [ 1 .. 200 ] Default: 100 |
| offset | integer (Offset) >= 0 Default: 0 |
[- {
- "created_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "source": "string",
- "team_id": "810007d0-bec5-486c-b5d1-28fcd8a079ba",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}
]| team_id required | string <uuid> (Team Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
| source | string (Source) Default: "manual" Value: "manual" |
| user_id required | string <uuid> (User Id) |
{- "source": "manual",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}{- "created_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "source": "string",
- "team_id": "810007d0-bec5-486c-b5d1-28fcd8a079ba",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}| team_id required | string <uuid> (Team Id) |
| user_id required | string <uuid> (User Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}HTTP entry point for the v1 build route: always the interactive_chat family.
The execution family is deliberately NOT a request parameter. It selects the
identity connections resolve under, so a caller able to name it could ask for
webhook and run under the flow owner's credentials.
| flow_id required | string <uuid> (Flow Id) |
Stop Component Id (string) or Stop Component Id (null) (Stop Component Id) | |
Start Component Id (string) or Start Component Id (null) (Start Component Id) | |
| log_builds | boolean (Log Builds) Default: true |
Flow Name (string) or Flow Name (null) (Flow Name) | |
| event_delivery | string (EventDeliveryType) Default: "polling" Enum: "streaming" "direct" "polling" |
FlowDataRequest (object) or null | |
Array of Files (strings) or Files (null) (Files) | |
InputValueRequest (object) or null |
{- "data": {
- "edges": [
- { }
], - "nodes": [
- { }
], - "viewport": { }
}, - "files": [
- "string"
], - "inputs": {
- "components": [
- "components_id",
- "Component Name"
], - "input_value": "input_value",
- "session": "session_id"
}
}nullCancel a specific build job.
Requires authentication and ownership verification to prevent a user from aborting another user's running build (DoS via job cancellation). Jobs started via build_public_tmp are explicitly marked public. Jobs without a queue owner or public marker return 404.
| job_id required | string (Job Id) |
{- "message": "string",
- "success": true
}Get events for a specific build job.
Requires authentication and ownership verification. A job owner is registered when build_flow is called; if a registered owner does not match the requesting user the endpoint returns 404 to avoid leaking job existence. Jobs started via build_public_tmp are explicitly marked public. Jobs without a queue owner or public marker return 404.
| job_id required | string (Job Id) |
| event_delivery | string (EventDeliveryType) Default: "streaming" Enum: "streaming" "direct" "polling" |
nullBuild a public flow without requiring authentication.
This endpoint is specifically for public flows that don't require authentication. It uses a client_id cookie to create a deterministic flow ID for tracking purposes.
Security Note:
The endpoint:
Requirements:
Args: flow_id: UUID of the public flow to build background_tasks: Background tasks manager inputs: Optional input values for the flow files: Optional files to include stop_component_id: Optional ID of component to stop at start_component_id: Optional ID of component to start from log_builds: Whether to log the build process flow_name: Optional name for the flow request: FastAPI request object (needed for cookie access) queue_service: Queue service for job management authenticated_user: Optional authenticated user (resolved from cookie/token if present) event_delivery: Optional event delivery type - default is streaming
Returns: Dict with job_id that can be used to poll for build status
| flow_id required | string <uuid> (Flow Id) |
Stop Component Id (string) or Stop Component Id (null) (Stop Component Id) | |
Start Component Id (string) or Start Component Id (null) (Start Component Id) | |
Log Builds (boolean) or Log Builds (null) (Log Builds) Default: true | |
Flow Name (string) or Flow Name (null) (Flow Name) | |
| event_delivery | string (EventDeliveryType) Default: "polling" Enum: "streaming" "direct" "polling" |
Array of Files (strings) or Files (null) (Files) | |
InputValueRequest (object) or null |
{- "files": [
- "string"
], - "inputs": {
- "components": [
- "components_id",
- "Component Name"
], - "input_value": "input_value",
- "session": "session_id"
}
}nullCancel a public flow build job.
This endpoint does not require authentication, matching the public build endpoint. It is used by the shareable playground to cancel builds.
| job_id required | string (Job Id) |
{- "message": "string",
- "success": true
}Get events for a public flow build job.
This endpoint does not require authentication, matching the public build endpoint. It is used by the shareable playground to consume build events.
| job_id required | string (Job Id) |
| event_delivery | string (EventDeliveryType) Default: "streaming" Enum: "streaming" "direct" "polling" |
nullReplace the complete global component block set.
| blocked required | Array of strings (Blocked) <= 1000 items [ items [ 1 .. 255 ] characters ] Complete set of blocked catalog keys for this resource kind. |
{- "blocked": [
- "string"
]
}{- "blocked": [
- "string"
], - "managed_externally": true
}Replace the complete global template block set.
| blocked required | Array of strings (Blocked) <= 1000 items [ items [ 1 .. 255 ] characters ] Complete set of blocked catalog keys for this resource kind. |
{- "blocked": [
- "string"
]
}{- "blocked": [
- "string"
], - "managed_externally": true
}Return how many flows use each component.
Counts are keyed by canonical registry identity — a flow node saved under
a legacy alias is counted under the component it resolves to today, the
same resolution catalog enforcement applies. Keys not present in the
registry (custom or synthetic components) are counted under their exact
stored key. Each flow is counted at most once per component. Counts may
lag flow writes by up to USAGE_SCAN_CACHE_TTL_SECONDS.
{- "components": {
- "property1": 0,
- "property2": 0
}, - "flows_scanned": 0
}Return the flows that would be affected by blocking one component key.
A flow matches when the queried key and any of the flow's stored keys
resolve to a shared canonical identity — the same matching rule flow
writes and runs enforce. Flows are sorted by name, then id, and truncated
to limit; total always reports the full match count. Results may
lag flow writes by up to USAGE_SCAN_CACHE_TTL_SECONDS.
| component required | string (Component) [ 1 .. 255 ] characters Component key to look up; aliases resolve like catalog enforcement. |
| limit | integer (Limit) [ 1 .. 500 ] Default: 100 |
{- "component": "string",
- "flows": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "total": 0
}List owned, instance-owned, and explicitly shared connection metadata.
Provider (string) or Provider (null) (Provider) |
[- {
- "allow_non_interactive": true,
- "created_at": "2019-08-24T14:15:22Z",
- "display_name": "string",
- "executing_identity": {
- "account": {
- "display": "string",
- "id": "string",
- "tenant_id": "string"
}, - "identity": "user_delegated"
}, - "granted_scopes": [
- "string"
], - "has_credentials": true,
- "health": "unknown",
- "health_checked_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "ownership_mode": "user",
- "provider_key": "string",
- "status": "pending",
- "status_reason": "credential-missing",
- "updated_at": "2019-08-24T14:15:22Z"
}
]Create connection metadata and optionally store encrypted credentials.
| allow_non_interactive | boolean (Allow Non Interactive) Default: false |
ConnectionCredentialWrite (object) or null | |
| display_name required | string (Display Name) [ 1 .. 255 ] characters |
required | object (ExecutingIdentityDescriptor) Non-secret identity metadata shown by connection pickers. |
| granted_scopes | Array of strings (Granted Scopes) <= 512 items |
| name required | string (Name) <= 64 characters ^[a-z0-9]+(?:_[a-z0-9]+)*$ |
| ownership_mode | string (ConnectionOwnershipMode) Default: "user" Enum: "user" "instance" |
| provider_key required | string (Provider Key) <= 120 characters ^[a-z0-9][a-z0-9._-]*$ |
{- "allow_non_interactive": false,
- "credentials": {
- "access_token": "pa$$word",
- "expires_at": "2019-08-24T14:15:22Z",
- "refresh_token": "pa$$word",
- "token_type": "Bearer"
}, - "display_name": "string",
- "executing_identity": {
- "account": {
- "display": "string",
- "id": "string",
- "tenant_id": "string"
}, - "identity": "user_delegated"
}, - "granted_scopes": [
- "string"
], - "name": "string",
- "ownership_mode": "user",
- "provider_key": "string"
}{- "allow_non_interactive": true,
- "created_at": "2019-08-24T14:15:22Z",
- "display_name": "string",
- "executing_identity": {
- "account": {
- "display": "string",
- "id": "string",
- "tenant_id": "string"
}, - "identity": "user_delegated"
}, - "granted_scopes": [
- "string"
], - "has_credentials": true,
- "health": "unknown",
- "health_checked_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "ownership_mode": "user",
- "provider_key": "string",
- "status": "pending",
- "status_reason": "credential-missing",
- "updated_at": "2019-08-24T14:15:22Z"
}List the registrations a caller may name in an authorization request.
Registration configuration is operator-only, so a client had no way to learn
the ids that POST /connections/{connection_id}/oauth/start accepts, or the
scope ceiling it must stay inside. Only availability and non-secret fields are
returned, and a registration that this deployment would refuse is omitted
rather than advertised: a picker must not offer consent that cannot start.
Provider (string) or Provider (null) (Provider) | |
Flow Id (string) or Flow Id (null) (Flow Id) | |
Project Id (string) or Project Id (null) (Project Id) |
{- "registrations": [
- {
- "allowed_tenants": [
- "string"
], - "client_type": "confidential",
- "context": "self_managed",
- "id": "string",
- "profile": "user",
- "provider": "string",
- "scopes": [
- "string"
]
}
]
}Terminate provider callbacks here; state and browser binding replace login.
| provider required | string (Provider) |
{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}Delete a connection and its stored credential; only a deleter of the row may call this.
| connection_id required | string <uuid> (Connection Id) |
{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}Rename a connection or change its non-interactive opt-in without re-authorizing.
Anyone who may write the connection may withdraw the opt-in. Granting it widens which executions reach the owner's account, so only the owner (a superuser, for an instance connection) may turn it on.
| connection_id required | string <uuid> (Connection Id) |
Allow Non Interactive (boolean) or Allow Non Interactive (null) (Allow Non Interactive) | |
Display Name (string) or Display Name (null) (Display Name) |
{- "allow_non_interactive": true,
- "display_name": "string"
}{- "allow_non_interactive": true,
- "created_at": "2019-08-24T14:15:22Z",
- "display_name": "string",
- "executing_identity": {
- "account": {
- "display": "string",
- "id": "string",
- "tenant_id": "string"
}, - "identity": "user_delegated"
}, - "granted_scopes": [
- "string"
], - "has_credentials": true,
- "health": "unknown",
- "health_checked_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "ownership_mode": "user",
- "provider_key": "string",
- "status": "pending",
- "status_reason": "credential-missing",
- "updated_at": "2019-08-24T14:15:22Z"
}Refresh credential health without returning or logging token material.
| connection_id required | string <uuid> (Connection Id) |
{- "allow_non_interactive": true,
- "created_at": "2019-08-24T14:15:22Z",
- "display_name": "string",
- "executing_identity": {
- "account": {
- "display": "string",
- "id": "string",
- "tenant_id": "string"
}, - "identity": "user_delegated"
}, - "granted_scopes": [
- "string"
], - "has_credentials": true,
- "health": "unknown",
- "health_checked_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "ownership_mode": "user",
- "provider_key": "string",
- "status": "pending",
- "status_reason": "credential-missing",
- "updated_at": "2019-08-24T14:15:22Z"
}Authorize an instance-configured registration for an existing connection.
| connection_id required | string <uuid> (Connection Id) |
| registration_id required | string (Registration Id) [ 1 .. 120 ] characters ^[a-z0-9][a-z0-9_-]*$ |
| scopes required | Array of strings (Scopes) [ 1 .. 512 ] items |
{- "registration_id": "string",
- "scopes": [
- "string"
]
}{- "authorization_url": "string"
}Revoke at the provider when supported and always remove local credentials.
| connection_id required | string <uuid> (Connection Id) |
{- "allow_non_interactive": true,
- "created_at": "2019-08-24T14:15:22Z",
- "display_name": "string",
- "executing_identity": {
- "account": {
- "display": "string",
- "id": "string",
- "tenant_id": "string"
}, - "identity": "user_delegated"
}, - "granted_scopes": [
- "string"
], - "has_credentials": true,
- "health": "unknown",
- "health_checked_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "ownership_mode": "user",
- "provider_key": "string",
- "provider_revocation": "revoked",
- "status": "pending",
- "status_reason": "credential-missing",
- "updated_at": "2019-08-24T14:15:22Z"
}Check stored credentials, including Slack validation, and requested scope coverage.
| connection_id required | string <uuid> (Connection Id) |
| required_scopes | Array of strings (Required Scopes) <= 512 items |
{- "required_scopes": [
- "string"
]
}{- "allow_non_interactive": true,
- "created_at": "2019-08-24T14:15:22Z",
- "display_name": "string",
- "executing_identity": {
- "account": {
- "display": "string",
- "id": "string",
- "tenant_id": "string"
}, - "identity": "user_delegated"
}, - "granted_scopes": [
- "string"
], - "has_credentials": true,
- "health": "unknown",
- "health_checked_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "ownership_mode": "user",
- "provider_key": "string",
- "status": "pending",
- "status_reason": "credential-missing",
- "updated_at": "2019-08-24T14:15:22Z"
}End-user ids that contain search, so an admin can pick the exact id the app sent.
| search required | string (Search) [ 2 .. 255 ] characters |
| limit | integer (Limit) [ 1 .. 50 ] Default: 20 |
[- {
- "end_user_id": "string",
- "messages": 0
}
]Create and approve in one call, for a customer app that decides on its own.
End User Id (string) or End User Id (null) (End User Id) | |
Array of Flow Ids (strings) or Flow Ids (null) (Flow Ids) | |
| subject_type required | string (DataSubjectType) Enum: "builder" "end_user" |
User Id (string) or User Id (null) (User Id) | |
Username (string) or Username (null) (Username) |
{- "end_user_id": "string",
- "flow_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "subject_type": "builder",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "username": "string"
}{- "counts": { },
- "decided_at": "2019-08-24T14:15:22Z",
- "decided_by": "4accc021-c0cc-4c2c-8a78-605a0ed6da31",
- "due_at": "2019-08-24T14:15:22Z",
- "error": { },
- "finished_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "overdue": false,
- "phase": "string",
- "refusal_note": "string",
- "requested_at": "2019-08-24T14:15:22Z",
- "requested_by": "cda0f200-65cd-4343-aedd-9c936b908826",
- "source": "string",
- "status": "string",
- "subject_label": "string",
- "subject_type": "string",
- "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4"
}Count what Langflow holds about a subject, without creating a request.
End User Id (string) or End User Id (null) (End User Id) | |
Array of Flow Ids (strings) or Flow Ids (null) (Flow Ids) | |
| subject_type required | string (DataSubjectType) Enum: "builder" "end_user" |
User Id (string) or User Id (null) (User Id) | |
Username (string) or Username (null) (Username) |
{- "end_user_id": "string",
- "flow_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "subject_type": "builder",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "username": "string"
}{- "blocked_by": "deployed_flows",
- "counts": {
- "property1": 0,
- "property2": 0
}, - "deployments": [
- "string"
], - "shared_flows": [
- "string"
], - "subject_type": "string"
}Array of Status (strings) or Status (null) (Status) | |
DataSubjectType (string) or Subject Type (null) (Subject Type) | |
| open_only | boolean (Open Only) Default: false |
| skip | integer (Skip) >= 0 Default: 0 |
| limit | integer (Limit) [ 1 .. 200 ] Default: 50 |
{- "requests": [
- {
- "counts": { },
- "decided_at": "2019-08-24T14:15:22Z",
- "decided_by": "4accc021-c0cc-4c2c-8a78-605a0ed6da31",
- "due_at": "2019-08-24T14:15:22Z",
- "error": { },
- "finished_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "overdue": false,
- "phase": "string",
- "refusal_note": "string",
- "requested_at": "2019-08-24T14:15:22Z",
- "requested_by": "cda0f200-65cd-4343-aedd-9c936b908826",
- "source": "string",
- "status": "string",
- "subject_label": "string",
- "subject_type": "string",
- "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4"
}
], - "total_count": 0
}Record a request for an admin to review. Returns the open request when one already exists.
End User Id (string) or End User Id (null) (End User Id) | |
Array of Flow Ids (strings) or Flow Ids (null) (Flow Ids) | |
| subject_type required | string (DataSubjectType) Enum: "builder" "end_user" |
User Id (string) or User Id (null) (User Id) | |
Username (string) or Username (null) (Username) |
{- "end_user_id": "string",
- "flow_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "subject_type": "builder",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "username": "string"
}{- "counts": { },
- "decided_at": "2019-08-24T14:15:22Z",
- "decided_by": "4accc021-c0cc-4c2c-8a78-605a0ed6da31",
- "due_at": "2019-08-24T14:15:22Z",
- "error": { },
- "finished_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "overdue": false,
- "phase": "string",
- "refusal_note": "string",
- "requested_at": "2019-08-24T14:15:22Z",
- "requested_by": "cda0f200-65cd-4343-aedd-9c936b908826",
- "source": "string",
- "status": "string",
- "subject_label": "string",
- "subject_type": "string",
- "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4"
}| request_id required | string <uuid> (Request Id) |
{- "counts": { },
- "decided_at": "2019-08-24T14:15:22Z",
- "decided_by": "4accc021-c0cc-4c2c-8a78-605a0ed6da31",
- "due_at": "2019-08-24T14:15:22Z",
- "error": { },
- "finished_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "overdue": false,
- "phase": "string",
- "refusal_note": "string",
- "requested_at": "2019-08-24T14:15:22Z",
- "requested_by": "cda0f200-65cd-4343-aedd-9c936b908826",
- "source": "string",
- "status": "string",
- "subject_label": "string",
- "subject_type": "string",
- "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4"
}Stop all access now and erase in the background.
| request_id required | string <uuid> (Request Id) |
{- "counts": { },
- "decided_at": "2019-08-24T14:15:22Z",
- "decided_by": "4accc021-c0cc-4c2c-8a78-605a0ed6da31",
- "due_at": "2019-08-24T14:15:22Z",
- "error": { },
- "finished_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "overdue": false,
- "phase": "string",
- "refusal_note": "string",
- "requested_at": "2019-08-24T14:15:22Z",
- "requested_by": "cda0f200-65cd-4343-aedd-9c936b908826",
- "source": "string",
- "status": "string",
- "subject_label": "string",
- "subject_type": "string",
- "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4"
}What approving would erase, and whether a guard blocks it.
| request_id required | string <uuid> (Request Id) |
{- "blocked_by": "deployed_flows",
- "counts": {
- "property1": 0,
- "property2": 0
}, - "deployments": [
- "string"
], - "shared_flows": [
- "string"
], - "subject_type": "string"
}Decline a request (legal hold or another Art. 17(3) exception). The note stays internal.
| request_id required | string <uuid> (Request Id) |
Note (string) or Note (null) (Note) | |
Any of <= 1000 characters string (Note) <= 1000 characters | |
{- "note": "string"
}{- "counts": { },
- "decided_at": "2019-08-24T14:15:22Z",
- "decided_by": "4accc021-c0cc-4c2c-8a78-605a0ed6da31",
- "due_at": "2019-08-24T14:15:22Z",
- "error": { },
- "finished_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "overdue": false,
- "phase": "string",
- "refusal_note": "string",
- "requested_at": "2019-08-24T14:15:22Z",
- "requested_by": "cda0f200-65cd-4343-aedd-9c936b908826",
- "source": "string",
- "status": "string",
- "subject_label": "string",
- "subject_type": "string",
- "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4"
}| request_id required | string <uuid> (Request Id) |
{- "counts": { },
- "decided_at": "2019-08-24T14:15:22Z",
- "decided_by": "4accc021-c0cc-4c2c-8a78-605a0ed6da31",
- "due_at": "2019-08-24T14:15:22Z",
- "error": { },
- "finished_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "overdue": false,
- "phase": "string",
- "refusal_note": "string",
- "requested_at": "2019-08-24T14:15:22Z",
- "requested_by": "cda0f200-65cd-4343-aedd-9c936b908826",
- "source": "string",
- "status": "string",
- "subject_label": "string",
- "subject_type": "string",
- "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4"
}Poll for extension lifecycle events the current user has triggered.
Events are scoped to the authenticated user via a server-derived keyspace
(user:{user_id}); there is no client-controllable keyspace, so an
authenticated user cannot read another user's flow-migration or
bundle-reload events. A client-supplied keyspace query parameter is
rejected with 422 so the contract is explicit -- previously the value was
silently dropped, which masked client bugs that assumed it had effect.
svc.since() uses blocking sqlite3; run in a thread pool so the asyncio event loop is not held while waiting on disk I/O.
| since | number (Since) Default: 0 UTC epoch timestamp; return events after this cursor |
{- "events": [
- {
- "payload": { },
- "timestamp": 0,
- "type": "string"
}
], - "settled": true
}Trigger an atomic-swap reload for a single Bundle.
Returns the typed :class:~lfx.extension.reload.ReloadResult body on
success. Per the typed-error contract, structural failures
(broken bundle, missing source path, name mismatch) surface as
422 Unprocessable Entity with the first typed error in the body
so clients can surface fix hints inline; the full ReloadResult
payload (with all errors and warnings) is returned via the FastAPI
detail envelope. Concurrency-control collisions surface as
409 Conflict (reload-in-progress). Non-2xx is the wire
contract for every error path -- the body still carries the typed
error so the client renders the same fix-hint envelope.
| extension_id required | string (Extension Id) |
| bundle_name required | string (Bundle Name) |
{ }Download profile picture from local filesystem.
Profile pictures are first looked up in config_dir/profile_pictures/, then fallback to the package's bundled profile_pictures directory.
| folder_name required | string (Folder Name) |
| file_name required | string (File Name) |
null| flow_id required | string <uuid> (Flow Id) |
| file required | string <application/octet-stream> (File) |
{- "file_path": "string",
- "flowId": "string"
}List the files available to the current user.
[- {
- "created_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "path": "string",
- "provider": "string",
- "size": 0,
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}
]Upload a file for the current user and track it in the database.
| append | boolean (Append) Default: false |
| ephemeral | boolean (Ephemeral) Default: false |
| file required | string <application/octet-stream> (File) |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "path": "string",
- "provider": "string",
- "size": 0
}List the files available to the current user.
[- {
- "created_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "path": "string",
- "provider": "string",
- "size": 0,
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}
]Upload a file for the current user and track it in the database.
| append | boolean (Append) Default: false |
| ephemeral | boolean (Ephemeral) Default: false |
| file required | string <application/octet-stream> (File) |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "path": "string",
- "provider": "string",
- "size": 0
}Delete multiple files by their IDs.
[- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]nullDownload multiple files as a zip file by their IDs.
[- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]nullDownload a file by its ID or return its content as a string/bytes.
Args: file_id: UUID of the file. current_user: Authenticated user. session: Database session. storage_service: File storage service. return_content: If True, return raw content (str) instead of StreamingResponse.
Returns: StreamingResponse for client downloads or str for internal use.
| file_id required | string <uuid> (File Id) |
| return_content | boolean (Return Content) Default: false |
nullEdit the name of a file by its ID.
| file_id required | string <uuid> (File Id) |
| name required | string (Name) |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "path": "string",
- "provider": "string",
- "size": 0
}Delete multiple flows by their IDs.
[- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]nullRetrieve a list of flows with optional pagination, filtering, and header-only mode.
| remove_example_flows | boolean (Remove Example Flows) Default: false |
| components_only | boolean (Components Only) Default: false |
| get_all | boolean (Get All) Default: true |
Folder Id (string) or Folder Id (null) (Folder Id) | |
FlowType (string) or Flow Type (null) (Flow Type) | |
| header_flows | boolean (Header Flows) Default: false |
| page | integer (Page) >= 1 Default: 1 |
| size | integer (Size) [ 1 .. 100 ] Default: 50 |
[ ]A2A Card Overrides (object) or A2A Card Overrides (null) (A2A Card Overrides) User overrides for the generated A2A agent card (skill description, examples, tags) | |
A2A Enabled (boolean) or A2A Enabled (null) (A2A Enabled) Default: false Can be exposed as an A2A agent (only meaningful when flow_type=agent) | |
| access_type | string (AccessTypeEnum) Default: "PRIVATE" Enum: "PRIVATE" "PUBLIC" |
Action Description (string) or Action Description (null) (Action Description) The description of the action associated with the flow | |
Action Name (string) or Action Name (null) (Action Name) The name of the action associated with the flow | |
Data (object) or Data (null) (Data) | |
Description (string) or Description (null) (Description) | |
Endpoint Name (string) or Endpoint Name (null) (Endpoint Name) | |
| flow_type | string (FlowType) Default: "workflow" Enum: "workflow" "agent" Whether the flow is a plain workflow or an agent (publishable over A2A) |
Folder Id (string) or Folder Id (null) (Folder Id) | |
Fs Path (string) or Fs Path (null) (Fs Path) | |
Gradient (string) or Gradient (null) (Gradient) | |
Icon (string) or Icon (null) (Icon) | |
Icon Bg Color (string) or Icon Bg Color (null) (Icon Bg Color) | |
Id (string) or Id (null) (Id) | |
Is Component (boolean) or Is Component (null) (Is Component) Default: false | |
Locked (boolean) or Locked (null) (Locked) Default: false | |
Mcp Enabled (boolean) or Mcp Enabled (null) (Mcp Enabled) Default: false Can be exposed in the MCP server | |
| name required | string (Name) |
Array of Tags (strings) or Tags (null) (Tags) | |
Updated At (string) or Updated At (null) (Updated At) | |
User Id (string) or User Id (null) (User Id) | |
Webhook (boolean) or Webhook (null) (Webhook) Default: false Can be used on the webhook endpoint | |
Workspace Id (string) or Workspace Id (null) (Workspace Id) |
{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "fs_path": "string",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Flow audit events, newest first, filtered and keyset-paginated.
Requires the flow:audit_read permission. Without an authorization plugin,
a non-superuser sees events on Flows they own and events they made. A read of
one flow_id is bounded to that id's current life whoever authorized it,
because an id is freed by a delete and re-creatable in a Project the caller
chooses; the unfiltered feed names no such id and keeps every life.
| flow_id | string <uuid> Exact Flow. |
| operation | Array of any Items Enum: "create" "replace" "patch" "delete" Repeatable; values are ORed. |
| event_type | Array of any Items Enum: "authz" "action" Repeatable; values are ORed. |
| result | Array of any Items Enum: "allow" "deny" "succeeded" "failed" Repeatable; values are ORed. |
| user_id | string <uuid> Exact Langflow account. |
| actor_type | Array of any Items Enum: "user" "api_key" "service" "system" "unknown" Repeatable; values are ORed. |
| actor_id | string <uuid> Exact authenticated principal or credential. |
| acting_subject | string Exact represented-user subject. |
| acting_issuer | string Represented-user issuer; requires acting_subject. |
| request_id | string <uuid> Exact request correlation id. |
| since | string <date-time> Inclusive RFC 3339 timestamp. |
| until | string <date-time> Exclusive RFC 3339 timestamp, later than since. |
| cursor | string Opaque cursor from the previous page. |
| limit | integer [ 1 .. 200 ] Default: 50 Page size. |
{- "items": [
- {
- "action": "string",
- "actor": {
- "acting_issuer": "string",
- "acting_subject": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "string",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}, - "details": { },
- "error_code": "string",
- "event_type": "string",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_name": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "operation": "string",
- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "result": "string",
- "timestamp": "string"
}
], - "next_cursor": "string"
}Retrieve a list of basic example flows.
| include_blocked | boolean (Include Blocked) Default: false |
[- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
]Create multiple new flows.
required | Array of objects (Flows) | ||||||||||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||||||||||
{- "flows": [
- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "fs_path": "string",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
]
}[- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
]Download all flows as a zip file.
[- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]nullRead a public flow without requiring authorization (public means public).
Because this endpoint is unauthenticated, secret field values (every template
field marked password) are stripped before returning so a PUBLIC flow does
not leak the owner's stored API keys / credentials to anonymous callers.
The response also carries the anonymous capability set. A canonical PUBLIC
share admits flows whose access_type is still PRIVATE and bounds them at
its own permission level, so a direct-link client that re-derives access from
the legacy flag disagrees with this decision in both directions.
| flow_id required | string <uuid> (Flow Id) |
{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "public_access": {
- "can_execute": true,
- "can_read": true
}, - "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Upload flows from a JSON or ZIP file (upsert semantics for flows with stable IDs).
Folder Id (string) or Folder Id (null) (Folder Id) |
File (string) or File (null) (File) | |
Any of string <application/octet-stream> (File) | |
[- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
]Read a flow.
| flow_id required | string <uuid> (Flow Id) |
{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Update a flow.
| flow_id required | string <uuid> (Flow Id) |
If-Match (string) or If-Match (null) (If-Match) |
A2A Card Overrides (object) or A2A Card Overrides (null) (A2A Card Overrides) | |
A2A Enabled (boolean) or A2A Enabled (null) (A2A Enabled) | |
AccessTypeEnum (string) or null | |
Action Description (string) or Action Description (null) (Action Description) | |
Action Name (string) or Action Name (null) (Action Name) | |
Data (object) or Data (null) (Data) | |
Description (string) or Description (null) (Description) | |
Endpoint Name (string) or Endpoint Name (null) (Endpoint Name) | |
FlowType (string) or null | |
Folder Id (string) or Folder Id (null) (Folder Id) | |
Fs Path (string) or Fs Path (null) (Fs Path) | |
Locked (boolean) or Locked (null) (Locked) | |
Mcp Enabled (boolean) or Mcp Enabled (null) (Mcp Enabled) | |
Name (string) or Name (null) (Name) | |
Workspace Id (string) or Workspace Id (null) (Workspace Id) |
{- "a2a_card_overrides": { },
- "a2a_enabled": true,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "fs_path": "string",
- "locked": true,
- "mcp_enabled": true,
- "name": "string",
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Create or update a flow with a specific ID (upsert).
Returns 201 for creation, 200 for update. Returns 404 if owned by another user.
| flow_id required | string <uuid> (Flow Id) |
If-Match (string) or If-Match (null) (If-Match) |
A2A Card Overrides (object) or A2A Card Overrides (null) (A2A Card Overrides) User overrides for the generated A2A agent card (skill description, examples, tags) | |
A2A Enabled (boolean) or A2A Enabled (null) (A2A Enabled) Default: false Can be exposed as an A2A agent (only meaningful when flow_type=agent) | |
| access_type | string (AccessTypeEnum) Default: "PRIVATE" Enum: "PRIVATE" "PUBLIC" |
Action Description (string) or Action Description (null) (Action Description) The description of the action associated with the flow | |
Action Name (string) or Action Name (null) (Action Name) The name of the action associated with the flow | |
Data (object) or Data (null) (Data) | |
Description (string) or Description (null) (Description) | |
Endpoint Name (string) or Endpoint Name (null) (Endpoint Name) | |
| flow_type | string (FlowType) Default: "workflow" Enum: "workflow" "agent" Whether the flow is a plain workflow or an agent (publishable over A2A) |
Folder Id (string) or Folder Id (null) (Folder Id) | |
Fs Path (string) or Fs Path (null) (Fs Path) | |
Gradient (string) or Gradient (null) (Gradient) | |
Icon (string) or Icon (null) (Icon) | |
Icon Bg Color (string) or Icon Bg Color (null) (Icon Bg Color) | |
Id (string) or Id (null) (Id) | |
Is Component (boolean) or Is Component (null) (Is Component) Default: false | |
Locked (boolean) or Locked (null) (Locked) Default: false | |
Mcp Enabled (boolean) or Mcp Enabled (null) (Mcp Enabled) Default: false Can be exposed in the MCP server | |
| name required | string (Name) |
Array of Tags (strings) or Tags (null) (Tags) | |
Updated At (string) or Updated At (null) (Updated At) | |
User Id (string) or User Id (null) (User Id) | |
Webhook (boolean) or Webhook (null) (Webhook) Default: false Can be used on the webhook endpoint | |
Workspace Id (string) or Workspace Id (null) (Workspace Id) |
{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "fs_path": "string",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Create an inert copy of a flow, optionally carrying a caller-supplied graph.
Read access is deliberately enough: anyone who can open a flow can already export it and import the result, so requiring write here would block the conflict dialog's only exit without protecting anything. The copy is owned by whoever forked it and inherits no exposure from the source.
| flow_id required | string <uuid> (Flow Id) |
Data (object) or Data (null) (Data) Graph for the copy; the source graph when omitted | |
Name (string) or Name (null) (Name) Name for the copy; the source name plus a suffix by default |
{- "data": { },
- "name": "string"
}{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Return translated note node descriptions for the current locale.
Returns a mapping of node_id → translated markdown text. Only nodes with a matching translation key are included; nodes without translations are omitted so the caller can leave them unchanged.
A missing or inaccessible flow yields 404 (via AuthorizedReadFlow),
consistent with GET /flows/{id}; the sole frontend caller (NoteNode)
treats that as "no translations" and renders the original text.
| flow_id required | string <uuid> (Flow Id) |
{- "property1": "string",
- "property2": "string"
}Replace a flow with a merged graph, keeping the replaced version in history.
This is the deliberate half of the conflict dialog, and it is still guarded. The caller sends the token it reviewed, not the stale one it was refused on and not nothing at all: writing unconditionally here would silently discard a fourth writer who landed while the dialog was open, reopening the lost update the whole feature exists to close. So the meaning is "replace the version I just looked at", and a flow that moved again is refused with a fresh 409.
The archived entry is attributed to whoever last wrote the flow rather than to the caller, because it is their work being replaced -- attributing it here would put the caller's name on someone else's version and defeat the point of keeping it.
The write right is claimed before anything is archived. Archiving first and
letting the refusal roll it back does not work: version entries are written in
a begin_nested() savepoint that survives the outer rollback, so a refused
overwrite left an orphan version in someone's history. Claiming first means a
stale caller is turned away before a single row is written.
| flow_id required | string <uuid> (Flow Id) |
If-Match (string) or If-Match (null) (If-Match) |
required | object (Data) | ||
| |||
{- "data": { }
}{- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}Report which version of a flow is current, and who last changed it.
| flow_id required | string <uuid> (Flow Id) |
{- "last_modified_by": "c917f0ea-f615-48d3-ae23-bdf591333146",
- "last_modified_by_username": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c"
}Get a list of starter projects.
| include_blocked | boolean (Include Blocked) Default: false |
[- {
- "data": {
- "edges": [
- { }
], - "nodes": [
- { }
], - "viewport": {
- "x": 0,
- "y": 0,
- "zoom": 0
}
}, - "description": "string",
- "endpoint_name": "string",
- "is_component": true,
- "name": "string",
- "name_key": "string"
}
]List loaded integration providers and the caller's effective access.
Blocked providers and actions are omitted by default so a picker cannot
advertise what execution would refuse. include_blocked returns them with
their decision attached, which is what the operator panel renders, and is
superuser-only for the same reason every other include_blocked surface
is (/api/v1/all, starter projects, basic examples): the deny decision is
operator information, not something a plain caller may enumerate.
Provider (string) or Provider (null) (Provider) | |
| include_blocked | boolean (Include Blocked) Default: false |
Flow Id (string) or Flow Id (null) (Flow Id) | |
Project Id (string) or Project Id (null) (Project Id) |
{- "deployment_context": "self_managed",
- "providers": [
- {
- "approved": true,
- "capabilities": [
- {
- "allowed": true,
- "auth_profile_id": "string",
- "blocked_policy_key": "string",
- "component_ref": "string",
- "deployment_contexts": [
- "string"
], - "display_name": "string",
- "id": "string",
- "identity": "string",
- "maturity": "string",
- "mcp_tool": "string",
- "policy_keys": [
- "string"
], - "risk": "string",
- "substrate": "string"
}
], - "connection_count": 0,
- "display_name": "string",
- "docs_url": "string",
- "enabled": true,
- "icon": "string",
- "provider_id": "string"
}
]
}Return the integration decision set that applies to this caller.
Flow Id (string) or Flow Id (null) (Flow Id) | |
Project Id (string) or Project Id (null) (Project Id) |
{- "approved_provider_ids": [
- "string"
], - "blocked_action_keys": [
- "string"
], - "loaded_provider_ids": [
- "string"
], - "managed_externally": true,
- "policy_revision": 0,
- "unrestricted": true
}Abandon a failed migration without deleting its source or recovery evidence.
| kb_id required | string <uuid> (Kb Id) |
| expected_generation required | integer (Expected Generation) > 0 |
{- "expected_generation": 1
}nullRetry deletion only for the UUID and generation confirmed by the administrator.
| kb_id required | string <uuid> (Kb Id) |
| expected_generation required | integer (Expected Generation) > 0 |
{- "expected_generation": 1
}nullShow users their own availability and administrators the recovery queue.
Paths, embedding credentials and other users' resources never appear in regular-user responses. Progress is joined to the active migration only.
nullUpdate the MCP settings of all flows in a project and project-level auth settings.
On MCP Composer failure, this endpoint should return with a 200 status code and an error message in the body of the response to display to the user.
| project_id required | string <uuid> (Project Id) |
AuthSettings (object) or null | |
required | Array of objects (Settings) |
{- "auth_settings": {
- "auth_type": "none",
- "oauth_auth_url": "string",
- "oauth_callback_path": "string",
- "oauth_callback_url": "string",
- "oauth_client_id": "string",
- "oauth_client_secret": "pa$$word",
- "oauth_host": "string",
- "oauth_mcp_scope": "string",
- "oauth_port": "string",
- "oauth_provider_scope": "string",
- "oauth_server_url": "string",
- "oauth_token_url": "string"
}, - "settings": [
- {
- "action_description": "string",
- "action_name": "string",
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "mcp_enabled": true,
- "name": "string"
}
]
}nullGet the MCP Composer URL for a specific project.
On failure, this endpoint should return with a 200 status code and an error message in the body of the response to display to the user.
| project_id required | string <uuid> (Project Id) |
{- "error_message": "string",
- "legacy_sse_url": "string",
- "project_id": "string",
- "streamable_http_url": "string",
- "uses_composer": true
}Install MCP server configuration for Cursor, Windsurf, or Claude.
| project_id required | string <uuid> (Project Id) |
| client required | string (Client) |
Transport (string) or Transport (null) (Transport) |
{- "client": "string",
- "transport": "sse"
}nullCheck if MCP server configuration is installed for this project in Cursor, Windsurf, or Claude.
| project_id required | string <uuid> (Project Id) |
nullRead the global provider policy. An empty approved list is unrestricted.
{- "approved_provider_ids": [
- "string"
], - "managed_externally": true,
- "registered_providers": [
- {
- "display_name": "string",
- "provider": "string",
- "provider_id": "string"
}
]
}Atomically replace the global provider policy and invalidate snapshots.
| approved_provider_ids required | Array of strings (Approved Provider Ids) <= 1000 items [ items <= 255 characters ^[a-z0-9][a-z0-9._-]*$ ] |
{- "approved_provider_ids": [
- "string"
]
}{- "approved_provider_ids": [
- "string"
], - "managed_externally": true,
- "registered_providers": [
- {
- "display_name": "string",
- "provider": "string",
- "provider_id": "string"
}
]
}Atomically replace the global provider policy and invalidate snapshots.
| approved_provider_ids required | Array of strings (Approved Provider Ids) <= 1000 items [ items <= 255 characters ^[a-z0-9][a-z0-9._-]*$ ] |
{- "approved_provider_ids": [
- "string"
]
}{- "approved_provider_ids": [
- "string"
], - "managed_externally": true,
- "registered_providers": [
- {
- "display_name": "string",
- "provider": "string",
- "provider_id": "string"
}
]
}| flow_id required | string <uuid> (Flow Id) |
{- "vertex_builds": {
- "property1": [
- {
- "artifacts": { },
- "build_id": "bfb1f3fa-bf7b-43a5-9e0b-26cc050e44cb",
- "data": { },
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "id": "string",
- "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
- "params": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "valid": true
}
], - "property2": [
- {
- "artifacts": { },
- "build_id": "bfb1f3fa-bf7b-43a5-9e0b-26cc050e44cb",
- "data": { },
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "id": "string",
- "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
- "params": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "valid": true
}
]
}
}Return a snapshot of job-queue observability metrics.
For the in-memory backend this exposes only backend and active_jobs.
For the Redis backend the snapshot also includes bridge counts, consumer
wrappers, cancel-dispatcher liveness, and the cancel-stats counters
(published / marker_hit / dispatched_owned /
dispatched_foreign / publish_errors / dispatcher_reconnects /
polling_watchdog_kills / activity_touch_errors /
activity_get_errors / activity_parse_errors /
dispatcher_internal_errors). dispatcher_reconnects tracks explicit
dispatcher-loop retries and redis-py transparent pubsub reconnect callbacks.
Restricted to superusers because the snapshot exposes process-wide tenant activity (live job counts, cancel rates) — useful for ops, sensitive in multi-tenant deployments.
{ }Delete authorized messages after fencing associated Memory storage and tracking data.
[- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}Flow Id (string) or Flow Id (null) (Flow Id) | |
Session Id (string) or Session Id (null) (Session Id) | |
End User Id (string) or End User Id (null) (End User Id) | |
Sender (string) or Sender (null) (Sender) | |
Sender Name (string) or Sender Name (null) (Sender Name) | |
Order By (string) or Order By (null) (Order By) Default: "timestamp" | |
| order | string (Order) Default: "ASC" |
Limit (integer) or Limit (null) (Limit) | |
Offset (integer) or Offset (null) (Offset) |
[- {
- "category": "string",
- "content_blocks": [
- { }
], - "context_id": "string",
- "duration": 0,
- "edit": true,
- "files": [ ],
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "id": "string",
- "properties": {
- "allow_markdown": false,
- "background_color": "string",
- "build_duration": 0,
- "edited": false,
- "icon": "string",
- "positive_feedback": true,
- "source": {
- "display_name": "string",
- "id": "string",
- "source": "string"
}, - "state": "partial",
- "targets": [ ],
- "text_color": "string",
- "usage": {
- "input_tokens": 0,
- "output_tokens": 0,
- "total_tokens": 0
}
}, - "sender": "string",
- "sender_name": "string",
- "session_id": "string",
- "session_metadata": { },
- "text": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}
]| old_session_id required | string (Old Session Id) |
| new_session_id required | string (New Session Id) The new session ID to update to |
[- {
- "category": "string",
- "content_blocks": [
- { }
], - "context_id": "string",
- "duration": 0,
- "edit": true,
- "files": [ ],
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "id": "string",
- "properties": {
- "allow_markdown": false,
- "background_color": "string",
- "build_duration": 0,
- "edited": false,
- "icon": "string",
- "positive_feedback": true,
- "source": {
- "display_name": "string",
- "id": "string",
- "source": "string"
}, - "state": "partial",
- "targets": [ ],
- "text_color": "string",
- "usage": {
- "input_tokens": 0,
- "output_tokens": 0,
- "total_tokens": 0
}
}, - "sender": "string",
- "sender_name": "string",
- "session_id": "string",
- "session_metadata": { },
- "text": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}
]Delete messages for a single session.
Only deletes messages from sessions belonging to flows owned by the current user.
| session_id required | string (Session Id) |
{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}Bulk delete messages for multiple sessions at once.
Only deletes messages from sessions belonging to flows owned by the current user.
Args: session_ids: List of session IDs to delete (max 500) session: Database session current_user: Current authenticated user
Returns: Confirmation message with count of deleted sessions
Raises: HTTPException: 400 if session_ids list exceeds 500 items HTTPException: 500 if database operation fails
[- "string"
]nullFlow Id (string) or Flow Id (null) (Flow Id) | |
Limit (integer) or Limit (null) (Limit) | |
Offset (integer) or Offset (null) (Offset) |
[- "string"
]Update an owned message after authorizing its flow and attachment namespaces.
| message_id required | string <uuid> (Message Id) |
Category (string) or Category (null) (Category) | |
Array of Content Blocks (objects) or Content Blocks (null) (Content Blocks) | |
Context Id (string) or Context Id (null) (Context Id) | |
Edit (boolean) or Edit (null) (Edit) | |
Error (boolean) or Error (null) (Error) | |
Array of Files (strings) or Files (null) (Files) | |
Properties (object) or null | |
Sender (string) or Sender (null) (Sender) | |
Sender Name (string) or Sender Name (null) (Sender Name) | |
Session Id (string) or Session Id (null) (Session Id) | |
Session Metadata (object) or Session Metadata (null) (Session Metadata) | |
Text (string) or Text (null) (Text) |
{- "category": "string",
- "content_blocks": [
- { }
], - "context_id": "string",
- "edit": true,
- "error": true,
- "files": [
- "string"
], - "properties": {
- "allow_markdown": false,
- "background_color": "string",
- "build_duration": 0,
- "edited": false,
- "icon": "string",
- "positive_feedback": true,
- "source": {
- "display_name": "string",
- "id": "string",
- "source": "string"
}, - "state": "partial",
- "targets": [ ],
- "text_color": "string",
- "usage": {
- "input_tokens": 0,
- "output_tokens": 0,
- "total_tokens": 0
}
}, - "sender": "string",
- "sender_name": "string",
- "session_id": "string",
- "session_metadata": { },
- "text": "string"
}{- "category": "message",
- "content_blocks": [
- { }
], - "context_id": "string",
- "edit": false,
- "error": false,
- "files": [
- "string"
], - "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "properties": {
- "allow_markdown": false,
- "background_color": "string",
- "build_duration": 0,
- "edited": false,
- "icon": "string",
- "positive_feedback": true,
- "source": {
- "display_name": "string",
- "id": "string",
- "source": "string"
}, - "state": "partial",
- "targets": [ ],
- "text_color": "string",
- "usage": {
- "input_tokens": 0,
- "output_tokens": 0,
- "total_tokens": 0
}
}, - "run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec",
- "sender": "string",
- "sender_name": "string",
- "session_id": "string",
- "session_metadata": { },
- "text": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}| flow_id required | string <uuid> (Flow Id) |
Page (integer) or Page (null) (Page) | |
Size (integer) or Size (null) (Size) |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "inputs": { },
- "outputs": { },
- "status": "string",
- "target_id": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "vertex_id": "string"
}
], - "page": 1,
- "pages": 0,
- "size": 1,
- "total": 0
}Delete all traces for a flow.
Args: flow_id: The ID of the flow whose traces should be deleted. current_user: The authenticated user (required for authorization).
| flow_id required | string <uuid> (Flow Id) |
{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}Get list of traces for a flow.
Args: current_user: Authenticated user (required for authorization) flow_id: Filter by flow ID session_id: Filter by session ID status: Filter by trace status query: Search query for trace name/id/session id start_time: Filter traces starting on/after this time (ISO) end_time: Filter traces starting on/before this time (ISO) page: Page number (1-based) size: Page size
Returns: List of traces
Flow Id (string) or Flow Id (null) (Flow Id) | |
Session Id (string) or Session Id (null) (Session Id) | |
SpanStatus (string) or Status (null) (Status) | |
Query (string) or Query (null) (Query) | |
Start Time (string) or Start Time (null) (Start Time) | |
End Time (string) or End Time (null) (End Time) | |
| page | integer (Page) >= 0 Default: 1 |
| size | integer (Size) [ 1 .. 200 ] Default: 50 |
{- "pages": 0,
- "total": 0,
- "traces": [
- {
- "flowId": "ccd52024-9c9c-4751-993a-9d75a778bf9d",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "input": { },
- "name": "string",
- "output": { },
- "sessionId": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "status": "unset",
- "totalLatencyMs": 0,
- "totalTokens": 0
}
]
}Delete a trace and all its spans.
Args: trace_id: The ID of the trace to delete. current_user: The authenticated user (required for authorization).
| trace_id required | string <uuid> (Trace Id) |
{- "detail": [
- {
- "ctx": { },
- "input": null,
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}Get a single trace with its hierarchical span tree.
Args: trace_id: The ID of the trace to retrieve. current_user: The authenticated user (required for authorization).
Returns: TraceRead containing the trace and its hierarchical span tree.
| trace_id required | string <uuid> (Trace Id) |
{- "endTime": "2019-08-24T14:15:22Z",
- "flowId": "ccd52024-9c9c-4751-993a-9d75a778bf9d",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "input": { },
- "name": "string",
- "output": { },
- "sessionId": "string",
- "spans": [
- {
- "children": [
- { }
], - "endTime": "2019-08-24T14:15:22Z",
- "error": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "inputs": { },
- "latencyMs": 0,
- "modelName": "string",
- "name": "string",
- "outputs": { },
- "startTime": "2019-08-24T14:15:22Z",
- "status": "unset",
- "tokenUsage": { },
- "type": "chain"
}
], - "startTime": "2019-08-24T14:15:22Z",
- "status": "unset",
- "totalLatencyMs": 0,
- "totalTokens": 0
}{- "approved_integration_provider_ids": [
- "string"
], - "approved_provider_ids": [
- "string"
], - "blocked_component_keys": [
- "string"
], - "blocked_integration_action_keys": [
- "string"
], - "blocked_model_keys": [
- "string"
], - "blocked_template_keys": [
- "string"
], - "content_hash": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
- "initialized": true,
- "managed_externally": false,
- "reason": "string",
- "revision": 0,
- "rollback_of_revision": 0,
- "source": "string"
}| approved_integration_provider_ids | Array of strings (Approved Integration Provider Ids) <= 1000 items [ items <= 120 characters ^[a-zA-Z0-9][a-zA-Z0-9._-]*$ ] |
| approved_provider_ids required | Array of strings (Approved Provider Ids) <= 1000 items [ items <= 255 characters ^[a-z0-9][a-z0-9._-]*$ ] |
| blocked_component_keys required | Array of strings (Blocked Component Keys) <= 1000 items [ items [ 1 .. 255 ] characters ] |
| blocked_integration_action_keys | Array of strings (Blocked Integration Action Keys) <= 1000 items [ items [ 1 .. 255 ] characters ] |
| blocked_model_keys | Array of strings (Blocked Model Keys) <= 1000 items [ items [ 1 .. 255 ] characters ] |
| blocked_template_keys required | Array of strings (Blocked Template Keys) <= 1000 items [ items [ 1 .. 255 ] characters ] |
| expected_revision required | integer (Expected Revision) >= 1 |
Reason (string) or Reason (null) (Reason) |
{- "approved_integration_provider_ids": [
- "string"
], - "approved_provider_ids": [
- "string"
], - "blocked_component_keys": [
- "string"
], - "blocked_integration_action_keys": [
- "string"
], - "blocked_model_keys": [
- "string"
], - "blocked_template_keys": [
- "string"
], - "expected_revision": 1,
- "reason": "string"
}{- "approved_integration_provider_ids": [
- "string"
], - "approved_provider_ids": [
- "string"
], - "blocked_component_keys": [
- "string"
], - "blocked_integration_action_keys": [
- "string"
], - "blocked_model_keys": [
- "string"
], - "blocked_template_keys": [
- "string"
], - "content_hash": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
- "initialized": true,
- "managed_externally": false,
- "reason": "string",
- "revision": 0,
- "rollback_of_revision": 0,
- "source": "string"
}| limit | integer (Limit) [ 1 .. 200 ] Default: 50 |
Before Revision (integer) or Before Revision (null) (Before Revision) |
{- "items": [
- {
- "approved_integration_provider_ids": [
- "string"
], - "approved_provider_ids": [
- "string"
], - "blocked_component_keys": [
- "string"
], - "blocked_integration_action_keys": [
- "string"
], - "blocked_model_keys": [
- "string"
], - "blocked_template_keys": [
- "string"
], - "content_hash": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
- "initialized": true,
- "managed_externally": false,
- "reason": "string",
- "revision": 0,
- "rollback_of_revision": 0,
- "source": "string"
}
], - "next_before_revision": 0
}| revision required | integer (Revision) |
| expected_revision required | integer (Expected Revision) >= 1 |
Reason (string) or Reason (null) (Reason) |
{- "expected_revision": 1,
- "reason": "string"
}{- "approved_integration_provider_ids": [
- "string"
], - "approved_provider_ids": [
- "string"
], - "blocked_component_keys": [
- "string"
], - "blocked_integration_action_keys": [
- "string"
], - "blocked_model_keys": [
- "string"
], - "blocked_template_keys": [
- "string"
], - "content_hash": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
- "initialized": true,
- "managed_externally": false,
- "reason": "string",
- "revision": 0,
- "rollback_of_revision": 0,
- "source": "string"
}[- {
- "auth_settings": { },
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_owner": true,
- "name": "string",
- "owner_username": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}
]Auth Settings (object) or Auth Settings (null) (Auth Settings) Authentication settings for the folder/project | |
Array of Components List (strings) or Components List (null) (Components List) | |
Description (string) or Description (null) (Description) | |
Array of Flows List (strings) or Flows List (null) (Flows List) | |
| name required | string (Name) |
{- "auth_settings": { },
- "components_list": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "description": "string",
- "flows_list": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "name": "string"
}{- "auth_settings": { },
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}Project audit events, newest first, filtered and keyset-paginated.
Requires the project:audit_read permission. Without an authorization plugin,
a non-superuser sees events on Projects they own and events they made.
| project_id | string <uuid> Exact Project. |
| operation | Array of any Items Enum: "create" "replace" "patch" "delete" Repeatable; values are ORed. |
| event_type | Array of any Items Enum: "authz" "action" Repeatable; values are ORed. |
| result | Array of any Items Enum: "allow" "deny" "succeeded" "failed" Repeatable; values are ORed. |
| user_id | string <uuid> Exact Langflow account. |
| actor_type | Array of any Items Enum: "user" "api_key" "service" "system" "unknown" Repeatable; values are ORed. |
| actor_id | string <uuid> Exact authenticated principal or credential. |
| acting_subject | string Exact represented-user subject. |
| acting_issuer | string Represented-user issuer; requires acting_subject. |
| request_id | string <uuid> Exact request correlation id. |
| since | string <date-time> Inclusive RFC 3339 timestamp. |
| until | string <date-time> Exclusive RFC 3339 timestamp, later than since. |
| cursor | string Opaque cursor from the previous page. |
| limit | integer [ 1 .. 200 ] Default: 50 Page size. |
{- "items": [
- {
- "action": "string",
- "actor": {
- "acting_issuer": "string",
- "acting_subject": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "string",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}, - "details": { },
- "error_code": "string",
- "event_type": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "operation": "string",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "project_name": "string",
- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "result": "string",
- "timestamp": "string"
}
], - "next_cursor": "string"
}Upload flows from a file.
Accepts either a JSON file with project metadata (folder_name, folder_description, flows) or a ZIP file containing individual flow JSON files (as produced by the download endpoint).
File (string) or File (null) (File) | |
Any of string <application/octet-stream> (File) | |
[- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
]| project_id required | string <uuid> (Project Id) |
Page (integer) or Page (null) (Page) | |
Size (integer) or Size (null) (Size) | |
| is_component | boolean (Is Component) Default: false |
| is_flow | boolean (Is Flow) Default: false |
| search | string (Search) Default: "" |
{- "flows": {
- "items": [
- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
], - "page": 1,
- "pages": 0,
- "size": 1,
- "total": 0
}, - "folder": {
- "auth_settings": { },
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}
}| project_id required | string <uuid> (Project Id) |
Auth Settings (object) or Auth Settings (null) (Auth Settings) | |
| components | Array of strings <uuid> (Components) [ items <uuid > ] |
Description (string) or Description (null) (Description) | |
| flows | Array of strings <uuid> (Flows) [ items <uuid > ] |
Name (string) or Name (null) (Name) | |
Parent Id (string) or Parent Id (null) (Parent Id) |
{- "auth_settings": { },
- "components": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "description": "string",
- "flows": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "name": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}{- "auth_settings": { },
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}Create or update a project with a specific ID (upsert).
Returns 201 for creation, 200 for update. Returns 404 if owned by another user (avoids leaking existence). A name collision fails loud as 409 on both the create and update paths (unlike POST, which auto-renames).
workspace_id is out of scope: FolderCreate cannot express it, so a synced project
inherits NULL exactly like one created via POST. Workspace assignment is not part of the
upsert contract.
| project_id required | string <uuid> (Project Id) |
Auth Settings (object) or Auth Settings (null) (Auth Settings) Authentication settings for the folder/project | |
Array of Components List (strings) or Components List (null) (Components List) | |
Description (string) or Description (null) (Description) | |
Array of Flows List (strings) or Flows List (null) (Flows List) | |
| name required | string (Name) |
{- "auth_settings": { },
- "components_list": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "description": "string",
- "flows_list": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "name": "string"
}{- "auth_settings": { },
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}Return one bounded, read-only, secret-safe serving snapshot.
| project_id required | string <uuid> (Project Id) |
{- "dependencies": { },
- "flows": [
- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "tags": [
- "string"
]
}
], - "project": {
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}, - "required_connections": [
- {
- "name": "string",
- "provider": "string",
- "scopes": [
- "string"
]
}
], - "required_mcp_projects": [
- {
- "project_id": "string",
- "server_name": "string"
}
], - "required_mcp_variables": [
- "string"
], - "required_models": [
- {
- "model_type": "string",
- "name": "string",
- "provider": "string"
}
], - "required_providers": [
- "string"
], - "required_variables": [
- "string"
], - "unresolved_model_fields": 0
}Read only a committed replacement receipt, even if live content changed.
| project_id required | string <uuid> (Project Id) |
| operation_id required | string <uuid> (Operation Id) |
{- "dependencies": { },
- "flows": [
- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
], - "project": {
- "auth_settings": { },
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}
}Replace a project's full flow set and persist an immutable retry receipt.
| project_id required | string <uuid> (Project Id) |
| operation_id required | string <uuid> (Operation Id) |
Dependencies (object) or Dependencies (null) (Dependencies) | |
required | Description (string) or Description (null) (Description) |
required | Array of objects (Flows) |
Project Name (string) or Project Name (null) (Project Name) |
{- "dependencies": { },
- "description": "string",
- "flows": [
- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "fs_path": "string",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
], - "project_name": "string"
}{- "dependencies": { },
- "flows": [
- {
- "a2a_card_overrides": { },
- "a2a_enabled": false,
- "access_type": "PRIVATE",
- "action_description": "string",
- "action_name": "string",
- "data": { },
- "description": "string",
- "endpoint_name": "string",
- "flow_type": "workflow",
- "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901",
- "gradient": "string",
- "icon": "string",
- "icon_bg_color": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_component": false,
- "locked": false,
- "mcp_enabled": false,
- "name": "string",
- "name_key": "string",
- "tags": [
- "string"
], - "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "version_token": "d16f52a5-5ffe-4dd3-b0e7-092fdab6b12c",
- "webhook": false,
- "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
}
], - "project": {
- "auth_settings": { },
- "description": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}
}Create a response using OpenAI Responses API format.
This endpoint accepts a flow_id in the model parameter and processes the input through the specified Langflow flow.
Args: request: OpenAI Responses API request with model (flow_id) and input background_tasks: FastAPI background task manager api_key_user: Authenticated user from API key http_request: The incoming HTTP request telemetry_service: Telemetry service for logging
Returns: OpenAI-compatible response or streaming response
Raises: HTTPException: For validation errors or flow execution issues
| background | boolean (Background) Default: false Whether to process in background |
Array of Include (strings) or Include (null) (Include) Additional response data to include, e.g., ['tool_call.results'] | |
| input required | string (Input) The input text to process |
| model required | string (Model) The flow ID to execute (used instead of OpenAI model) |
Previous Response Id (string) or Previous Response Id (null) (Previous Response Id) ID of previous response to continue conversation | |
| stream | boolean (Stream) Default: false Whether to stream the response |
Array of Tools (any) or Tools (null) (Tools) Tools are not supported yet |
{- "background": false,
- "include": [
- "string"
], - "input": "string",
- "model": "string",
- "previous_response_id": "string",
- "stream": false,
- "tools": [
- null
]
}nullList the triggers on one flow.
flow_id is required rather than optional: an unscoped list would have to
fan out over every flow the caller can read, and the answer a client wants is
always "the triggers on this flow".
| flow_id required | string <uuid> (Flow Id) Flow whose triggers to list |
| limit | integer (Limit) [ 1 .. 200 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
[- {
- "binding_target": "string",
- "concurrency_limit": 0,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "created_at": "2019-08-24T14:15:22Z",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "kind": "string",
- "last_error": "string",
- "last_fired_at": "2019-08-24T14:15:22Z",
- "max_attempts": 0,
- "name": "string",
- "next_fire_at": "2019-08-24T14:15:22Z",
- "node_id": "string",
- "provider": "string",
- "session_policy": "string",
- "state": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}
]Create a trigger on a flow the caller may write.
The trigger is owned by the flow owner, not by whoever created it. The
execution-principal matrix classifies a trigger run as flow_owner, and
flow-save reconciliation already creates rows that way; keying the API path
off the caller instead would give one flow two kinds of trigger identity
depending on which surface armed it, and would let a collaborator with flow
write silently schedule unattended runs under their own connections.
| binding_target | string (TriggerBindingTarget) Default: "flow" Enum: "flow" "deployment" What a fired event runs.
|
| concurrency_limit | integer (Concurrency Limit) [ 1 .. 100 ] Default: 1 |
object (Config) | |
Connection Id (string) or Connection Id (null) (Connection Id) | |
Deployment Id (string) or Deployment Id (null) (Deployment Id) | |
| flow_id required | string <uuid> (Flow Id) |
Flow Version Id (string) or Flow Version Id (null) (Flow Version Id) | |
| kind required | string (Kind) [ 1 .. 64 ] characters ^[a-z][a-z0-9_]*(\.[a-z0-9_]+)*$ |
| max_attempts | integer (Max Attempts) [ 1 .. 20 ] Default: 5 |
| name required | string (Name) [ 1 .. 255 ] characters |
Node Id (string) or Node Id (null) (Node Id) | |
Provider (string) or Provider (null) (Provider) | |
| session_policy | string (TriggerSessionPolicy) Default: "per_event" Enum: "per_event" "shared" How a dispatched run derives its session id when the payload has no conversation. |
| state | string (TriggerState) Default: "pending" Enum: "pending" "active" "paused" "expired" "needs_reconnect" "error" "dead" Lifecycle of a trigger row.
|
{- "binding_target": "flow",
- "concurrency_limit": 1,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "kind": "string",
- "max_attempts": 5,
- "name": "string",
- "node_id": "string",
- "provider": "string",
- "session_policy": "per_event",
- "state": "pending"
}{- "binding_target": "string",
- "concurrency_limit": 0,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "created_at": "2019-08-24T14:15:22Z",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "kind": "string",
- "last_error": "string",
- "last_fired_at": "2019-08-24T14:15:22Z",
- "max_attempts": 0,
- "name": "string",
- "next_fire_at": "2019-08-24T14:15:22Z",
- "node_id": "string",
- "provider": "string",
- "session_policy": "string",
- "state": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}Accept one Slack Events API delivery and fan it out to the triggers it fires.
The same pipeline as the per-trigger route, with the app in place of the
trigger: resolve the registration, read a bounded body, verify Slack's
signature with the registration's signing secret, rate-limit, and only then
touch the database. Every refusal is the same 404.
Nothing is refused before the signature is checked. A registration id is an
operator's chosen name, not a secret, and a budget spent before verification
is keyed on the client address - which, behind a reverse proxy that is not
trusted for X-Forwarded-For, is the proxy's, shared with Slack. Anyone
who knew the Request URL could then exhaust it with unsigned requests and
get every workspace's real deliveries refused. Verifying first costs a read
of at most trigger_ingress_max_body_bytes and one HMAC-SHA256, and the
budgets below are charged only for deliveries that verify.
What a failed request does spend is the per-client probing budget, and only to bound its audit rows: the audit queue is bounded and single-writer, so a flood of garbage must not crowd out real rows. Slack's own deliveries never fail verification and never touch it.
| registration_id required | string (Registration Id) [ 1 .. 120 ] characters ^[A-Za-z0-9][A-Za-z0-9_.-]*$ |
nullAccept one provider delivery and append it to the trigger's ledger.
| provider required | string (Provider) [ 1 .. 32 ] characters ^[a-z][a-z0-9_]*$ |
| public_id required | string (Public Id) [ 8 .. 64 ] characters ^[A-Za-z0-9_-]+$ |
null| trigger_id required | string <uuid> (Trigger Id) |
{- "binding_target": "string",
- "concurrency_limit": 0,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "created_at": "2019-08-24T14:15:22Z",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "kind": "string",
- "last_error": "string",
- "last_fired_at": "2019-08-24T14:15:22Z",
- "max_attempts": 0,
- "name": "string",
- "next_fire_at": "2019-08-24T14:15:22Z",
- "node_id": "string",
- "provider": "string",
- "session_policy": "string",
- "state": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}| trigger_id required | string <uuid> (Trigger Id) |
TriggerBindingTarget (string) or null | |
Concurrency Limit (integer) or Concurrency Limit (null) (Concurrency Limit) | |
Config (object) or Config (null) (Config) | |
Connection Id (string) or Connection Id (null) (Connection Id) | |
Deployment Id (string) or Deployment Id (null) (Deployment Id) | |
Flow Version Id (string) or Flow Version Id (null) (Flow Version Id) | |
Max Attempts (integer) or Max Attempts (null) (Max Attempts) | |
Name (string) or Name (null) (Name) | |
TriggerSessionPolicy (string) or null |
{- "binding_target": "flow",
- "concurrency_limit": 1,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "max_attempts": 1,
- "name": "string",
- "session_policy": "per_event"
}{- "binding_target": "string",
- "concurrency_limit": 0,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "created_at": "2019-08-24T14:15:22Z",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "kind": "string",
- "last_error": "string",
- "last_fired_at": "2019-08-24T14:15:22Z",
- "max_attempts": 0,
- "name": "string",
- "next_fire_at": "2019-08-24T14:15:22Z",
- "node_id": "string",
- "provider": "string",
- "session_policy": "string",
- "state": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}| trigger_id required | string <uuid> (Trigger Id) |
{- "binding_target": "string",
- "concurrency_limit": 0,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "created_at": "2019-08-24T14:15:22Z",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "kind": "string",
- "last_error": "string",
- "last_fired_at": "2019-08-24T14:15:22Z",
- "max_attempts": 0,
- "name": "string",
- "next_fire_at": "2019-08-24T14:15:22Z",
- "node_id": "string",
- "provider": "string",
- "session_policy": "string",
- "state": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}| trigger_id required | string <uuid> (Trigger Id) |
{- "binding_target": "string",
- "concurrency_limit": 0,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "created_at": "2019-08-24T14:15:22Z",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "kind": "string",
- "last_error": "string",
- "last_fired_at": "2019-08-24T14:15:22Z",
- "max_attempts": 0,
- "name": "string",
- "next_fire_at": "2019-08-24T14:15:22Z",
- "node_id": "string",
- "provider": "string",
- "session_policy": "string",
- "state": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}| trigger_id required | string <uuid> (Trigger Id) |
| limit | integer (Limit) [ 1 .. 200 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
[- {
- "attempt": 0,
- "available_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "dedupe_key": "string",
- "error": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
- "payload": { },
- "replay_of_event_id": "a9afe90e-138c-4e40-9089-5e0fa1fdf317",
- "session_id": "string",
- "state": "string",
- "trigger_id": "5727dbbb-3b26-4abe-aec6-181eabbdb21c",
- "updated_at": "2019-08-24T14:15:22Z"
}
]Where a caller posts to this trigger, and whether a secret is set.
Never the secret itself. A signing secret is shown exactly once, by the route that mints it; a GET that returned it would put it in every browser history, proxy log, and screen share that touches the triggers page.
| trigger_id required | string <uuid> (Trigger Id) |
{- "has_signing_secret": true,
- "ingress_url": "string",
- "public_id": "string",
- "trigger_id": "5727dbbb-3b26-4abe-aec6-181eabbdb21c"
}Pin the trigger to a flow version, or unpin it with a null id.
A pin is only accepted for a version of the trigger's own flow: pinning across flows would let a writer on flow A run flow B's data as A's owner.
| trigger_id required | string <uuid> (Trigger Id) |
required | Flow Version Id (string) or Flow Version Id (null) (Flow Version Id) |
Any of string <uuid> (Flow Version Id) | |
{- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc"
}{- "binding_target": "string",
- "concurrency_limit": 0,
- "config": { },
- "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
- "created_at": "2019-08-24T14:15:22Z",
- "deployment_id": "6ef0ac85-9892-4664-a2a5-58bf2af5a8a6",
- "flow_id": "0746f03b-16cc-49fb-9833-df3713d407d2",
- "flow_version_id": "6f696c2e-bdd1-4f9a-9390-ef494d757abc",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "kind": "string",
- "last_error": "string",
- "last_fired_at": "2019-08-24T14:15:22Z",
- "max_attempts": 0,
- "name": "string",
- "next_fire_at": "2019-08-24T14:15:22Z",
- "node_id": "string",
- "provider": "string",
- "session_policy": "string",
- "state": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}Re-run one ledger row as a new, linked event.
Replay costs a flow execution, so it needs flow execute — the same ceiling as pressing Run.
| trigger_id required | string <uuid> (Trigger Id) |
| event_id required | string <uuid> (Event Id) |
{- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7"
}{- "attempt": 0,
- "available_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "dedupe_key": "string",
- "error": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
- "payload": { },
- "replay_of_event_id": "a9afe90e-138c-4e40-9089-5e0fa1fdf317",
- "session_id": "string",
- "state": "string",
- "trigger_id": "5727dbbb-3b26-4abe-aec6-181eabbdb21c",
- "updated_at": "2019-08-24T14:15:22Z"
}Mint this trigger's ingress address and signing secret, or rotate them.
Rotation replaces the stored secret, so the previous one stops verifying on the next delivery: there is no grace window, deliberately. A webhook secret is rotated because it leaked, and a grace window is exactly the period the leak is still useful.
The address (public_id) is minted once and kept across rotations, so
rotating a secret does not require reconfiguring the caller's URL.
| trigger_id required | string <uuid> (Trigger Id) |
{- "has_signing_secret": true,
- "ingress_url": "string",
- "public_id": "string",
- "signing_secret": "string",
- "trigger_id": "5727dbbb-3b26-4abe-aec6-181eabbdb21c"
}Append a synthetic event so an owner can exercise the whole path.
The event goes through the ordinary ledger and dispatcher — there is no side-channel — so a passing test is evidence about production behaviour.
| trigger_id required | string <uuid> (Trigger Id) |
object (Payload) | |||
| |||
{- "payload": { }
}{- "attempt": 0,
- "available_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "dedupe_key": "string",
- "error": "string",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
- "payload": { },
- "replay_of_event_id": "a9afe90e-138c-4e40-9089-5e0fa1fdf317",
- "session_id": "string",
- "state": "string",
- "trigger_id": "5727dbbb-3b26-4abe-aec6-181eabbdb21c",
- "updated_at": "2019-08-24T14:15:22Z"
}Retrieve a list of users from the database with pagination.
| skip | integer (Skip) >= 0 Default: 0 |
| limit | integer (Limit) [ 1 .. 200 ] Default: 10 |
Search (string) or Search (null) (Search) | |
Username (string) or Username (null) (Username) Exact username match | |
Role Name (string) or Role Name (null) (Role Name) Exact assigned role-name match | |
Deletion Requested (boolean) or Deletion Requested (null) (Deletion Requested) Only users with an open account deletion request |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
{- "deletion_requests": {
- "property1": "string",
- "property2": "string"
}, - "total_count": 0,
- "users": [
- {
- "create_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "is_superuser": true,
- "last_login_at": "2019-08-24T14:15:22Z",
- "optins": { },
- "profile_image": "string",
- "store_api_key": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "username": "string"
}
]
}Add a new user to the database.
This endpoint backs two flows that share the same route:
User activation is controlled by the NEW_USER_IS_ACTIVE setting.
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
Optins (object) or Optins (null) (Optins) Default: {"dialog_dismissed":false,"discord_clicked":false,"github_starred":false} | |
| password required | string (Password) |
| username required | string (Username) |
{- "optins": {
- "dialog_dismissed": false,
- "discord_clicked": false,
- "github_starred": false
}, - "password": "string",
- "username": "string"
}{- "create_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "is_superuser": true,
- "last_login_at": "2019-08-24T14:15:22Z",
- "optins": { },
- "profile_image": "string",
- "store_api_key": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "username": "string"
}Retrieve the current user's data.
{- "create_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "is_superuser": true,
- "last_login_at": "2019-08-24T14:15:22Z",
- "optins": { },
- "profile_image": "string",
- "store_api_key": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "username": "string"
}Delete a user and everything the account holds; the erase finishes in the background.
| user_id required | string <uuid> (User Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
{ }Read the current user or a specific user with user:manage.
| user_id required | string <uuid> (User Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
{- "create_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "is_superuser": true,
- "last_login_at": "2019-08-24T14:15:22Z",
- "optins": { },
- "profile_image": "string",
- "store_api_key": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "username": "string"
}Update an existing user's data.
| user_id required | string <uuid> (User Id) |
X-Langflow-Operation-Id (string) or X-Langflow-Operation-Id (null) (X-Langflow-Operation-Id) |
Is Active (boolean) or Is Active (null) (Is Active) | |
Is Superuser (boolean) or Is Superuser (null) (Is Superuser) | |
Last Login At (string) or Last Login At (null) (Last Login At) | |
Optins (object) or Optins (null) (Optins) | |
Password (string) or Password (null) (Password) | |
Profile Image (string) or Profile Image (null) (Profile Image) | |
Username (string) or Username (null) (Username) |
{- "is_active": true,
- "is_superuser": true,
- "last_login_at": "2019-08-24T14:15:22Z",
- "optins": { },
- "password": "string",
- "profile_image": "string",
- "username": "string"
}{- "create_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "is_superuser": true,
- "last_login_at": "2019-08-24T14:15:22Z",
- "optins": { },
- "profile_image": "string",
- "store_api_key": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "username": "string"
}Change the current user's password after verifying the existing password.
| user_id required | string <uuid> (User Id) |
| current_password required | string (Current Password) |
| password required | string (Password) |
{- "current_password": "string",
- "password": "string"
}{- "create_at": "2019-08-24T14:15:22Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "is_superuser": true,
- "last_login_at": "2019-08-24T14:15:22Z",
- "optins": { },
- "profile_image": "string",
- "store_api_key": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "username": "string"
}Patch a server and return its configuration with credentials masked.
| server_name required | string (Server Name) |
Array of Args (strings) or Args (null) (Args) | |
Command (string) or Command (null) (Command) | |
Env (object) or Env (null) (Env) | |
Headers (object) or Headers (null) (Headers) | |
Url (string) or Url (null) (Url) | |
| property name* additional property | any |
{- "args": [
- "string"
], - "command": "string",
- "env": {
- "property1": "string",
- "property2": "string"
}, - "headers": {
- "property1": "string",
- "property2": "string"
}, - "url": "string"
}nullCreate a server and return its configuration with credentials masked.
| server_name required | string (Server Name) |
Array of Args (strings) or Args (null) (Args) | |
Command (string) or Command (null) (Command) | |
Env (object) or Env (null) (Env) | |
Headers (object) or Headers (null) (Headers) | |
Url (string) or Url (null) (Url) | |
| property name* additional property | any |
{- "args": [
- "string"
], - "command": "string",
- "env": {
- "property1": "string",
- "property2": "string"
}, - "headers": {
- "property1": "string",
- "property2": "string"
}, - "url": "string"
}nullGet status of workflow job by job ID
Job Id (string) or Job Id (string) or Job Id (null) (Job Id) Job ID to query |
{- "created_timestamp": "string",
- "errors": [ ],
- "flow_id": "string",
- "globals": {
- "property1": "string",
- "property2": "string"
}, - "human_request": { },
- "inputs": { },
- "job_id": "string",
- "object": "response",
- "output": {
- "reason": "single",
- "source": "string",
- "text": "string"
}, - "outputs": { },
- "session_id": "string",
- "status": "queued",
- "warnings": [
- "string"
]
}Data (object) or Data (null) (Data) Optional live-canvas override of the flow's nodes/edges; takes priority over the saved flow data. | |
Expose Graph State (boolean) or Expose Graph State (null) (Expose Graph State) Whether the stream may carry the flow's graph state: the events naming every component that will run and carrying each component's own output ( | |
Array of Files (strings) or Files (null) (Files) Optional list of pre-uploaded file paths to attach to the run. | |
| flow_id required | string (Flow Id) UUID of the flow to run. |
object (Globals) Request-level global variables made available to workflow components. Keys may use any printable string up to 256 chars; values are capped at 65536 chars. Body globals always win over the legacy | |
Idempotency Key (string) or Idempotency Key (null) (Idempotency Key) Optional client-supplied key that dedupes background submits. Two background runs with the same key return the same job_id instead of queuing duplicate work. Ignored for sync/stream modes. | |
| input_value | string (Input Value) Default: "" Chat-style input value. |
| mode | string (WorkflowMode) Default: "sync" Enum: "sync" "stream" "background" Execution mode. |
Array of Output Ids (strings) or Output Ids (null) (Output Ids) Component ids of the outputs you want as the answer (sync mode). When set, | |
Session Id (string) or Session Id (null) (Session Id) When set, message memory and chat history scope to this session. | |
Start Component Id (string) or Start Component Id (null) (Start Component Id) Partial-run start component id. | |
Stop Component Id (string) or Stop Component Id (null) (Stop Component Id) Partial-run stop component id. | |
| stream_protocol | string (Stream Protocol) Default: "langflow" Wire protocol for streaming events. Defaults to |
object (Tweaks) Per-component parameter overrides keyed by component id. |
{- "flow_id": "67ccd2be-17f0-8190-81ff-3bb2cf6508e6",
- "input_value": "Hello, how can you help me today?"
}{- "created_timestamp": "string",
- "errors": [ ],
- "flow_id": "string",
- "globals": {
- "property1": "string",
- "property2": "string"
}, - "job_id": "string",
- "links": {
- "property1": "string",
- "property2": "string"
}, - "object": "job",
- "status": "queued"
}Suspended HITL jobs for a flow plus their pending request, for the Traces overlay.
| flow_id required | string <uuid> (Flow Id) Flow ID to list pending HITL requests for |
[- { }
]Stop a running background workflow execution
required | Job Id (string) or Job Id (string) (Job Id) |
Any of string (Job Id) | |
{- "job_id": "string"
}{- "job_id": "string",
- "message": "string"
}Resume a suspended (human-in-the-loop) workflow with a decision.
| job_id required | string (Job Id) |
Decision (object) or Decision (null) (Decision) | |
| request_id required | string (Request Id) |
{- "decision": { },
- "request_id": "string"
}{- "job_id": "string",
- "message": "string",
- "status": "string"
}Probe application readiness and optionally require every retained store to finish upgrading.
| require_storage_ready | boolean (Require Storage Ready) Default: false |
{- "chat": "error check the server logs",
- "db": "error check the server logs",
- "status": "nok"
}Retrieve application logs with superuser authentication required.
SECURITY: Logs may contain sensitive information and require superuser authentication.
| lines_before | integer (Lines Before) Default: 0 The number of logs before the timestamp or the last log |
| lines_after | integer (Lines After) Default: 0 The number of logs after the timestamp |
| timestamp | integer (Timestamp) Default: 0 The timestamp to start getting logs from |
nullHTTP/2 Server-Sent-Event (SSE) endpoint for streaming logs.
Requires superuser authentication to prevent exposure of sensitive log data. It establishes a long-lived connection to the server and receives log messages in real-time. The client should use the header "Accept: text/event-stream".
null