SDK
JavaScript/TypeScript SDK for EasyRAG
The official EasyRAG JavaScript/TypeScript SDK makes it simple to integrate RAG capabilities into your application.
bashnpm install @easyrag/sdk
javascriptimport { EasyRAG } from '@easyrag/sdk'; const client = new EasyRAG(process.env.EASYRAG_API_KEY); // Upload files await client.upload('my-dataset', [file1, file2]); // Search const results = await client.search('my-dataset', 'refund policy'); // Query const answer = await client.query('my-dataset', 'Summarize the key points');
The SDK provides several advantages over direct API calls:
Without SDK:
javascriptconst formData = new FormData(); formData.append('datasetId', 'my-dataset'); formData.append('file', file); const response = await fetch('https://api.easyrag.com/v1/files/upload', { method: 'POST', headers: { 'Authorization': `Bearer ${apiKey}` }, body: formData }); if (!response.ok) { throw new Error(`HTTP ${response.status}`); } const result = await response.json();
With SDK:
javascriptconst result = await client.upload('my-dataset', file);
javascriptimport { EasyRAG } from '@easyrag/sdk'; import fs from 'fs'; const client = new EasyRAG(process.env.EASYRAG_API_KEY); // Upload from filesystem const file = new File( [fs.readFileSync('document.pdf')], 'document.pdf', { type: 'application/pdf' } ); await client.upload('dataset', file);
javascript// Backend generates token const { token } = await client.createToken('user-dataset', { ttlSeconds: 3600 }); // Frontend uses token const frontendClient = new EasyRAG(token); await frontendClient.search('user-dataset', 'query');
⚠️ Never use API keys in the browser. Use frontend tokens generated from your backend.
Full TypeScript support with autocomplete:
typescriptimport { EasyRAG, type SearchResponse, type UploadResponse } from '@easyrag/sdk'; const client = new EasyRAG(apiKey); const upload: UploadResponse = await client.upload('dataset', files); const results: SearchResponse = await client.search('dataset', 'query');
The SDK provides a custom error class with detailed information:
javascriptimport { EasyRAGError } from '@easyrag/sdk'; try { await client.upload('dataset', file); } catch (error) { if (error instanceof EasyRAGError) { console.log('Status:', error.status); // 402 console.log('Code:', error.code); // "INSUFFICIENT_CREDITS" console.log('Message:', error.message); // "Out of credits" console.log('Details:', error.details); // { required: 10, available: 5 } } }
javascript// Simple const client = new EasyRAG('YOUR_API_KEY'); // With custom options const client = new EasyRAG({ apiKey: 'YOUR_API_KEY', baseUrl: 'https://api.easyrag.com', // Optional timeout: 30000 // Optional (default: 30s) });
| Operation | Cost |
|---|---|
| Upload | 1 credit per file |
| Search | 0.1 credit |
| Query | 0.1 credit |
| File operations | Free |
| Token creation | Free |
| Method | Description |
|---|---|
upload() | Upload and index files |
listFiles() | List files in dataset |
getFile() | Get file details + download URL |
deleteFile() | Delete specific file |
deleteDataset() | Delete all files in dataset |
deleteAll() | Delete all customer files |
search() | Semantic search |
query() | AI-generated answer |
queryStream() | Streaming AI answer |
createToken() | Create frontend token |