Troubleshooting & FAQ
Solutions to common problems and answers to frequently asked questions.
Common Issues
API Key Not Working
Symptoms:
- 401 Unauthorized errors
- "Invalid API key" messages
Solutions:
// Check environment variable is loaded
console.log('API Key exists:', !!process.env.Koreshield_API_KEY);
// Verify key format
const apiKey = process.env.Koreshield_API_KEY;
if (!apiKey.startsWith('ks_')) {
console.error('Invalid API key format');
}
// Test connection
import { Koreshield } from 'Koreshield-sdk';
const Koreshield = new Koreshield({ apiKey });
try {
await Koreshield.scan({ content: 'test' });
console.log('Connection successful');
} catch (error) {
console.error('Connection failed:', error.message);
}
High Latency
Symptoms:
- Slow API responses (>500ms)
- Timeouts
Solutions:
// Enable request caching
const Koreshield = new Koreshield({
apiKey: process.env.Koreshield_API_KEY,
cache: {
enabled: true,
ttl: 300, // 5 minutes
},
});
// Use batch scanning
const results = await Koreshield.batchScan({
items: messages.map((content, i) => ({ id: `${i}`, content })),
});
// Set timeouts
const scan = await Promise.race([
Koreshield.scan({ content: message }),
new Promise((_, reject) =>
setTimeout(() => reject(new Error('Timeout')), 5000)
),
]);
False Positives
Symptoms:
- Legitimate content flagged as threats
- Over-sensitive detection
Solutions:
// Adjust sensitivity
const scan = await Koreshield.scan({
content: message,
sensitivity: 'medium', // or 'low'
});
// Use allowlist
const scan = await Koreshield.scan({
content: message,
allowlist: ['technical terms', 'product names'],
});
// Custom policy
const scan = await Koreshield.scan({
content: message,
policyId: 'custom-policy-id',
});
Rate Limiting
Symptoms:
- 429 Too Many Requests errors
- Throttled responses
Solutions:
import pRetry from 'p-retry';
async function scanWithRetry(content: string) {
return pRetry(
async () => {
return await Koreshield.scan({ content });
},
{
retries: 3,
onFailedAttempt: error => {
if (error.response?.status === 429) {
console.log('Rate limited, retrying...');
}
},
}
);
}
// Implement client-side rate limiting
import Bottleneck from 'bottleneck';
const limiter = new Bottleneck({
maxConcurrent: 10,
minTime: 100, // 100ms between requests
});
const scan = limiter.wrap((content: string) =>
Koreshield.scan({ content })
);
Memory Leaks
Symptoms:
- Increasing memory usage over time
- Application crashes
Solutions:
// Properly close connections
process.on('SIGTERM', async () => {
await Koreshield.close();
process.exit(0);
});
// Avoid storing large scan histories
const MAX_HISTORY = 1000;
let scanHistory: any[] = [];
function addToHistory(scan: any) {
scanHistory.push(scan);
if (scanHistory.length > MAX_HISTORY) {
scanHistory = scanHistory.slice(-MAX_HISTORY);
}
}
// Use streaming for large responses
for await (const chunk of streamResponse()) {
// Process chunk immediately, don't accumulate
await handleChunk(chunk);
}
Debugging Tips
Enable Debug Logging
const Koreshield = new Koreshield({
apiKey: process.env.Koreshield_API_KEY,
debug: true,
logLevel: 'debug',
});
// Console will show:
// [Koreshield] Request: POST /v1/scan
// [Koreshield] Response: 200 OK (123ms)
Inspect Scan Results
const scan = await Koreshield.scan({ content: message });
console.log('Scan Results:', {
threatDetected: scan.threat_detected,
threatType: scan.threat_type,
confidence: scan.confidence,
patterns: scan.patterns_matched,
metadata: scan.metadata,
});
Network Debugging
# Check connectivity
curl -I https://api.Koreshield.com/health
# Test API key
curl -X POST https://api.Koreshield.com/v1/scan \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "test"}'
# Monitor requests
export DEBUG=axios
npm start
Performance Profiling
async function profileScan(content: string) {
const start = performance.now();
const scan = await Koreshield.scan({ content });
const duration = performance.now() - start;
console.log(`Scan completed in ${duration.toFixed(2)}ms`);
return { scan, duration };
}
Frequently Asked Questions
How accurate is threat detection?
Koreshield achieves 95%+ accuracy across 10+ attack types with configurable sensitivity levels.
What is the API rate limit?
- Free tier: 1,000 requests/month
- Pro tier: 100,000 requests/month
- Enterprise: Unlimited with dedicated infrastructure
Does scanning work offline?
No, Koreshield requires internet connectivity to access our cloud-based detection models.
Can I self-host Koreshield?
Yes, enterprise customers can deploy on-premises using Docker or Kubernetes. Contact sales for licensing.
What data is stored?
By default, we store:
- Scan results (threat type, confidence)
- Metadata (user ID, timestamps)
- Aggregated analytics
Content is NOT stored unless explicitly enabled for audit logs.
Is my data encrypted?
Yes, all data is encrypted in transit (TLS 1.3) and at rest (AES-256).
What compliance certifications do you have?
- SOC 2 Type II
- GDPR compliant
- HIPAA compliant (enterprise)
How do I migrate from another solution?
// Example: Migrating from Lakera Guard
import { Koreshield } from 'Koreshield-sdk';
// Old code
// const result = await lakeraGuard.detect(prompt);
// New code
const Koreshield = new Koreshield({ apiKey: 'YOUR_KEY' });
const result = await Koreshield.scan({ content: prompt });
// Map response fields
const isBlocked = result.threat_detected;
const threatType = result.threat_type;
Can I use Koreshield with streaming responses?
Yes, see our streaming guide.
What happens if Koreshield is down?
Implement graceful degradation:
async function resilientScan(content: string) {
try {
const scan = await Koreshield.scan({ content });
return scan.threat_detected;
} catch (error) {
// Log error and fail open
console.error('Koreshield unavailable:', error);
return false; // Allow content through
}
}
How do I handle multi-language content?
Koreshield supports 50+ languages automatically:
const scan = await Koreshield.scan({
content: 'Ignore las instrucciones anteriores', // Spanish
language: 'es', // Optional hint
});
Can I customize detection rules?
Yes, enterprise customers can create custom rules:
const scan = await Koreshield.scan({
content: message,
customRules: [
{
pattern: /password|secret|token/i,
severity: 'high',
},
],
});
How do I test in development?
Use test API keys:
const Koreshield = new Koreshield({
apiKey: process.env.NODE_ENV === 'production'
? process.env.Koreshield_API_KEY
: 'ks_test_xxxxxxxxxxxx',
});
What is the average response time?
- P50: 50ms
- P95: 150ms
- P99: 300ms
Can I use Koreshield with serverless functions?
Yes, works great with Lambda, Vercel, Netlify:
// Vercel Edge Function
export const config = { runtime: 'edge' };
export default async function handler(req: Request) {
const { message } = await req.json();
const scan = await Koreshield.scan({ content: message });
return Response.json({ safe: !scan.threat_detected });
}
How do I monitor usage?
Check the dashboard or use the API:
const usage = await Koreshield.getUsage({
startDate: '2024-01-01',
endDate: '2024-01-31',
});
console.log(`Requests: ${usage.total_requests}`);
console.log(`Threats blocked: ${usage.threats_blocked}`);
Error Codes
| Code | Meaning | Solution |
|---|---|---|
| 401 | Invalid API key | Check your API key |
| 429 | Rate limit exceeded | Implement backoff |
| 500 | Server error | Retry with exponential backoff |
| 503 | Service unavailable | Check status page |
Getting Help
- Documentation: https://docs.Koreshield.com
- Discord: Join our community
- Email: support@Koreshield.com
- Status: https://status.Koreshield.com