Retrieve details for a specific session
cURL
curl --request GET \ --url https://api.example.com/api/v1/sessions/{session_id} \ --header 'X-API-Key: <x-api-key>'
{ "status": "<string>", "result": { "session_id": "<string>", "user": { "user_id": "<string>", "agent_id": "<string>" }, "message_count": 123 }, "time": 123 }
ok
error
curl -X GET http://localhost:1933/api/v1/sessions/a1b2c3d4 \ -H "X-API-Key: your-api-key"
{ "status": "ok", "result": { "session_id": "a1b2c3d4", "user": { "user_id": "alice", "agent_id": "default" }, "message_count": 8 }, "time": 0.1 }
session = client.session(session_id="a1b2c3d4") session.load() # Session identification print(session.session_id) # "a1b2c3d4" print(session.uri) # "viking://session/alice/a1b2c3d4/" print(session.user) # UserIdentifier object # Messages print(len(session.messages)) # Current message count for msg in session.messages: print(f"{msg.role}: {msg.content}")
stats = session.stats print(f"Total turns: {stats.total_turns}") print(f"Total tokens: {stats.total_tokens}") print(f"Compression count: {stats.compression_count}") print(f"Contexts used: {stats.contexts_used}") print(f"Skills used: {stats.skills_used}") print(f"Memories extracted: {stats.memories_extracted}")
compression = session.compression print(f"Summary: {compression.summary}") print(f"Original count: {compression.original_count}") print(f"Compressed count: {compression.compressed_count}") print(f"Compression index: {compression.compression_index}")
# Track what was actually used for usage in session.usage_records: print(f"Type: {usage.type}") # "context" or "skill" print(f"URI: {usage.uri}") print(f"Success: {usage.success}") print(f"Timestamp: {usage.timestamp}")
import openviking as ov client = ov.OpenViking(path="./my_data") client.initialize() # Load existing session session = client.session(session_id="a1b2c3d4") session.load() if session.messages: print("Previous conversation:") for msg in session.messages[-5:]: # Last 5 messages print(f"{msg.role}: {msg.content}") # Continue conversation session.add_message("user", [TextPart(text="What did we discuss earlier?")]) else: print("Session is empty")
session = client.session(session_id="a1b2c3d4") session.load() # Check if session needs compression if session.stats.total_tokens > 8000: print("Session is getting long, consider committing") result = session.commit() print(f"Archived and extracted {result['memories_extracted']} memories")
session = client.session(session_id="a1b2c3d4") session.load() print(f"Session Activity Report") print(f"="*50) print(f"Total turns: {session.stats.total_turns}") print(f"Messages: {len(session.messages)}") print(f"Archives: {session.stats.compression_count}") print(f"\nContext Usage:") print(f" Contexts referenced: {session.stats.contexts_used}") print(f" Skills called: {session.stats.skills_used}") print(f"\nMemory Extraction:") print(f" Memories extracted: {session.stats.memories_extracted}")
{ "status": "error", "error": { "code": "NOT_FOUND", "message": "Session a1b2c3d4 not found" } }