Files
langflow/docs/versioned_docs/version-1.8.0/API-Reference/api-monitor.mdx
Mendon Kissling b36444f5d9 docs: add versioning (#12218)
* fix: nightly now properly gets 1.9.0 branch (#12215)

before it was attempting to pull release-notes as letters are alphanumerically after numbers when we sort -V then grab tail
now we only look at branch names that follow the pattern '^release-[0-9]+\.[0-9]+\.[0-9]+$'

* docs: add search icon (#12216)

add-back-svg

* initial-content

* cut-1.8-release-and-include-next-version

* stage-1.8.0-and-next

---------

Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com>
2026-03-18 20:03:49 +00:00

794 lines
26 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Monitor endpoints
slug: /api-monitor
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
The `/monitor` endpoints are for internal Langflow functionality, primarily related to running flows in the **Playground**, storing chat history, and generating flow logs.
This information is primarily for those who are building custom components or contributing to the Langflow codebase in a way that requires calling or understanding these endpoints.
For typical application development with Langflow, there are more appropriate options for monitoring, debugging, and memory management.
For more information, see the following:
* [Logs](/logging): Langflow log storage locations, customization options, and where to view logs in the visual editor
* [Test flows in the Playground](/concepts-playground): Run flows and inspect message history
* [Memory management options](/memory): Langflow storage locations and options, including the database, cache, and chat history
## Vertex builds
The Vertex build endpoints (`/monitor/builds`) are exclusively for **Playground** functionality.
When you run a flow in the **Playground**, Langflow calls the `/build/$FLOW_ID/flow` endpoint in [chat.py](https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/api/v1/chat.py#L130). This call retrieves the flow data, builds a graph, and executes the graph. As each component (or node) is executed, the `build_vertex` function calls `build_and_run`, which may call the individual components' `def_build` method, if it exists. If a component doesn't have a `def_build` function, the build still returns a component.
The `build` function allows components to execute logic at runtime. For example, the [**Recursive Character Text Splitter** component](https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/components/langchain_utilities/recursive_character.py) is a child of the `LCTextSplitterComponent` class. When text needs to be processed, the parent class's `build` method is called, which creates a `RecursiveCharacterTextSplitter` object and uses it to split the text according to the defined parameters. The split text is then passed on to the next component. This all occurs when the component is built.
### Get Vertex builds
Retrieve Vertex builds for a specific flow.
```bash
curl -X GET \
"$LANGFLOW_URL/api/v1/monitor/builds?flow_id=$FLOW_ID" \
-H "accept: application/json" \
-H "x-api-key: $LANGFLOW_API_KEY"
```
<details>
<summary>Result</summary>
```json
{
"vertex_builds": {
"ChatInput-NCmix": [
{
"data": {
"results": {
"message": {
"text_key": "text",
"data": {
"timestamp": "2024-12-23 19:10:57",
"sender": "User",
"sender_name": "User",
"session_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"text": "Hello",
"files": [],
"error": "False",
"edit": "False",
"properties": {
"text_color": "",
"background_color": "",
"edited": "False",
"source": {
"id": "None",
"display_name": "None",
"source": "None"
},
"icon": "",
"allow_markdown": "False",
"positive_feedback": "None",
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": [],
"id": "c95bed34-f906-4aa6-84e4-68553f6db772",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
},
"default_value": "",
"text": "Hello",
"sender": "User",
"sender_name": "User",
"files": [],
"session_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"timestamp": "2024-12-23 19:10:57+00:00",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"error": "False",
"edit": "False",
"properties": {
"text_color": "",
"background_color": "",
"edited": "False",
"source": {
"id": "None",
"display_name": "None",
"source": "None"
},
"icon": "",
"allow_markdown": "False",
"positive_feedback": "None",
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": []
}
},
"outputs": {
"message": {
"message": {
"timestamp": "2024-12-23T19:10:57",
"sender": "User",
"sender_name": "User",
"session_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"text": "Hello",
"files": [],
"error": false,
"edit": false,
"properties": {
"text_color": "",
"background_color": "",
"edited": false,
"source": {
"id": null,
"display_name": null,
"source": null
},
"icon": "",
"allow_markdown": false,
"positive_feedback": null,
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": [],
"id": "c95bed34-f906-4aa6-84e4-68553f6db772",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
},
"type": "object"
}
},
"logs": { "message": [] },
"message": {
"message": "Hello",
"sender": "User",
"sender_name": "User",
"files": [],
"type": "object"
},
"artifacts": {
"message": "Hello",
"sender": "User",
"sender_name": "User",
"files": [],
"type": "object"
},
"timedelta": 0.015060124918818474,
"duration": "15 ms",
"used_frozen_result": false
},
"artifacts": {
"message": "Hello",
"sender": "User",
"sender_name": "User",
"files": [],
"type": "object"
},
"params": "- Files: []\n Message: Hello\n Sender: User\n Sender Name: User\n Type: object\n",
"valid": true,
"build_id": "40aa200e-74db-4651-b698-f80301d2b26b",
"id": "ChatInput-NCmix",
"timestamp": "2024-12-23T19:10:58.772766Z",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
}
],
"Prompt-BEn9c": [
{
"data": {
"results": {},
"outputs": {
"prompt": {
"message": "Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",
"type": "text"
}
},
"logs": { "prompt": [] },
"message": {
"prompt": {
"repr": "Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",
"raw": "Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",
"type": "text"
}
},
"artifacts": {
"prompt": {
"repr": "Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",
"raw": "Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",
"type": "text"
}
},
"timedelta": 0.0057758750626817346,
"duration": "6 ms",
"used_frozen_result": false
},
"artifacts": {
"prompt": {
"repr": "Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",
"raw": "Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",
"type": "text"
}
},
"params": "None",
"valid": true,
"build_id": "39bbbfde-97fd-42a5-a9ed-d42a5c5d532b",
"id": "Prompt-BEn9c",
"timestamp": "2024-12-23T19:10:58.781019Z",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
}
],
"OpenAIModel-7AjrN": [
{
"data": {
"results": {},
"outputs": {
"text_output": {
"message": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"type": "text"
},
"model_output": { "message": "", "type": "unknown" }
},
"logs": { "text_output": [] },
"message": {
"text_output": {
"repr": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"raw": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"type": "text"
}
},
"artifacts": {
"text_output": {
"repr": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"raw": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"type": "text"
}
},
"timedelta": 1.034765167045407,
"duration": "1.03 seconds",
"used_frozen_result": false
},
"artifacts": {
"text_output": {
"repr": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"raw": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"type": "text"
}
},
"params": "None",
"valid": true,
"build_id": "4f0ae730-a266-4d35-b89f-7b825c620a0f",
"id": "OpenAIModel-7AjrN",
"timestamp": "2024-12-23T19:10:58.790484Z",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
}
],
"ChatOutput-sfUhT": [
{
"data": {
"results": {
"message": {
"text_key": "text",
"data": {
"timestamp": "2024-12-23 19:10:58",
"sender": "Machine",
"sender_name": "AI",
"session_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"text": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"files": [],
"error": "False",
"edit": "False",
"properties": {
"text_color": "",
"background_color": "",
"edited": "False",
"source": {
"id": "OpenAIModel-7AjrN",
"display_name": "OpenAI",
"source": "gpt-4o-mini"
},
"icon": "OpenAI",
"allow_markdown": "False",
"positive_feedback": "None",
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": [],
"id": "5688356d-9f30-40ca-9907-79a7a2fc16fd",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
},
"default_value": "",
"text": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"sender": "Machine",
"sender_name": "AI",
"files": [],
"session_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"timestamp": "2024-12-23 19:10:58+00:00",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"error": "False",
"edit": "False",
"properties": {
"text_color": "",
"background_color": "",
"edited": "False",
"source": {
"id": "OpenAIModel-7AjrN",
"display_name": "OpenAI",
"source": "gpt-4o-mini"
},
"icon": "OpenAI",
"allow_markdown": "False",
"positive_feedback": "None",
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": []
}
},
"outputs": {
"message": {
"message": {
"timestamp": "2024-12-23T19:10:58",
"sender": "Machine",
"sender_name": "AI",
"session_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"text": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"files": [],
"error": false,
"edit": false,
"properties": {
"text_color": "",
"background_color": "",
"edited": false,
"source": {
"id": "OpenAIModel-7AjrN",
"display_name": "OpenAI",
"source": "gpt-4o-mini"
},
"icon": "OpenAI",
"allow_markdown": false,
"positive_feedback": null,
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": [],
"id": "5688356d-9f30-40ca-9907-79a7a2fc16fd",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
},
"type": "object"
}
},
"logs": { "message": [] },
"message": {
"message": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"sender": "Machine",
"sender_name": "AI",
"files": [],
"type": "object"
},
"artifacts": {
"message": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"sender": "Machine",
"sender_name": "AI",
"files": [],
"type": "object"
},
"timedelta": 0.017838125000707805,
"duration": "18 ms",
"used_frozen_result": false
},
"artifacts": {
"message": "Hello! 🌟 I'm excited to help you get started on your journey to building something fresh! What do you have in mind? Whether it's a project, an idea, or a concept, let's dive in and make it happen!",
"sender": "Machine",
"sender_name": "AI",
"files": [],
"type": "object"
},
"params": "- Files: []\n Message: Hello! 🌟 I'm excited to help you get started on your journey to building\n something fresh! What do you have in mind? Whether it's a project, an idea, or\n a concept, let's dive in and make it happen!\n Sender: Machine\n Sender Name: AI\n Type: object\n",
"valid": true,
"build_id": "1e8b908b-aba7-403b-9e9b-eca92bb78668",
"id": "ChatOutput-sfUhT",
"timestamp": "2024-12-23T19:10:58.813268Z",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
}
]
}
}
```
</details>
### Delete Vertex builds
Delete Vertex builds for a specific flow.
```bash
curl -X DELETE \
"$LANGFLOW_URL/api/v1/monitor/builds?flow_id=$FLOW_ID" \
-H "accept: */*" \
-H "x-api-key: $LANGFLOW_API_KEY"
```
<details>
<summary>Result</summary>
```text
204 No Content
```
</details>
## Messages endpoints
The `/monitor/messages` endpoints store, retrieve, edit, and delete records in the message table in [`langflow.db`](/memory)
Typically, these are called implicitly when running flows that produce message history, or when inspecting and modifying **Playground** memories.
### Get messages
Retrieve a list of all messages:
```bash
curl -X GET \
"$LANGFLOW_URL/api/v1/monitor/messages" \
-H "accept: application/json" \
-H "x-api-key: $LANGFLOW_API_KEY"
```
To filter messages, use the `flow_id`, `session_id`, `sender`, and `sender_name` query parameters.
To sort the results, use the `order_by` query parameter.
This example retrieves messages sent by `Machine` and `AI` in a given chat session (`session_id`) and orders the messages by timestamp.
```bash
curl -X GET \
"$LANGFLOW_URL/api/v1/monitor/messages?flow_id=$FLOW_ID&session_id=01ce083d-748b-4b8d-97b6-33adbb6a528a&sender=Machine&sender_name=AI&order_by=timestamp" \
-H "accept: application/json" \
-H "x-api-key: $LANGFLOW_API_KEY"
```
<details>
<summary>Result</summary>
```json
[
{
"id": "1c1d6134-9b8b-4079-931c-84dcaddf19ba",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"timestamp": "2024-12-23 19:20:11 UTC",
"sender": "Machine",
"sender_name": "AI",
"session_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"text": "Hello! It's great to see you here! What exciting project or idea are you thinking about diving into today? Whether it's something fresh and innovative or a classic concept with a twist, I'm here to help you get started! Let's brainstorm together!",
"files": "[]",
"edit": false,
"properties": {
"text_color": "",
"background_color": "",
"edited": false,
"source": {
"id": "OpenAIModel-7AjrN",
"display_name": "OpenAI",
"source": "gpt-4o-mini"
},
"icon": "OpenAI",
"allow_markdown": false,
"positive_feedback": null,
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": []
}
]
```
</details>
### Delete messages
Delete specific messages by their IDs.
This example deletes the message retrieved in the previous `GET /messages` example.
```bash
curl -v -X DELETE \
"$LANGFLOW_URL/api/v1/monitor/messages" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "x-api-key: $LANGFLOW_API_KEY" \
-d '["MESSAGE_ID_1", "MESSAGE_ID_2"]'
```
<details>
<summary>Result</summary>
```text
204 No Content
```
</details>
### Update message
Update a specific message by its ID.
This example updates the `text` value of message `3ab66cc6-c048-48f8-ab07-570f5af7b160`.
```bash
curl -X PUT \
"$LANGFLOW_URL/api/v1/monitor/messages/3ab66cc6-c048-48f8-ab07-570f5af7b160" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "x-api-key: $LANGFLOW_API_KEY" \
-d '{
"text": "testing 1234"
}'
```
<details>
<summary>Result</summary>
```json
{
"timestamp": "2024-12-23T18:49:06",
"sender": "string",
"sender_name": "string",
"session_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"text": "testing 1234",
"files": ["string"],
"error": true,
"edit": true,
"properties": {
"text_color": "string",
"background_color": "string",
"edited": false,
"source": { "id": "string", "display_name": "string", "source": "string" },
"icon": "string",
"allow_markdown": false,
"positive_feedback": true,
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": [],
"id": "3ab66cc6-c048-48f8-ab07-570f5af7b160",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a"
}
```
</details>
### Update session ID
Update the session ID for messages.
This example updates the `session_ID` value `01ce083d-748b-4b8d-97b6-33adbb6a528a` to `different_session_id`.
```bash
curl -X PATCH \
"$LANGFLOW_URL/api/v1/monitor/messages/session/01ce083d-748b-4b8d-97b6-33adbb6a528a?new_session_id=different_session_id" \
-H "accept: application/json" \
-H "x-api-key: $LANGFLOW_API_KEY"
```
<details>
<summary>Result</summary>
```json
[
{
"id": "8dd7f064-e63a-4773-b472-ca0475249dfd",
"flow_id": "01ce083d-748b-4b8d-97b6-33adbb6a528a",
"timestamp": "2024-12-23 18:49:55 UTC",
"sender": "User",
"sender_name": "User",
"session_id": "different_session_id",
"text": "message",
"files": "[]",
"edit": false,
"properties": {
"text_color": "",
"background_color": "",
"edited": false,
"source": {
"id": null,
"display_name": null,
"source": null
},
"icon": "",
"allow_markdown": false,
"positive_feedback": null,
"state": "complete",
"targets": []
},
"category": "message",
"content_blocks": []
}
]
```
</details>
### Delete messages by session
Delete all messages for a specific session.
```bash
curl -X DELETE \
"$LANGFLOW_URL/api/v1/monitor/messages/session/different_session_id_2" \
-H "accept: */*" \
-H "x-api-key: $LANGFLOW_API_KEY"
```
<details>
<summary>Result</summary>
```text
HTTP/1.1 204 No Content
```
</details>
## Get traces
Retrieve trace metadata and span trees for a specific flow.
### Example request
Use `GET /monitor/traces` and filter by `flow_id`:
<Tabs>
<TabItem value="python" label="Python">
```python
import os
import requests
base_url = os.getenv("LANGFLOW_SERVER_URL", "http://localhost:7860")
api_key = os.getenv("LANGFLOW_API_KEY")
flow_id = "YOUR_FLOW_ID"
response = requests.get(
f"{base_url}/api/v1/monitor/traces",
params={"flow_id": flow_id, "page": 1, "size": 50},
headers={"x-api-key": api_key, "accept": "application/json"},
timeout=10,
)
response.raise_for_status()
traces = response.json()
print(traces)
```
</TabItem>
<TabItem value="typescript" label="TypeScript">
```ts
const baseUrl = process.env.LANGFLOW_SERVER_URL ?? "http://localhost:7860";
const apiKey = process.env.LANGFLOW_API_KEY!;
const flowId = "YOUR_FLOW_ID";
async function listTraces() {
const url = new URL("/api/v1/monitor/traces", baseUrl);
url.searchParams.set("flow_id", flowId);
url.searchParams.set("page", "1");
url.searchParams.set("size", "50");
const res = await fetch(url.toString(), {
headers: {
accept: "application/json",
"x-api-key": apiKey,
},
});
if (!res.ok) {
throw new Error(`Request failed with status ${res.status}`);
}
const data = await res.json();
console.log(data);
}
listTraces().catch(console.error);
```
</TabItem>
<TabItem value="curl" label="curl">
```bash
export LANGFLOW_SERVER_URL="http://localhost:7860"
export LANGFLOW_API_KEY="YOUR_LANGFLOW_API_KEY"
export FLOW_ID="YOUR_FLOW_ID"
curl -s "$LANGFLOW_SERVER_URL/api/v1/monitor/traces?flow_id=$FLOW_ID&page=1&size=50" \
-H "accept: application/json" \
-H "x-api-key: $LANGFLOW_API_KEY" \
| jq .
```
</TabItem>
</Tabs>
### Example response
```json
{
"traces": [
{
"id": "426656db-fc3c-4a3a-acf8-c60acf099543",
"name": "Simple Agent - 9e774f60-857b-44b4-bbcd-87bd23848ee8",
"status": "ok",
"startTime": "2026-03-03T19:13:30.692628Z",
"totalLatencyMs": 18693,
"totalTokens": 2050,
"flowId": "9e774f60-857b-44b4-bbcd-87bd23848ee8",
"sessionId": "9e774f60-857b-44b4-bbcd-87bd23848ee8",
"input": {
"input_value": "Use tools to teach me about vertex graphs"
},
"output": {
"message": {
"text_key": "text",
"data": {
"timestamp": "2026-03-03 19:13:30 UTC",
"sender": "Machine",
"sender_name": "AI",
"session_id": "9e774f60-857b-44b4-bbcd-87bd23848ee8",
"text": "I can teach you the concept, but I couldnt pull the Wikipedia pages with the tool ... (truncated)"
}
}
}
}
],
"total": 1,
"pages": 1
}
```
## Get transactions
Retrieve all transactions, which are interactions between components, for a specific flow.
This information is also available in [flow logs](/logging).
```bash
curl -X GET \
"$LANGFLOW_URL/api/v1/monitor/transactions?flow_id=$FLOW_ID&page=1&size=50" \
-H "accept: application/json" \
-H "x-api-key: $LANGFLOW_API_KEY"
```
<details>
<summary>Result</summary>
```json
{
"items": [
{
"timestamp": "2024-12-23T20:05:01.061Z",
"vertex_id": "string",
"target_id": "string",
"inputs": {},
"outputs": {},
"status": "string",
"error": "string",
"flow_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
],
"total": 0,
"page": 1,
"size": 1,
"pages": 0
}
```
</details>
## See also
- [Use voice mode](/concepts-voice-mode)
- [Session ID](/session-id)