Conversation memory

Give your AI a memory for real conversations

Your AI remembers what customers said, picks up where they left off, and keeps every conversation connected automatically.

No repeated questions. No lost context. Just continuous conversations.

  • The AI remembers earlier turns automatically
  • Send only the current message, with no history to store or resend
  • Long chats stay affordable with automatic rolling summaries
  • Review and reset any conversation right from the console

Why it matters

Customers shouldn't have to repeat themselves.

When someone comes back to your AI, they shouldn't have to start over. ModelRiver keeps conversations connected so your AI can understand what was already discussed and continue naturally.

How conversation memory works

One conversation,
one memory, automatically.

Every conversation stays together, so your AI can keep the right context from one message to the next.

Two memory layers, managed automatically

Recent turns: kept verbatim Latest messages

The last few exchanges are stored exactly as they happened, so the AI answers with precise, recent context.

Older turns: rolling summary ~2,000-token boundaries

Once a conversation grows, earlier turns are condensed into a rolling summary. The AI keeps the important details without the message history ballooning.

Two memory layers

Recent + summarized

Short conversations keep every turn verbatim. Long ones are summarized automatically so the AI stays in context without the bill growing.

Summary threshold

~2,000 tokens

At each boundary ModelRiver condenses older turns into a rolling summary, logged in Request Logs as a session_summary entry.

Reset anytime

One click

Delete a session in the console to wipe its memory. This is the same as starting that conversation fresh. Request logs are kept for the record.

Plain language

How session memory fits with everything else

Sessions keep the conversation together. Your AI uses that context to respond naturally.

Session memory

The AI remembers, your app doesn't store

Turn it on for a workflow and ModelRiver keeps the conversation. Send only the latest message; the AI sees the full conversation anyway.

Think of it as: the chat's own memory, kept server-side.

Sending history yourself

Your app stores and resends every message

This works, but your code grows the history forever and pays to resend it on every single turn. Session memory removes that code entirely.

Not the same as: session memory. You can keep either approach. See the chatbot guide.

Response caching

Same question, same answer

Caching returns a saved response for identical requests to save time and money. Session turns are new context every time, so they skip the cache on purpose.

Different job: caching saves cost on repeats, sessions keep conversations fresh.

Vector memory / knowledge bases

Long-term knowledge, extra infrastructure

Embedding databases store facts your AI can retrieve later. Session memory is the context of one ongoing conversation. Many teams use both together.

Complementary: session memory for chat context, a knowledge base for durable facts.

Getting started

Turn it on in minutes, with no cache changes

Add conversation memory without rebuilding your application or changing how your existing cache works.

For developers: enable session memory with a small configuration change.

ModelRiver console
Workflows my_support_bot Advanced

Session memory

Group requests into conversations and give the AI rolling memory of the chat.

Session memory

Turned on. Conversations will appear under Logs → Sessions

Logs Sessions
Active conversations Live
View turn-by-turn detail Any session
Delete a session to reset its memory One click

Session memory manages conversation context for the workflow and adds a small LLM cost at summary boundaries.

01

Enable session memory on a workflow

Open any workflow, go to Advanced settings, and switch on Session memory. It is off by default.

02

Send a message, get your session id

The first request creates the conversation and returns its id. Keep that id for the rest of the chat.

03

Send only the latest message from then on

Include the session id with each new message. ModelRiver merges the conversation memory itself, so no history management is needed in your code.

Manage conversations

Every conversation, visible in the console

See conversations, inspect their context, and understand what your AI received, all from one place.

Sessions

Conversation memory grouped by session, newest activity first.

SessionLast requestMemory summaryTurnsCostActivity
sess_9f8c… Summarized

Customer asked to cancel order #1234

Customer has order #1234 (Deluxe plan) and requested a full cancellation

7$0.422m ago
sess_77d0… Summarized

Booked indoor table near the window

Restaurant booking: party of 2, tomorrow 7pm, indoor near the window

5$0.213h ago
sess_a1b2… Raw

