Official JavaScript SDK for KeiroLabs API - Search, Research, and Web Crawling
Official JavaScript/TypeScript SDK for KeiroLabs API
AI-powered search, research, and web crawling capabilities
Get API Key |
npm |
Documentation
bash
npm install keirolabs
`
Requirements: Node.js >= 14.0.0
---
Quick Start
`javascript
const { Keiro } = require('keirolabs');
const client = new Keiro("your-api-key");
async function main() {
// Search
const result = await client.search("machine learning trends 2024");
console.log(result.data);
console.log(Credits remaining: ${result.creditsRemaining});
}
main();
`
> Get your API key: https://www.keirolabs.cloud/
---
TypeScript Support
Full TypeScript support with type definitions included:
`typescript
import { Keiro, SearchResult, KeiroAuthError } from 'keirolabs';
const client = new Keiro(process.env.KEIRO_API_KEY!);
const result: SearchResult = await client.search("TypeScript best practices");
`
---
API Methods
| Method | Description | Credits |
|--------|-------------|---------|
| search(query) | Neural search | 1 |
| searchPro(query) | Advanced search | Variable |
| searchEngine(query) | Search engine | Variable |
| answer(query) | AI-powered answers | 5 |
| research(query) | Topic research | Variable |
| researchPro(query) | Advanced research | Variable |
| webCrawler(url) | Extract web data | Variable |
| healthCheck() | Server status | Free |
| validateApiKey() | Key validation | Free |
---
Usage Examples
$3
`javascript
const result = await client.search("Python best practices");
console.log(Found ${result.data.length} results);
console.log(Credits: ${result.creditsRemaining});
result.data.forEach(item => {
console.log(item.title);
console.log(item.url);
});
`
$3
`javascript
const answer = await client.answer("What is reinforcement learning?");
console.log(answer.data);
console.log(Credits: ${answer.creditsRemaining});
`
$3
`javascript
const research = await client.research("climate change solutions");
console.log(research.data);
`
$3
`javascript
const data = await client.webCrawler("https://example.com/article");
console.log(data.data.content);
console.log(data.data.title);
`
---
Error Handling
`javascript
const {
Keiro,
KeiroAuthError,
KeiroRateLimitError,
KeiroValidationError,
KeiroConnectionError
} = require('keirolabs');
const client = new Keiro(process.env.KEIRO_API_KEY);
try {
const result = await client.search("query");
} catch (error) {
if (error instanceof KeiroAuthError) {
console.log("Invalid API key");
} else if (error instanceof KeiroRateLimitError) {
console.log("Out of credits");
} else if (error instanceof KeiroValidationError) {
console.log(Invalid parameters: ${error.message});
} else if (error instanceof KeiroConnectionError) {
console.log("Network error");
} else {
console.log(Error: ${error.message});
}
}
`
$3
| Exception | Description |
|-----------|-------------|
| KeiroError | Base exception class |
| KeiroAuthError | Invalid API key |
| KeiroRateLimitError | Out of credits |
| KeiroValidationError | Invalid parameters |
| KeiroConnectionError | Network issues |
| KeiroAPIError | General API errors |
---
Configuration
$3
`javascript
const client = new Keiro("your-api-key");
`
$3
`javascript
const client = new Keiro({
apiKey: "your-api-key",
timeout: 60000, // 60 seconds
baseUrl: "http://localhost:8000/api" // For local development
});
`
$3
`javascript
require('dotenv').config();
const client = new Keiro(process.env.KEIRO_API_KEY);
`
Create .env file:
`
KEIRO_API_KEY=your-api-key-here
`
$3
`javascript
const client = new Keiro(process.env.KEIRO_API_KEY);
client.setBaseUrl("https://custom-api.example.com/api");
`
---
Advanced Examples
$3
`javascript
const queries = ["Python", "JavaScript", "TypeScript"];
const results = await Promise.all(
queries.map(query => client.search(query))
);
results.forEach((result, index) => {
console.log(Query: ${queries[index]});
console.log(Results: ${result.data.length});
console.log(Credits: ${result.creditsRemaining}\n);
});
`
$3
`javascript
async function searchWithRetry(query, maxRetries = 3) {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
return await client.search(query);
} catch (error) {
if (error instanceof KeiroRateLimitError) {
throw error; // Don't retry on rate limit
}
if (attempt === maxRetries) throw error;
console.log(Attempt ${attempt} failed, retrying...);
await new Promise(r => setTimeout(r, 1000 * attempt));
}
}
}
`
---
API Types
`typescript
interface SearchResult {
data: any;
creditsRemaining: number;
}
interface HealthCheckResult {
status: string;
environment: string;
database?: string;
service?: string;
}
interface ValidateApiKeyResult {
valid: boolean;
message: string;
server_status: string;
environment: string;
}
``
Version 0.1.4
Made by KeiroLabs Team