Skip to main content
Synthra provides comprehensive error handling with typed error classes and automatic retry logic.

Error Types

try {
  await agent.sendMessage(session.id, 'Hello');
} catch (error) {
  if (error instanceof ValidationError) {
    console.log('Invalid parameters');
  } else if (error instanceof AuthenticationError) {
    console.log('Invalid API key');
  } else if (error instanceof RateLimitError) {
    console.log(`Retry after ${error.retryAfter}s`);
  } else if (error instanceof SessionError) {
    console.log('Session not found or expired');
  }
}

Error Codes

CodeHTTPDescription
validation_error400Invalid parameters
invalid_token401Authentication failed
session_not_found404Session does not exist
context_overflow413Context window exceeded
rate_limit_exceeded429Too many requests
internal_error500Server-side error

Automatic Retry

const agent = new SynthraAgent({
  apiKey: process.env.SYNTHRA_API_KEY,
  retryConfig: {
    maxRetries: 3,
    initialDelay: 1000,
    backoffMultiplier: 2
  }
});

Error Context

All errors include detailed context:
console.log(error.code);        // Error code
console.log(error.message);     // Human-readable message
console.log(error.statusCode);  // HTTP status
console.log(error.requestId);   // Request ID for support

Error Recovery

async function sendWithRecovery(sessionId, message, userId) {
  try {
    return await agent.sendMessage(sessionId, message);
  } catch (error) {
    if (error instanceof SessionError) {
      const newSession = agent.createSession(userId);
      return await agent.sendMessage(newSession.id, message);
    }
    throw error;
  }
}
All errors include a requestId field. Include this when contacting support.
Do not expose error details to end users. Log errors securely and show user-friendly messages.