AI Chat History¶
Overview¶
The Chat History feature allows each authenticated user of the F5 Insight AI Assistant to maintain persistent, server-side conversation threads. Your chat history survives page refreshes, tab closes, and session logouts.
Each thread retains full message history up to a configurable limit, with automatic AI-generated summarization when threads grow large. Your conversations expire after 24 hours of inactivity.
Key concepts¶
| Concept | Description |
|---|---|
| Thread | A named conversation between one user and the AI Assistant. Isolated per user. No cross-user access. |
| TTL | Rolling 24-hour window from the last message. F5 Insight automatically soft-deletes threads with no activity for 24 hours (hidden from the API). Soft-deleted threads are permanently hard-deleted after 30 additional days. |
| Message limit | 200 messages per thread (hard cap after summarization). |
| Summarization | At 250 messages, the oldest messages are folded into a single AI-generated summary, bringing the thread back to 200. Summarization runs in the background and doesn’t block the current response. |
| Thread limit | 50 active threads per user. When the limit is reached, the oldest thread is evicted silently to make room for the new one. |
| TTL worker | Background job that runs every 24 hours to soft-delete expired conversations. |
Role-based access¶
Chat History endpoints require the chatManagement permission group.
| Role | Read | Write | Delete |
|---|---|---|---|
| Viewer | No | No | No |
| Operator | Yes | Yes | Yes |
| Admin | Yes | Yes | Yes |
Note
The Viewer role has no access to chat history. Both Operator and Admin roles have full access.
Use the web console¶
The AI Assistant opens with a collapsible conversation sidebar on the left. The sidebar lists all saved conversations for the current user, sorted by most recent activity.
The sidebar header shows a live count (for example, 3/50). The count turns orange (warning) above 40 threads and red (critical) above 45, indicating that F5 Insight evicts the oldest thread when you reach the limit.
The sidebar can be collapsed to a narrow icon strip using the toggle button in the header.
Start a new conversation¶
Select the New conversation icon (speech bubble with +) in the sidebar header. F5 Insight doesn’t create a thread immediately. It creates one automatically when you send your first message and the title is derived from that message.
Resume a conversation¶
Select any conversation row in the sidebar. The full message history loads into the chat area.
Note
If a background response is still generating for that thread, a spinner icon appears on the row.
Delete a conversation¶
Hover over any conversation row and select the delete icon (bin) that appears on the right.
Warning
Deletion is immediate and permanent. You can’t recover the conversation or its messages.
Export as PDF¶
There are two PDF export options in the UI:
Export an entire conversation¶
- Open the conversation you want to export.
- Select the ⋮ (three-dot menu) icon in the chat header.
- Select Export chat as PDF.
- The full conversation thread is exported to a PDF file.
Export a single response¶
- Open the conversation containing the response you want to export.
- Hover over the assistant message bubble to reveal its action menu.
- Select Export response as PDF.
- The selected AI response and the user message that preceded it are exported to a PDF file.
Note
- Both export options are available only when a saved conversation is open (not on the homepage).
- Both options require the
chatManagement.postpermission.
Use the REST API¶
All chat history tasks available in the web console are also available through the F5 Insight REST API, enabling automation and integration with existing tooling.
Authentication¶
All chat history endpoints require a valid JWT access token:
Authorization: Bearer <token>
Responses use standard HTTP status codes.
List conversations¶
GET /api/chat/history/conversations
Response (200 OK)
{
"conversations": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"user_id": "user123",
"title": "My investigation",
"created_at": "2026-07-01T09:00:00Z",
"last_msg_at": "2026-07-01T11:30:00Z",
"expires_at": "2026-07-02T11:30:00Z",
"message_count": 14
}
]
}
Create a conversation¶
POST /api/chat/history/conversations
Content-Type: application/json
{
"title": "My investigation"
}
title is optional (max 500 characters). If omitted, the UI derives a title from the first message.
Returns 201 Created with the conversation object.
Get a conversation (with messages)¶
GET /api/chat/history/conversations/{id}
Response (200 OK)
{
"conversation": {
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"user_id": "user123",
"title": "My investigation",
"created_at": "2026-07-01T09:00:00Z",
"last_msg_at": "2026-07-01T11:30:00Z",
"expires_at": "2026-07-02T11:30:00Z",
"message_count": 14
},
"messages": [
{
"id": "...",
"conversation_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"user_id": "user123",
"role": "user",
"content": "How many virtual servers...",
"content_metadata": {},
"created_at": "2026-07-01T09:00:00Z",
"is_summarized": false
}
],
"context_summarized": false
}
Response field reference
| Field | Description |
|---|---|
context_summarized: true |
Indicates the earliest messages have been replaced by an AI-generated summary. |
is_summarized: true |
On an individual message, marks that message as the summary message itself. |
Delete a conversation¶
DELETE /api/chat/history/conversations/{id}
Returns 204 No Content. No response body.
Add a message to a conversation¶
POST /api/chat/history/conversations/{id}/messages
Content-Type: application/json
{
"role": "user",
"content": "How many virtual servers are on device-01?",
"content_metadata": {}
}
Parameters
| Parameter | Required | Description |
|---|---|---|
role |
Yes | Must be "user" or "assistant" |
content |
Yes | Message content. Max 100 KB. |
content_metadata |
No | Arbitrary JSON object (for example, chart data) |
Returns 201 Created with the saved message.
Export a conversation as PDF¶
POST /api/chat/export/pdf
Content-Type: application/json
Parameters
| Parameter | Required | Description |
|---|---|---|
type |
Yes | "conversation" - full export; "single" - one assistant response and its preceding user message |
conversation_id |
Yes | UUID of the conversation |
message_id |
Only when type="single" |
UUID of the specific assistant message |
session_id |
No | Optional session identifier for audit tracking |
Returns a PDF file as an application/pdf download.
Configuration¶
| Variable | Default | Description |
|---|---|---|
CHAT_MAX_CONVERSATIONS_PER_USER |
50 |
Maximum active threads per user. When reached, the oldest thread is evicted silently. |
CHAT_SUMMARIZATION_TRIGGER_COUNT |
250 |
Message count that triggers automatic summarization. |
Limits¶
| Limit | Value |
|---|---|
| Max messages kept per thread | 200 |
| Summarization trigger | 250 messages |
| Max active threads per user | 50 (configurable) |
| Thread TTL (inactivity) | 24 hours rolling; soft-deleted, then hard-deleted after 30 days |
| Max message content size | 100 KB |
| Max conversation title length | 500 characters |
Troubleshooting¶
Thread disappeared after 24 hours¶
Chat threads are soft-deleted after 24 hours of inactivity and hidden from the API. They are permanently hard-deleted 30 days later.
Note
The TTL worker runs every 24 hours, so a thread might remain visible for up to 24 hours past its expiry time.
Accessing an expired conversation returns 410 Gone¶
A conversation that has passed its expiry time returns HTTP 410 Gone on any GET or POST messages request. Start a new thread instead.
Summarized context: AI response lacks earlier details¶
When context_summarized: true is returned, the earliest messages have been condensed into an AI-generated summary. Fine-grained details from very early in the conversation might not be retained.
Start a new thread for a completely fresh context.
Thread limit reached¶
When the sidebar count reaches 50, the oldest conversation is silently evicted when a new one is created. F5 Insight doesn’t return an error.
The sidebar turns the count:
- Orange (warning) at 40 threads
- Red (critical) at 45 threads
Tip
Export important threads via PDF before they are evicted. See Export as PDF for instructions.