What's the status of my refund?

Raw history, no summary yet

3$0.091h ago
sess_c3d4… Summarized

Can I change my delivery address?

Delivery address update requested for order #5821

9$0.314h ago
sess_e5f6… Raw

Help me choose a plan

Comparing Starter and Deluxe plans

2$0.06Yesterday
sess_g7h8… Summarized

The setup is not working

Troubleshooting integration setup and API key

11$0.57Yesterday
sess_i9j0… Raw

Where can I find my invoice?

Invoice lookup for the current billing period

4$0.122d ago
sess_k1l2… Summarized

I need to update my payment method

Payment method update completed successfully

6$0.242d ago

Session details

sess_9f8c… Summarized memory summary v3

Turns

7

Total tokens

3,482

Total cost

$0.42

Request URL

POST /v1/ai/async

Current memory

Summary

Customer purchased the Deluxe plan (order #1234) and asked to cancel it after a billing question.

Key facts

Order #1234 Deluxe plan Cancellation requested

Last turns

User

"Cancel it please"

Assistant

"Done. Your Deluxe plan (order #1234) is cancelled. Refund lands in 5–7 business days."

Delete to reset this conversation's memory. Request logs remain.

Delete session

Who uses it

Built for real customer conversations

Give customers continuity, give your AI the right context, and give your team a clear view of what happened.

Support teams

Customers pick up where they left off

Conversations continue naturally instead of starting from zero when someone returns for help.

Product teams

Your AI keeps the right context

Relevant conversation history stays connected to the session, so guided flows remain coherent from one step to the next.

Engineering

Your team can inspect what happened

Conversations and session context remain visible in the console for review, debugging, and control.

For developers

Your AI remembers the conversation

Every conversation stays together as one continuous session, so your AI can understand what was said before and respond with the right context.

For developers: Pass a session ID with each message. ModelRiver handles the conversation context automatically.

1

Start a conversation

Send a request without session_id. The response includes one in meta.session_id (streaming returns it in the first SSE event).

2

Continue it with the current turn only

Send session_id plus the latest message. Do not accumulate history client-side. The server merges raw history and the rolling summary.

3

Clear, safe behavior

A session id that does not belong to your project or workflow returns 422 session_not_found. Session ids are grouping identifiers only. channel_id and request_log_id handle request correlation.

4

OpenAI-compatible endpoints included

Accept session_id in the request body and read it back from the x-modelriver-session-id response header.

Example: two turns, current turn only

// Turn 1: start the conversation
await fetch(`${API_URL}/v1/ai/async`, {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${KEY}` },
  body: JSON.stringify({
    workflow: 'my_support_bot',
    messages: [{ role: 'user', content: 'My order is 1234' }]
  })
});
// Response contains the session id
const sessionId = (await res.json()).session_id;

// Turn 2: continue with the latest message only
await fetch(`${API_URL}/v1/ai/async`, {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${KEY}` },
  body: JSON.stringify({
    workflow: 'my_support_bot',
    session_id: sessionId,
    messages: [{ role: 'user', content: 'Cancel it please' }]
  })
});

FAQ

Common questions about sessions

Quick answers for product, support, and engineering teams, without ModelRiver jargon.

What is a session?

A session is the ongoing conversation between a user and your AI. It keeps the messages and context connected so the AI can continue naturally.

Does my AI remember previous conversations?

Yes. When messages belong to the same session, ModelRiver can keep the relevant conversation context connected across interactions.

Do I need to manage conversation history myself?

No. ModelRiver handles the session context for you, so you do not have to manually rebuild conversation history for every request.

Can I see what happened in a session?

Yes. Sessions are visible in the ModelRiver console so your team can inspect conversations and their context.

Do I need to change my existing application?

Session memory is designed to fit into an existing AI workflow with minimal changes. Developers can pass a session ID and let ModelRiver handle the conversation context.

Build AI that remembers the whole conversation

Give your AI persistent conversation context without building the memory infrastructure yourself.