Session Management

Configure single-turn and multi-turn conversation modes. Manage session lifecycle, message limits, and automatic cleanup.

Overview

Chat2API supports two conversation modes for different use cases. Session management maintains conversation context across multiple API calls.

Quick Reference

Configure in Advanced SettingsProxySession Management

Session Modes

Single-Turn Mode

Each request is independent with no context retention.

Default mode. Suitable for stateless API calls.

Characteristics:

FeatureDescription
ContextNot retained between requests
Session IDReturns empty string
Resource UsageMinimal
Provider SessionOptionally deleted after chat

Best For:

  • Simple Q&A
  • Translation tasks
  • Text generation
  • One-off queries

Delete After Timeout:

In single-turn mode, enable deleteAfterTimeout to automatically delete the provider-side conversation after chat ends. This helps:

  • Save provider storage
  • Maintain privacy
  • Clean up unused conversations

Multi-Turn Mode

Conversation context is maintained within the same session.

Characteristics:

FeatureDescription
ContextRetained across requests
Session IDUnique ID per session
Resource UsageHigher (stores history)
Provider SessionMaintained for continuity

Best For:

  • Conversational AI applications
  • Multi-step tasks
  • Context-dependent queries
  • Customer support bots

Configuration

Configure in Advanced SettingsProxySession Management:

OptionDescriptionDefaultRange
ModeSingle-turn or Multi-turnSingle-turn-
Session TimeoutMinutes before session expires301-1440
Max Messages per SessionMaximum messages to retain1001-500
Max Sessions per AccountMaximum concurrent sessions101-10
Delete After TimeoutDelete provider session after chat (single-turn only)Disabled-

Using Sessions

Creating a Session

Sessions are automatically created when you include a session_id in your request:

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "DeepSeek-V3.2",
    "messages": [
      {"role": "user", "content": "My name is Alice"}
    ],
    "session_id": "user-123-session"
  }'

Continuing a Session

Use the same session_id to continue the conversation:

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "DeepSeek-V3.2",
    "messages": [
      {"role": "user", "content": "What is my name?"}
    ],
    "session_id": "user-123-session"
  }'

The model remembers the context and responds: "Your name is Alice."

Session ID Format

RequirementDescription
UniquenessUse unique IDs per user/conversation
FormatUUID or user-specific identifier recommended
CaseSession IDs are case-sensitive

Session Lifecycle

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Created   │ ──▶ │   Active    │ ──▶ │   Expired   │ ──▶ │   Cleaned   │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘
StageDescription
CreatedFirst request with session_id
ActiveEach request keeps alive (configurable timeout)
ExpiredTimeout reached
CleanedAuto deletion

Important: If you clear the conversation history on the official web page, you must manually clean the corresponding Session in Chat2API, otherwise the conversation context may become inconsistent.

States

StateDescription
activeSession is in use, context is retained
expiredTimeout reached, session marked for cleanup
cleanedSession removed from memory

Session Limits

Message Limit

When a session reaches maxMessagesPerSession:

  1. Oldest messages are removed first
  2. Recent context is preserved
  3. Session continues to function normally

Session Count Limit

When an account reaches maxSessionsPerAccount:

  1. Oldest inactive sessions are removed
  2. New sessions can be created
  3. Active sessions are not affected

Session Management UI

The Session Management page provides:

ActionDescription
View SessionsSee all active sessions with details
RefreshUpdate session list
Delete SessionRemove a specific session
Clear AllRemove all sessions

Session Information Display

Each session shows:

  • Session ID
  • Provider and Account
  • Message count
  • Status (active/expired)
  • Last active time

Automatic Cleanup

The system automatically cleans up expired sessions:

On Startup

Clean expired sessions when app starts

Periodic Check

Check and clean every 1 minute

On New Session

Clean when creating new session if limit reached

Best Practices

Session ID Management

  1. Use UUIDs: Generate unique IDs for each conversation
  2. User Association: Tie session IDs to user identifiers
  3. Consistent Format: Use a consistent naming convention

Configuration Tuning

Use CaseTimeoutMax MessagesMax Sessions
Quick Q&A5-10 min20-505
Customer Support30-60 min100-20010
Long Conversations120+ min200-5003

Resource Management

  1. Monitor Usage: Check session list periodically
  2. Set Appropriate Limits: Balance functionality and resources
  3. Clean Up Proactively: Use the Clear All function when needed

Troubleshooting

Session Not Working

Verify session mode is set to Multi-turn for context retention.

Checklist:

  • Session mode is Multi-turn
  • session_id is included in request
  • Session has not expired
  • Using the same session_id across requests

Context Lost

Possible Causes:

CauseSolution
Session expiredIncrease timeout or recreate session
Message limit reachedIncrease max messages setting
Session deletedCheck if manually deleted

Too Many Sessions

Solutions:

  1. Reduce maxSessionsPerAccount
  2. Decrease sessionTimeout for faster cleanup
  3. Use the Clear All function in UI
  4. Implement session cleanup in your application

Provider Session Not Deleted (Single-Turn)

If deleteAfterTimeout is enabled but provider sessions persist:

  • Check if the provider supports session deletion
  • Verify the account has proper permissions
  • Check logs for deletion errors

On this page