Query and List Conversations
User Intent
"I want to list all my conversations or find a specific conversation by name"
Operation
- SDK Method: - graphlit.queryConversations()or- graphlit.getConversation()
- GraphQL: - queryConversationsor- getConversationquery
- Entity Type: Conversation 
- Common Use Cases: List conversations, find conversation by name, retrieve conversation history, manage conversations 
TypeScript (Canonical)
import { Graphlit } from 'graphlit-client';
import { EntityState } from 'graphlit-client/dist/generated/graphql-types';
const graphlit = new Graphlit();
// Query all conversations
const allConversations = await graphlit.queryConversations();
console.log(`Total conversations: ${allConversations.conversations.results.length}`);
allConversations.conversations.results.forEach(conv => {
  console.log(`- ${conv.name} (${conv.state})`);
  console.log(`  Messages: ${conv.messages?.length || 0}`);
});
// Search by name
const searchResults = await graphlit.queryConversations({
  search: 'Support Chat'
});
console.log(`\nFound ${searchResults.conversations.results.length} matching conversations`);
// Get specific conversation with full details
const conversationId = 'conversation-id-here';
const conversation = await graphlit.getConversation(conversationId);
console.log(`\nConversation: ${conversation.conversation.name}`);
console.log(`Created: ${conversation.conversation.creationDate}`);
console.log(`Messages: ${conversation.conversation.messages?.length || 0}`);
// Print message history
conversation.conversation.messages?.forEach((msg, index) => {
  console.log(`\n${index + 1}. ${msg.role}:`);
  console.log(msg.message);
});Parameters
queryConversations (Optional Filter)
- search(string): Search by conversation name
- states(EntityState[]): Filter by state- ENABLED,- DISABLED
 
getConversation (Required)
- id(string): Conversation ID
Response
queryConversations
{
  conversations: {
    results: Conversation[];
  }
}
interface Conversation {
  id: string;
  name: string;
  state: EntityState;
  creationDate: Date;
  messages?: Message[];
  specification?: Specification;
}getConversation
{
  conversation: {
    id: string;
    name: string;
    state: EntityState;
    creationDate: Date;
    messages: Message[];
    specification?: Specification;
  }
}
interface Message {
  role: MessageRole;  // USER, ASSISTANT, SYSTEM
  message: string;
  timestamp: Date;
  citations?: Citation[];
}Developer Hints
Conversation History Access
Important: Only getConversation() returns full message history. queryConversations() returns summaries.
// Query - NO message history
const conversations = await graphlit.queryConversations();
conversations.conversations.results.forEach(conv => {
  console.log(conv.name);  //  Available
  console.log(conv.messages);  //  Usually undefined or partial
});
// Get - FULL message history
const conversation = await graphlit.getConversation(conversationId);
conversation.conversation.messages?.forEach(msg => {
  console.log(msg.message);  //  Full history
});Find Conversation by Name
// Search for conversation
const results = await graphlit.queryConversations({
  search: 'Customer Support'
});
if (results.conversations.results.length > 0) {
  const conv = results.conversations.results[0];
  console.log(`Found: ${conv.name} (${conv.id})`);
} else {
  console.log('Conversation not found');
}Resume Conversation
// Find existing conversation
const conversations = await graphlit.queryConversations({
  search: 'My Chat'
});
let conversationId: string;
if (conversations.conversations.results.length > 0) {
  // Resume existing
  conversationId = conversations.conversations.results[0].id;
  console.log('Resuming existing conversation');
} else {
  // Create new
  const newConv = await graphlit.createConversation({
    name: 'My Chat'
  });
  conversationId = newConv.createConversation.id;
  console.log('Created new conversation');
}
// Continue conversation
await graphlit.promptConversation({
  prompt: 'Hello!',
  id: conversationId
});Conversation Statistics
const conversations = await graphlit.queryConversations();
// Count by state
const active = conversations.conversations.results.filter(
  c => c.state === EntityState.Enabled
).length;
console.log(`Active conversations: ${active} / ${conversations.conversations.results.length}`);
// Find most recent
const sorted = conversations.conversations.results.sort(
  (a, b) => new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime()
);
console.log('\nMost recent conversations:');
sorted.slice(0, 5).forEach(conv => {
  console.log(`- ${conv.name} (${new Date(conv.creationDate).toLocaleDateString()})`);
});Variations
1. List All Conversations
Get all conversations:
const conversations = await graphlit.queryConversations();
console.log(`You have ${conversations.conversations.results.length} conversations`);2. Search by Name
Find specific conversations:
const results = await graphlit.queryConversations({
  search: 'Support'
});
console.log('Support conversations:');
results.conversations.results.forEach(conv => {
  console.log(`- ${conv.name}`);
});3. Get Full Conversation History
Retrieve with messages:
const conversation = await graphlit.getConversation(conversationId);
console.log(`\nConversation: ${conversation.conversation.name}`);
console.log(`Total messages: ${conversation.conversation.messages?.length || 0}\n`);
conversation.conversation.messages?.forEach((msg, index) => {
  console.log(`${index + 1}. [${msg.role}]:`);
  console.log(msg.message);
  console.log('---');
});4. Filter Active Conversations
Only enabled conversations:
const active = await graphlit.queryConversations({
  states: [EntityState.Enabled]
});
console.log(`Active conversations: ${active.conversations.results.length}`);5. Recent Conversations
Sort by creation date:
const conversations = await graphlit.queryConversations();
const recent = conversations.conversations.results
  .sort((a, b) => new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime())
  .slice(0, 10);
