Search
NewUpdated
The chaos.search namespace provides full-text and semantic search across Chaos Labs' knowledge base. Query multiple search engines simultaneously, stream results as they arrive from each engine, discover available engines, and power autocomplete with real-time suggestions.
import { Chaos } from '@chaoslabs/ai-sdk';
const chaos = new Chaos({ apiKey: process.env.CHAOS_API_KEY! });
// Basic keyword search
const { results, search_id } = await chaos.search.query('Aave v3 liquidations', 10);
console.log(`Search ${search_id}: ${results.length} results`);
// Multi-engine universal search
const universal = await chaos.search.universal({
query: 'ETH staking yields',
mode: 'deep',
score_results: true,
});
console.log(`Highlights: ${universal.key_highlights}`);Copy code
Open in Cursor
Open in VS Code
Open in v0
Open in Claude
Open in ChatGPT
Method Reference
| Method | HTTP | Endpoint | Returns |
|---|---|---|---|
query(query, limit?) | GET | /v1/search | SearchResults |
suggestions(query, k?) | GET | /v1/search/universal/suggestions | SearchSuggestionsResponse |
engines() | GET | /v1/search/engines | EngineGroup[] |
universal(params) | POST | /v1/search/universal | SearchResults |
universalStream(params, onEvent?) | POST | /v1/search/universal/stream | SearchStreamEvent[] |
Core Types
type SearchMode = 'fast' | 'deep';
type SupportedEngine = string;
interface EngineConfig {
[key: string]: unknown;
}
interface SearchResult {
result_ref_id: string;
title?: string | null;
description?: string | null;
content?: string | null;
type?: string | null;
img_url?: string | null;
url?: string | null;
raw_result?: Record<string, unknown> | null;
engine_id?: string | null;
elapsed_ms?: number | null;
published_at?: string | null;
indexed_at?: string | null;
extra_data?: Record<string, unknown> | null;
}
interface SearchResults {
search_id: string;
results: SearchResult[];
key_highlights?: string | null;
related_questions?: Array<Record<string, unknown>> | null;
}
interface UniversalSearchParams {
query: string;
limit?: number;
engines?: SupportedEngine[];
score_results?: boolean;
mode?: SearchMode;
fan_out?: boolean;
fan_out_limit?: number;
engine_configs?: Record<SupportedEngine, EngineConfig>;
include_sites?: string[];
exclude_sites?: string[];
}
interface SearchResultsEvent {
type: 'results';
engine_id: string;
results: SearchResult[];
elapsed_ms?: number | null;
}
interface SearchMetadataEvent {
type: 'metadata';
key_highlights?: string | null;
related_questions?: Array<Record<string, unknown>> | null;
}
interface SearchDoneEvent {
type: 'done';
search_id: string;
total_results: number;
}
interface SearchErrorEvent {
type: 'error';
engine_id: string;
message: string;
}
type SearchStreamEvent =
| SearchResultsEvent
| SearchMetadataEvent
| SearchDoneEvent
| SearchErrorEvent;
interface EngineGroup {
[key: string]: unknown;
}
interface SearchSuggestionsResponse {
suggestions: string[];
}Copy code
Open in Cursor
Open in VS Code
Open in v0
Open in Claude
Open in ChatGPT
Was this helpful?