console.log('Last 10 conversations:');
recent.forEach((conv, index) => {
  console.log(`${index + 1}. ${conv.name} - ${new Date(conv.creationDate).toLocaleDateString()}`);
});6. Conversation with Citations
Get conversation with citation tracking:
const conversation = await graphlit.getConversation(conversationId);
console.log(`Conversation: ${conversation.conversation.name}\n`);
conversation.conversation.messages?.forEach((msg, index) => {
  if (msg.role === MessageRole.Assistant) {
    console.log(`Assistant Response ${index + 1}:`);
    console.log(msg.message);
    
    if (msg.citations && msg.citations.length > 0) {
      console.log('\nCitations:');
      msg.citations.forEach((citation, citIndex) => {
        console.log(`  [${citIndex + 1}] ${citation.content?.name}`);
      });
    }
    console.log('---\n');
  }
});Common Issues
Issue: Conversation not found error
Solution: Verify conversation ID is correct. Conversation may have been deleted. Use queryConversations() to list all.
Issue: No message history returned
Solution: Use getConversation() not queryConversations(). Only getConversation() includes full messages.
Issue: Search returns no results
Solution: Search is case-sensitive. Try partial matches. Use queryConversations() without filter to see all.
Issue: Old conversations appearing
Solution: Conversations persist indefinitely. Use deleteConversation() to clean up old ones.
Production Example
Conversation history viewer:
// List all conversations with details
const conversations = await graphlit.queryConversations();
console.log('=== CONVERSATION HISTORY ===\n');
for (const conv of conversations.conversations.results) {
  // Get full details
  const fullConv = await graphlit.getConversation(conv.id);
  
  const messageCount = fullConv.conversation.messages?.length || 0;
  const lastMessage = fullConv.conversation.messages?.[messageCount - 1];
  
  console.log(`📝 ${fullConv.conversation.name}`);
  console.log(`   ID: ${fullConv.conversation.id}`);
  console.log(`   Created: ${new Date(fullConv.conversation.creationDate).toLocaleDateString()}`);
  console.log(`   Messages: ${messageCount}`);
  console.log(`   State: ${fullConv.conversation.state}`);
  
  if (lastMessage) {
    console.log(`   Last message: ${lastMessage.message.substring(0, 50)}...`);
  }
  
  console.log('');
}Resume or create conversation:
// Try to find existing conversation by name
async function getOrCreateConversation(name: string): Promise<string> {
  const results = await graphlit.queryConversations({
    search: name
  });
  
  if (results.conversations.results.length > 0) {
    const existing = results.conversations.results[0];
    console.log(`📌 Resuming conversation: ${existing.name}`);
    return existing.id;
  }
  
  // Create new
  const newConv = await graphlit.createConversation({
    name: name
  });
  
  console.log(`✨ Created new conversation: ${name}`);
  return newConv.createConversation.id;
}
// Usage
const conversationId = await getOrCreateConversation('Customer Support Chat');
// Continue conversation
const answer = await graphlit.promptConversation({
  prompt: 'How can I help you today?',
  id: conversationId
});
console.log(answer.message.message);Conversation management dashboard:
const conversations = await graphlit.queryConversations();
console.log('=== CONVERSATION DASHBOARD ===\n');
// Statistics
const total = conversations.conversations.results.length;
const active = conversations.conversations.results.filter(
  c => c.state === EntityState.Enabled
).length;
console.log(`Total Conversations: ${total}`);
console.log(`Active: ${active}`);
console.log(`Disabled: ${total - active}\n`);
// Recent activity
const sorted = conversations.conversations.results
  .sort((a, b) => new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime())
  .slice(0, 5);
console.log('Recent Conversations:');
for (const conv of sorted) {
  const fullConv = await graphlit.getConversation(conv.id);
  const msgCount = fullConv.conversation.messages?.length || 0;
  
  console.log(`\n${conv.name}`);
  console.log(`  Messages: ${msgCount}`);
  console.log(`  Created: ${new Date(conv.creationDate).toLocaleDateString()}`);
}Last updated
Was this helpful?
