reportify-sdk 0.2.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -49,19 +49,18 @@ const balance = await client.stock.balanceSheet('US:AAPL');
49
49
  const cashflow = await client.stock.cashflowStatement('US:AAPL');
50
50
 
51
51
  // Price data
52
- const prices = await client.stock.prices('US:AAPL', { limit: 30 });
53
- const kline = await client.stock.kline('US:TSLA', { interval: '1d', limit: 100 });
52
+ const prices = await client.stock.prices('US:AAPL', { startDate: '2024-01-01' });
54
53
 
55
- // Real-time quotes
56
- const quotes = await client.stock.quote(['US:AAPL', 'US:MSFT']);
54
+ // Real-time quote
55
+ const quote = await client.stock.quote('US:AAPL');
57
56
 
58
57
  // Company info
59
58
  const overview = await client.stock.overview('US:AAPL');
60
59
  const shareholders = await client.stock.shareholders('US:AAPL');
61
60
 
62
61
  // Screening and calendar
63
- const stocks = await client.stock.screener({ market: 'US', minMarketCap: 1e10 });
64
- const earnings = await client.stock.earningsCalendar({ area: 'us', startDate: '2024-01-01' });
62
+ const stocks = await client.stock.screener({ country: 'US', marketCapMoreThan: 1e10 });
63
+ const earnings = await client.stock.earningsCalendar({ market: 'us', startDate: '2024-01-01', endDate: '2024-01-31' });
65
64
  ```
66
65
 
67
66
  ### Timeline
@@ -92,6 +91,108 @@ const summary = await client.docs.summary('doc_id');
92
91
  // List and search documents
93
92
  const docs = await client.docs.list({ symbols: ['US:AAPL'], pageSize: 10 });
94
93
  const chunks = await client.docs.searchChunks('revenue breakdown', { num: 5 });
94
+
95
+ // Upload documents
96
+ const result = await client.docs.uploadDocs([
97
+ { url: 'https://example.com/report.pdf', name: 'Annual Report' }
98
+ ]);
99
+ ```
100
+
101
+ ### Quant (Quantitative Analysis)
102
+
103
+ ```typescript
104
+ // Compute technical indicators
105
+ const rsi = await client.quant.computeIndicators({
106
+ symbols: ['000001'],
107
+ formula: 'RSI(14)'
108
+ });
109
+
110
+ const macd = await client.quant.computeIndicators({
111
+ symbols: ['000001'],
112
+ formula: 'MACD()'
113
+ });
114
+
115
+ // Screen stocks by formula
116
+ const oversold = await client.quant.screen({ formula: 'RSI(14) < 30' });
117
+ const goldenCross = await client.quant.screen({ formula: 'CROSS(MA(5), MA(20))' });
118
+
119
+ // Get OHLCV data
120
+ const ohlcv = await client.quant.ohlcv({ symbol: '000001', startDate: '2024-01-01' });
121
+ const ohlcvBatch = await client.quant.ohlcvBatch({ symbols: ['000001', '600519'] });
122
+
123
+ // Backtest strategy
124
+ const result = await client.quant.backtest({
125
+ startDate: '2023-01-01',
126
+ endDate: '2024-01-01',
127
+ symbol: '000001',
128
+ entryFormula: 'CROSS(MA(5), MA(20))',
129
+ exitFormula: 'CROSSDOWN(MA(5), MA(20))'
130
+ });
131
+ console.log(`Total Return: ${(result.total_return_pct * 100).toFixed(2)}%`);
132
+ ```
133
+
134
+ ### Concepts
135
+
136
+ ```typescript
137
+ // Get latest concepts
138
+ const concepts = await client.concepts.latest();
139
+ concepts.forEach(c => console.log(c.concept_name));
140
+
141
+ // Get today's concept feeds
142
+ const feeds = await client.concepts.today();
143
+ ```
144
+
145
+ ### Channels
146
+
147
+ ```typescript
148
+ // Search channels
149
+ const result = await client.channels.search('Goldman Sachs');
150
+
151
+ // Get followed channels
152
+ const followings = await client.channels.getFollowings();
153
+
154
+ // Follow/unfollow a channel
155
+ await client.channels.follow('channel_id');
156
+ await client.channels.unfollow('channel_id');
157
+ ```
158
+
159
+ ### Chat
160
+
161
+ ```typescript
162
+ // Chat completion based on documents
163
+ const response = await client.chat.completion(
164
+ 'What are Tesla revenue projections?',
165
+ {
166
+ symbols: ['US:TSLA'],
167
+ mode: 'comprehensive' // concise, comprehensive, deepresearch
168
+ }
169
+ );
170
+ console.log(response.message);
171
+ ```
172
+
173
+ ### Agent
174
+
175
+ ```typescript
176
+ // Create agent conversation
177
+ const conv = await client.agent.createConversation(11887655289749510);
178
+
179
+ // Chat with agent
180
+ const response = await client.agent.chat(
181
+ conv.id,
182
+ 'Analyze NVIDIA latest earnings'
183
+ );
184
+
185
+ // Get agent-generated file
186
+ const fileContent = await client.agent.getFile('file_id');
187
+ // Save in Node.js: fs.writeFileSync('output.xlsx', Buffer.from(fileContent));
188
+ ```
189
+
190
+ ### User
191
+
192
+ ```typescript
193
+ // Get followed companies
194
+ const companies = await client.user.followedCompanies();
195
+ companies.forEach(c => console.log(`${c.symbol}: ${c.name}`));
95
196
  ```
96
197
 
97
198
  ## Error Handling
package/dist/index.d.mts CHANGED
@@ -56,6 +56,13 @@ interface SearchOptions {
56
56
  startDatetime?: string;
57
57
  endDatetime?: string;
58
58
  }
59
+ interface EarningsSearchOptions {
60
+ num?: number;
61
+ startDatetime?: string;
62
+ endDatetime?: string;
63
+ fiscalYear?: string;
64
+ fiscalQuarter?: string;
65
+ }
59
66
  interface CompanyOverview {
60
67
  symbol: string;
61
68
  name: string;
@@ -560,7 +567,7 @@ declare class DocsModule {
560
567
  /**
561
568
  * Query documents by symbols
562
569
  *
563
- * @param symbols - Required: Stock symbols
570
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
564
571
  * @param options - Filter options
565
572
  */
566
573
  queryBySymbols(symbols: string[], options?: {
@@ -1364,6 +1371,78 @@ declare class UserModule {
1364
1371
  followedCompanies(): Promise<FollowedCompany[]>;
1365
1372
  }
1366
1373
 
1374
+ /**
1375
+ * Search Module
1376
+ *
1377
+ * Provides document search functionality across various categories.
1378
+ */
1379
+
1380
+ /**
1381
+ * Search module for document search functionality.
1382
+ *
1383
+ * @example
1384
+ * ```typescript
1385
+ * const results = await client.search.all('Tesla earnings');
1386
+ * const news = await client.search.news('Apple iPhone');
1387
+ * ```
1388
+ */
1389
+ declare class SearchModule {
1390
+ private client;
1391
+ constructor(client: Reportify);
1392
+ /**
1393
+ * Search documents across all categories
1394
+ *
1395
+ * @param query - Search query string
1396
+ * @param options - Search options
1397
+ * @returns List of matching documents
1398
+ */
1399
+ all(query: string, options?: SearchOptions): Promise<Document[]>;
1400
+ /**
1401
+ * Search news articles
1402
+ */
1403
+ news(query: string, options?: SearchOptions): Promise<Document[]>;
1404
+ /**
1405
+ * Search research reports
1406
+ */
1407
+ reports(query: string, options?: SearchOptions): Promise<Document[]>;
1408
+ /**
1409
+ * Search company filings
1410
+ *
1411
+ * @param query - Search query string
1412
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1413
+ * @param options - Search options
1414
+ */
1415
+ filings(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1416
+ /**
1417
+ * Search earnings call transcripts and slides
1418
+ *
1419
+ * @param query - Search query string
1420
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1421
+ * @param options - Search options including fiscal year/quarter filters
1422
+ */
1423
+ conferenceCalls(query: string, symbols: string[], options?: EarningsSearchOptions): Promise<Document[]>;
1424
+ /**
1425
+ * Search earnings financial reports
1426
+ *
1427
+ * @param query - Search query string
1428
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1429
+ * @param options - Search options including fiscal year/quarter filters
1430
+ */
1431
+ earningsPack(query: string, symbols: string[], options?: EarningsSearchOptions): Promise<Document[]>;
1432
+ /**
1433
+ * Search conference calls and IR (Investor Relations) meetings
1434
+ */
1435
+ minutes(query: string, options?: SearchOptions): Promise<Document[]>;
1436
+ /**
1437
+ * Search social media content
1438
+ */
1439
+ socials(query: string, options?: SearchOptions): Promise<Document[]>;
1440
+ /**
1441
+ * Search webpage content
1442
+ */
1443
+ webpages(query: string, options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1444
+ }
1445
+
1367
1446
  /**
1368
1447
  * Reportify Client
1369
1448
  *
@@ -1388,6 +1467,7 @@ declare class Reportify {
1388
1467
  private apiKey;
1389
1468
  private baseUrl;
1390
1469
  private timeout;
1470
+ readonly search: SearchModule;
1391
1471
  readonly stock: StockModule;
1392
1472
  readonly docs: DocsModule;
1393
1473
  readonly quant: QuantModule;
@@ -1422,68 +1502,6 @@ declare class Reportify {
1422
1502
  * Make a GET request and return raw bytes (for file downloads)
1423
1503
  */
1424
1504
  getBytes(path: string): Promise<ArrayBuffer>;
1425
- /**
1426
- * Search documents across all categories
1427
- *
1428
- * @param query - Search query string
1429
- * @param options - Search options
1430
- * @returns List of matching documents
1431
- *
1432
- * @example
1433
- * ```typescript
1434
- * const docs = await client.search('Tesla earnings', { num: 10 });
1435
- * docs.forEach(doc => console.log(doc.title));
1436
- * ```
1437
- */
1438
- search(query: string, options?: SearchOptions): Promise<Document[]>;
1439
- /**
1440
- * Search news articles
1441
- */
1442
- searchNews(query: string, options?: SearchOptions): Promise<Document[]>;
1443
- /**
1444
- * Search research reports
1445
- */
1446
- searchReports(query: string, options?: SearchOptions): Promise<Document[]>;
1447
- /**
1448
- * Search company filings
1449
- * @param query - Search query string
1450
- * @param symbols - Required: Stock symbols to filter by
1451
- * @param options - Search options
1452
- */
1453
- searchFilings(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1454
- /**
1455
- * Search earnings pack documents (Financial reports, Earnings call transcripts, etc.)
1456
- * @param query - Search query string
1457
- * @param symbols - Required: Stock symbols to filter by
1458
- * @param options - Search options
1459
- */
1460
- searchEarningsPack(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1461
- /**
1462
- * Search conference call transcripts
1463
- * @param query - Search query string
1464
- * @param symbols - Required: Stock symbols to filter by
1465
- * @param options - Search options
1466
- */
1467
- searchConferenceCalls(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1468
- /**
1469
- * Search minutes transcripts (Conference calls, IR meetings)
1470
- * @param query - Search query string
1471
- * @param options - Search options
1472
- */
1473
- searchMinutes(query: string, options?: SearchOptions): Promise<Document[]>;
1474
- /**
1475
- * Search social media content
1476
- */
1477
- searchSocials(query: string, options?: SearchOptions): Promise<Document[]>;
1478
- /**
1479
- * Search webpage content
1480
- */
1481
- searchWebpages(query: string, options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1482
- /**
1483
- * @deprecated Use searchConferenceCalls instead
1484
- * Search earnings call transcripts
1485
- */
1486
- searchTranscripts(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1487
1505
  }
1488
1506
 
1489
- export { APIError, type AgentConversation, type AgentMessage, AgentModule, AuthenticationError, type BacktestParams, type BacktestResult, type BatchOHLCVParams, type Calendar, type Channel, ChannelsModule, type ChatCompletionOptions, type ChatCompletionResponse, type ChatMode, ChatModule, type Chunk, type ChunkSearchOptions, type CompanyInfo, type CompanyOverview, type Concept, type ConceptDoc, type ConceptEvent, type ConceptFeed, type ConceptStock, ConceptsModule, type DocsListOptions, DocsModule, type Document, type DocumentInput, type EarningsEvent, type FactorComputeParams, type FactorMeta, type FinancialStatement, type FollowedCompany, type IPOEvent, type IPOStatus, type IndexConstituent, type IndexFund, type IndicatorComputeParams, type IndicatorData, type IndicatorMeta, type IndustryConstituent, KBModule, type KBSearchOptions, type Market, NotFoundError, type OHLCVData, type OHLCVParams, type PaginatedResponse, type Period, type PriceData, QuantModule, type Quote, RateLimitError, Reportify, type ReportifyConfig, ReportifyError, type ScreenParams, type ScreenedStock, type SearchOptions, type Shareholder, type ShareholderType, type StockInfo, type StockMarket, StockModule, TimelineModule, type TimelineOptions, type UploadDocRequest, UserModule };
1507
+ export { APIError, type AgentConversation, type AgentMessage, AgentModule, AuthenticationError, type BacktestParams, type BacktestResult, type BatchOHLCVParams, type Calendar, type Channel, ChannelsModule, type ChatCompletionOptions, type ChatCompletionResponse, type ChatMode, ChatModule, type Chunk, type ChunkSearchOptions, type CompanyInfo, type CompanyOverview, type Concept, type ConceptDoc, type ConceptEvent, type ConceptFeed, type ConceptStock, ConceptsModule, type DocsListOptions, DocsModule, type Document, type DocumentInput, type EarningsEvent, type EarningsSearchOptions, type FactorComputeParams, type FactorMeta, type FinancialStatement, type FollowedCompany, type IPOEvent, type IPOStatus, type IndexConstituent, type IndexFund, type IndicatorComputeParams, type IndicatorData, type IndicatorMeta, type IndustryConstituent, KBModule, type KBSearchOptions, type Market, NotFoundError, type OHLCVData, type OHLCVParams, type PaginatedResponse, type Period, type PriceData, QuantModule, type Quote, RateLimitError, Reportify, type ReportifyConfig, ReportifyError, type ScreenParams, type ScreenedStock, SearchModule, type SearchOptions, type Shareholder, type ShareholderType, type StockInfo, type StockMarket, StockModule, TimelineModule, type TimelineOptions, type UploadDocRequest, UserModule };
package/dist/index.d.ts CHANGED
@@ -56,6 +56,13 @@ interface SearchOptions {
56
56
  startDatetime?: string;
57
57
  endDatetime?: string;
58
58
  }
59
+ interface EarningsSearchOptions {
60
+ num?: number;
61
+ startDatetime?: string;
62
+ endDatetime?: string;
63
+ fiscalYear?: string;
64
+ fiscalQuarter?: string;
65
+ }
59
66
  interface CompanyOverview {
60
67
  symbol: string;
61
68
  name: string;
@@ -560,7 +567,7 @@ declare class DocsModule {
560
567
  /**
561
568
  * Query documents by symbols
562
569
  *
563
- * @param symbols - Required: Stock symbols
570
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
564
571
  * @param options - Filter options
565
572
  */
566
573
  queryBySymbols(symbols: string[], options?: {
@@ -1364,6 +1371,78 @@ declare class UserModule {
1364
1371
  followedCompanies(): Promise<FollowedCompany[]>;
1365
1372
  }
1366
1373
 
1374
+ /**
1375
+ * Search Module
1376
+ *
1377
+ * Provides document search functionality across various categories.
1378
+ */
1379
+
1380
+ /**
1381
+ * Search module for document search functionality.
1382
+ *
1383
+ * @example
1384
+ * ```typescript
1385
+ * const results = await client.search.all('Tesla earnings');
1386
+ * const news = await client.search.news('Apple iPhone');
1387
+ * ```
1388
+ */
1389
+ declare class SearchModule {
1390
+ private client;
1391
+ constructor(client: Reportify);
1392
+ /**
1393
+ * Search documents across all categories
1394
+ *
1395
+ * @param query - Search query string
1396
+ * @param options - Search options
1397
+ * @returns List of matching documents
1398
+ */
1399
+ all(query: string, options?: SearchOptions): Promise<Document[]>;
1400
+ /**
1401
+ * Search news articles
1402
+ */
1403
+ news(query: string, options?: SearchOptions): Promise<Document[]>;
1404
+ /**
1405
+ * Search research reports
1406
+ */
1407
+ reports(query: string, options?: SearchOptions): Promise<Document[]>;
1408
+ /**
1409
+ * Search company filings
1410
+ *
1411
+ * @param query - Search query string
1412
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1413
+ * @param options - Search options
1414
+ */
1415
+ filings(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1416
+ /**
1417
+ * Search earnings call transcripts and slides
1418
+ *
1419
+ * @param query - Search query string
1420
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1421
+ * @param options - Search options including fiscal year/quarter filters
1422
+ */
1423
+ conferenceCalls(query: string, symbols: string[], options?: EarningsSearchOptions): Promise<Document[]>;
1424
+ /**
1425
+ * Search earnings financial reports
1426
+ *
1427
+ * @param query - Search query string
1428
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1429
+ * @param options - Search options including fiscal year/quarter filters
1430
+ */
1431
+ earningsPack(query: string, symbols: string[], options?: EarningsSearchOptions): Promise<Document[]>;
1432
+ /**
1433
+ * Search conference calls and IR (Investor Relations) meetings
1434
+ */
1435
+ minutes(query: string, options?: SearchOptions): Promise<Document[]>;
1436
+ /**
1437
+ * Search social media content
1438
+ */
1439
+ socials(query: string, options?: SearchOptions): Promise<Document[]>;
1440
+ /**
1441
+ * Search webpage content
1442
+ */
1443
+ webpages(query: string, options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1444
+ }
1445
+
1367
1446
  /**
1368
1447
  * Reportify Client
1369
1448
  *
@@ -1388,6 +1467,7 @@ declare class Reportify {
1388
1467
  private apiKey;
1389
1468
  private baseUrl;
1390
1469
  private timeout;
1470
+ readonly search: SearchModule;
1391
1471
  readonly stock: StockModule;
1392
1472
  readonly docs: DocsModule;
1393
1473
  readonly quant: QuantModule;
@@ -1422,68 +1502,6 @@ declare class Reportify {
1422
1502
  * Make a GET request and return raw bytes (for file downloads)
1423
1503
  */
1424
1504
  getBytes(path: string): Promise<ArrayBuffer>;
1425
- /**
1426
- * Search documents across all categories
1427
- *
1428
- * @param query - Search query string
1429
- * @param options - Search options
1430
- * @returns List of matching documents
1431
- *
1432
- * @example
1433
- * ```typescript
1434
- * const docs = await client.search('Tesla earnings', { num: 10 });
1435
- * docs.forEach(doc => console.log(doc.title));
1436
- * ```
1437
- */
1438
- search(query: string, options?: SearchOptions): Promise<Document[]>;
1439
- /**
1440
- * Search news articles
1441
- */
1442
- searchNews(query: string, options?: SearchOptions): Promise<Document[]>;
1443
- /**
1444
- * Search research reports
1445
- */
1446
- searchReports(query: string, options?: SearchOptions): Promise<Document[]>;
1447
- /**
1448
- * Search company filings
1449
- * @param query - Search query string
1450
- * @param symbols - Required: Stock symbols to filter by
1451
- * @param options - Search options
1452
- */
1453
- searchFilings(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1454
- /**
1455
- * Search earnings pack documents (Financial reports, Earnings call transcripts, etc.)
1456
- * @param query - Search query string
1457
- * @param symbols - Required: Stock symbols to filter by
1458
- * @param options - Search options
1459
- */
1460
- searchEarningsPack(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1461
- /**
1462
- * Search conference call transcripts
1463
- * @param query - Search query string
1464
- * @param symbols - Required: Stock symbols to filter by
1465
- * @param options - Search options
1466
- */
1467
- searchConferenceCalls(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1468
- /**
1469
- * Search minutes transcripts (Conference calls, IR meetings)
1470
- * @param query - Search query string
1471
- * @param options - Search options
1472
- */
1473
- searchMinutes(query: string, options?: SearchOptions): Promise<Document[]>;
1474
- /**
1475
- * Search social media content
1476
- */
1477
- searchSocials(query: string, options?: SearchOptions): Promise<Document[]>;
1478
- /**
1479
- * Search webpage content
1480
- */
1481
- searchWebpages(query: string, options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1482
- /**
1483
- * @deprecated Use searchConferenceCalls instead
1484
- * Search earnings call transcripts
1485
- */
1486
- searchTranscripts(query: string, symbols: string[], options?: Omit<SearchOptions, 'symbols' | 'categories' | 'industries' | 'channelIds'>): Promise<Document[]>;
1487
1505
  }
1488
1506
 
1489
- export { APIError, type AgentConversation, type AgentMessage, AgentModule, AuthenticationError, type BacktestParams, type BacktestResult, type BatchOHLCVParams, type Calendar, type Channel, ChannelsModule, type ChatCompletionOptions, type ChatCompletionResponse, type ChatMode, ChatModule, type Chunk, type ChunkSearchOptions, type CompanyInfo, type CompanyOverview, type Concept, type ConceptDoc, type ConceptEvent, type ConceptFeed, type ConceptStock, ConceptsModule, type DocsListOptions, DocsModule, type Document, type DocumentInput, type EarningsEvent, type FactorComputeParams, type FactorMeta, type FinancialStatement, type FollowedCompany, type IPOEvent, type IPOStatus, type IndexConstituent, type IndexFund, type IndicatorComputeParams, type IndicatorData, type IndicatorMeta, type IndustryConstituent, KBModule, type KBSearchOptions, type Market, NotFoundError, type OHLCVData, type OHLCVParams, type PaginatedResponse, type Period, type PriceData, QuantModule, type Quote, RateLimitError, Reportify, type ReportifyConfig, ReportifyError, type ScreenParams, type ScreenedStock, type SearchOptions, type Shareholder, type ShareholderType, type StockInfo, type StockMarket, StockModule, TimelineModule, type TimelineOptions, type UploadDocRequest, UserModule };
1507
+ export { APIError, type AgentConversation, type AgentMessage, AgentModule, AuthenticationError, type BacktestParams, type BacktestResult, type BatchOHLCVParams, type Calendar, type Channel, ChannelsModule, type ChatCompletionOptions, type ChatCompletionResponse, type ChatMode, ChatModule, type Chunk, type ChunkSearchOptions, type CompanyInfo, type CompanyOverview, type Concept, type ConceptDoc, type ConceptEvent, type ConceptFeed, type ConceptStock, ConceptsModule, type DocsListOptions, DocsModule, type Document, type DocumentInput, type EarningsEvent, type EarningsSearchOptions, type FactorComputeParams, type FactorMeta, type FinancialStatement, type FollowedCompany, type IPOEvent, type IPOStatus, type IndexConstituent, type IndexFund, type IndicatorComputeParams, type IndicatorData, type IndicatorMeta, type IndustryConstituent, KBModule, type KBSearchOptions, type Market, NotFoundError, type OHLCVData, type OHLCVParams, type PaginatedResponse, type Period, type PriceData, QuantModule, type Quote, RateLimitError, Reportify, type ReportifyConfig, ReportifyError, type ScreenParams, type ScreenedStock, SearchModule, type SearchOptions, type Shareholder, type ShareholderType, type StockInfo, type StockMarket, StockModule, TimelineModule, type TimelineOptions, type UploadDocRequest, UserModule };
package/dist/index.js CHANGED
@@ -33,6 +33,7 @@ __export(index_exports, {
33
33
  RateLimitError: () => RateLimitError,
34
34
  Reportify: () => Reportify,
35
35
  ReportifyError: () => ReportifyError,
36
+ SearchModule: () => SearchModule,
36
37
  StockModule: () => StockModule,
37
38
  TimelineModule: () => TimelineModule,
38
39
  UserModule: () => UserModule
@@ -467,7 +468,7 @@ var DocsModule = class {
467
468
  /**
468
469
  * Query documents by symbols
469
470
  *
470
- * @param symbols - Required: Stock symbols
471
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
471
472
  * @param options - Filter options
472
473
  */
473
474
  async queryBySymbols(symbols, options = {}) {
@@ -1412,6 +1413,165 @@ var UserModule = class {
1412
1413
  }
1413
1414
  };
1414
1415
 
1416
+ // src/search.ts
1417
+ var SearchModule = class {
1418
+ constructor(client) {
1419
+ this.client = client;
1420
+ }
1421
+ /**
1422
+ * Search documents across all categories
1423
+ *
1424
+ * @param query - Search query string
1425
+ * @param options - Search options
1426
+ * @returns List of matching documents
1427
+ */
1428
+ async all(query, options = {}) {
1429
+ const body = {
1430
+ query,
1431
+ num: options.num || 10
1432
+ };
1433
+ if (options.categories) body.categories = options.categories;
1434
+ if (options.symbols) body.symbols = options.symbols;
1435
+ if (options.industries) body.industries = options.industries;
1436
+ if (options.channelIds) body.channel_ids = options.channelIds;
1437
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1438
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1439
+ const response = await this.client.post("/v2/search", body);
1440
+ return response.docs || [];
1441
+ }
1442
+ /**
1443
+ * Search news articles
1444
+ */
1445
+ async news(query, options = {}) {
1446
+ const body = {
1447
+ query,
1448
+ num: options.num || 10
1449
+ };
1450
+ if (options.symbols) body.symbols = options.symbols;
1451
+ if (options.channelIds) body.channel_ids = options.channelIds;
1452
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1453
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1454
+ const response = await this.client.post("/v2/search/news", body);
1455
+ return response.docs || [];
1456
+ }
1457
+ /**
1458
+ * Search research reports
1459
+ */
1460
+ async reports(query, options = {}) {
1461
+ const body = {
1462
+ query,
1463
+ num: options.num || 10
1464
+ };
1465
+ if (options.symbols) body.symbols = options.symbols;
1466
+ if (options.industries) body.industries = options.industries;
1467
+ if (options.channelIds) body.channel_ids = options.channelIds;
1468
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1469
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1470
+ const response = await this.client.post("/v2/search/reports", body);
1471
+ return response.docs || [];
1472
+ }
1473
+ /**
1474
+ * Search company filings
1475
+ *
1476
+ * @param query - Search query string
1477
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1478
+ * @param options - Search options
1479
+ */
1480
+ async filings(query, symbols, options = {}) {
1481
+ const body = {
1482
+ query,
1483
+ symbols,
1484
+ num: options.num || 10
1485
+ };
1486
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1487
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1488
+ const response = await this.client.post("/v2/search/filings", body);
1489
+ return response.docs || [];
1490
+ }
1491
+ /**
1492
+ * Search earnings call transcripts and slides
1493
+ *
1494
+ * @param query - Search query string
1495
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1496
+ * @param options - Search options including fiscal year/quarter filters
1497
+ */
1498
+ async conferenceCalls(query, symbols, options = {}) {
1499
+ const body = {
1500
+ query,
1501
+ symbols,
1502
+ num: options.num || 10
1503
+ };
1504
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1505
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1506
+ if (options.fiscalYear) body.fiscal_year = options.fiscalYear;
1507
+ if (options.fiscalQuarter) body.fiscal_quarter = options.fiscalQuarter;
1508
+ const response = await this.client.post("/v2/search/conference-calls", body);
1509
+ return response.docs || [];
1510
+ }
1511
+ /**
1512
+ * Search earnings financial reports
1513
+ *
1514
+ * @param query - Search query string
1515
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1516
+ * @param options - Search options including fiscal year/quarter filters
1517
+ */
1518
+ async earningsPack(query, symbols, options = {}) {
1519
+ const body = {
1520
+ query,
1521
+ symbols,
1522
+ num: options.num || 10
1523
+ };
1524
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1525
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1526
+ if (options.fiscalYear) body.fiscal_year = options.fiscalYear;
1527
+ if (options.fiscalQuarter) body.fiscal_quarter = options.fiscalQuarter;
1528
+ const response = await this.client.post("/v2/search/earnings-pack", body);
1529
+ return response.docs || [];
1530
+ }
1531
+ /**
1532
+ * Search conference calls and IR (Investor Relations) meetings
1533
+ */
1534
+ async minutes(query, options = {}) {
1535
+ const body = {
1536
+ query,
1537
+ num: options.num || 10
1538
+ };
1539
+ if (options.symbols) body.symbols = options.symbols;
1540
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1541
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1542
+ const response = await this.client.post("/v2/search/minutes", body);
1543
+ return response.docs || [];
1544
+ }
1545
+ /**
1546
+ * Search social media content
1547
+ */
1548
+ async socials(query, options = {}) {
1549
+ const body = {
1550
+ query,
1551
+ num: options.num || 10
1552
+ };
1553
+ if (options.symbols) body.symbols = options.symbols;
1554
+ if (options.channelIds) body.channel_ids = options.channelIds;
1555
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1556
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1557
+ const response = await this.client.post("/v2/search/socials", body);
1558
+ return response.docs || [];
1559
+ }
1560
+ /**
1561
+ * Search webpage content
1562
+ */
1563
+ async webpages(query, options = {}) {
1564
+ const body = {
1565
+ query,
1566
+ num: options.num || 10
1567
+ };
1568
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1569
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1570
+ const response = await this.client.post("/v2/search/webpages", body);
1571
+ return response.docs || [];
1572
+ }
1573
+ };
1574
+
1415
1575
  // src/types.ts
1416
1576
  var ReportifyError = class extends Error {
1417
1577
  statusCode;
@@ -1454,6 +1614,7 @@ var Reportify = class {
1454
1614
  baseUrl;
1455
1615
  timeout;
1456
1616
  // Sub-modules
1617
+ search;
1457
1618
  stock;
1458
1619
  docs;
1459
1620
  quant;
@@ -1471,6 +1632,7 @@ var Reportify = class {
1471
1632
  this.apiKey = config.apiKey;
1472
1633
  this.baseUrl = (config.baseUrl || DEFAULT_BASE_URL).replace(/\/$/, "");
1473
1634
  this.timeout = config.timeout || DEFAULT_TIMEOUT;
1635
+ this.search = new SearchModule(this);
1474
1636
  this.stock = new StockModule(this);
1475
1637
  this.docs = new DocsModule(this);
1476
1638
  this.quant = new QuantModule(this);
@@ -1502,7 +1664,7 @@ var Reportify = class {
1502
1664
  headers: {
1503
1665
  Authorization: `Bearer ${this.apiKey}`,
1504
1666
  "Content-Type": "application/json",
1505
- "User-Agent": "reportify-sdk-js/0.2.8"
1667
+ "User-Agent": "reportify-sdk-js/0.3.0"
1506
1668
  },
1507
1669
  body: options.body ? JSON.stringify(options.body) : void 0,
1508
1670
  signal: controller.signal
@@ -1563,7 +1725,7 @@ var Reportify = class {
1563
1725
  headers: {
1564
1726
  Authorization: `Bearer ${this.apiKey}`,
1565
1727
  "Content-Type": "application/json",
1566
- "User-Agent": "reportify-sdk-typescript/0.2.9"
1728
+ "User-Agent": "reportify-sdk-typescript/0.3.0"
1567
1729
  }
1568
1730
  });
1569
1731
  if (!response.ok) {
@@ -1579,169 +1741,6 @@ var Reportify = class {
1579
1741
  }
1580
1742
  return response.arrayBuffer();
1581
1743
  }
1582
- // ===========================================================================
1583
- // Search Methods
1584
- // ===========================================================================
1585
- /**
1586
- * Search documents across all categories
1587
- *
1588
- * @param query - Search query string
1589
- * @param options - Search options
1590
- * @returns List of matching documents
1591
- *
1592
- * @example
1593
- * ```typescript
1594
- * const docs = await client.search('Tesla earnings', { num: 10 });
1595
- * docs.forEach(doc => console.log(doc.title));
1596
- * ```
1597
- */
1598
- async search(query, options = {}) {
1599
- const body = {
1600
- query,
1601
- num: options.num || 10
1602
- };
1603
- if (options.categories) body.categories = options.categories;
1604
- if (options.symbols) body.symbols = options.symbols;
1605
- if (options.industries) body.industries = options.industries;
1606
- if (options.channelIds) body.channel_ids = options.channelIds;
1607
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1608
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1609
- const response = await this.post("/v2/search", body);
1610
- return response.docs || [];
1611
- }
1612
- /**
1613
- * Search news articles
1614
- */
1615
- async searchNews(query, options = {}) {
1616
- const body = {
1617
- query,
1618
- num: options.num || 10
1619
- };
1620
- if (options.symbols) body.symbols = options.symbols;
1621
- if (options.channelIds) body.channel_ids = options.channelIds;
1622
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1623
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1624
- const response = await this.post("/v2/search/news", body);
1625
- return response.docs || [];
1626
- }
1627
- /**
1628
- * Search research reports
1629
- */
1630
- async searchReports(query, options = {}) {
1631
- const body = {
1632
- query,
1633
- num: options.num || 10
1634
- };
1635
- if (options.symbols) body.symbols = options.symbols;
1636
- if (options.industries) body.industries = options.industries;
1637
- if (options.channelIds) body.channel_ids = options.channelIds;
1638
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1639
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1640
- const response = await this.post("/v2/search/reports", body);
1641
- return response.docs || [];
1642
- }
1643
- /**
1644
- * Search company filings
1645
- * @param query - Search query string
1646
- * @param symbols - Required: Stock symbols to filter by
1647
- * @param options - Search options
1648
- */
1649
- async searchFilings(query, symbols, options = {}) {
1650
- const body = {
1651
- query,
1652
- symbols,
1653
- num: options.num || 10
1654
- };
1655
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1656
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1657
- const response = await this.post("/v2/search/filings", body);
1658
- return response.docs || [];
1659
- }
1660
- /**
1661
- * Search earnings pack documents (Financial reports, Earnings call transcripts, etc.)
1662
- * @param query - Search query string
1663
- * @param symbols - Required: Stock symbols to filter by
1664
- * @param options - Search options
1665
- */
1666
- async searchEarningsPack(query, symbols, options = {}) {
1667
- const body = {
1668
- query,
1669
- symbols,
1670
- num: options.num || 10
1671
- };
1672
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1673
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1674
- const response = await this.post("/v2/search/earnings-pack", body);
1675
- return response.docs || [];
1676
- }
1677
- /**
1678
- * Search conference call transcripts
1679
- * @param query - Search query string
1680
- * @param symbols - Required: Stock symbols to filter by
1681
- * @param options - Search options
1682
- */
1683
- async searchConferenceCalls(query, symbols, options = {}) {
1684
- const body = {
1685
- query,
1686
- symbols,
1687
- num: options.num || 10
1688
- };
1689
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1690
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1691
- const response = await this.post("/v2/search/conference-calls", body);
1692
- return response.docs || [];
1693
- }
1694
- /**
1695
- * Search minutes transcripts (Conference calls, IR meetings)
1696
- * @param query - Search query string
1697
- * @param options - Search options
1698
- */
1699
- async searchMinutes(query, options = {}) {
1700
- const body = {
1701
- query,
1702
- num: options.num || 10
1703
- };
1704
- if (options.symbols) body.symbols = options.symbols;
1705
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1706
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1707
- const response = await this.post("/v2/search/minutes", body);
1708
- return response.docs || [];
1709
- }
1710
- /**
1711
- * Search social media content
1712
- */
1713
- async searchSocials(query, options = {}) {
1714
- const body = {
1715
- query,
1716
- num: options.num || 10
1717
- };
1718
- if (options.symbols) body.symbols = options.symbols;
1719
- if (options.channelIds) body.channel_ids = options.channelIds;
1720
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1721
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1722
- const response = await this.post("/v2/search/socials", body);
1723
- return response.docs || [];
1724
- }
1725
- /**
1726
- * Search webpage content
1727
- */
1728
- async searchWebpages(query, options = {}) {
1729
- const body = {
1730
- query,
1731
- num: options.num || 10
1732
- };
1733
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1734
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1735
- const response = await this.post("/v2/search/webpages", body);
1736
- return response.docs || [];
1737
- }
1738
- /**
1739
- * @deprecated Use searchConferenceCalls instead
1740
- * Search earnings call transcripts
1741
- */
1742
- async searchTranscripts(query, symbols, options = {}) {
1743
- return this.searchConferenceCalls(query, symbols, options);
1744
- }
1745
1744
  };
1746
1745
  // Annotate the CommonJS export names for ESM import in node:
1747
1746
  0 && (module.exports = {
@@ -1758,6 +1757,7 @@ var Reportify = class {
1758
1757
  RateLimitError,
1759
1758
  Reportify,
1760
1759
  ReportifyError,
1760
+ SearchModule,
1761
1761
  StockModule,
1762
1762
  TimelineModule,
1763
1763
  UserModule
package/dist/index.mjs CHANGED
@@ -426,7 +426,7 @@ var DocsModule = class {
426
426
  /**
427
427
  * Query documents by symbols
428
428
  *
429
- * @param symbols - Required: Stock symbols
429
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
430
430
  * @param options - Filter options
431
431
  */
432
432
  async queryBySymbols(symbols, options = {}) {
@@ -1371,6 +1371,165 @@ var UserModule = class {
1371
1371
  }
1372
1372
  };
1373
1373
 
1374
+ // src/search.ts
1375
+ var SearchModule = class {
1376
+ constructor(client) {
1377
+ this.client = client;
1378
+ }
1379
+ /**
1380
+ * Search documents across all categories
1381
+ *
1382
+ * @param query - Search query string
1383
+ * @param options - Search options
1384
+ * @returns List of matching documents
1385
+ */
1386
+ async all(query, options = {}) {
1387
+ const body = {
1388
+ query,
1389
+ num: options.num || 10
1390
+ };
1391
+ if (options.categories) body.categories = options.categories;
1392
+ if (options.symbols) body.symbols = options.symbols;
1393
+ if (options.industries) body.industries = options.industries;
1394
+ if (options.channelIds) body.channel_ids = options.channelIds;
1395
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1396
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1397
+ const response = await this.client.post("/v2/search", body);
1398
+ return response.docs || [];
1399
+ }
1400
+ /**
1401
+ * Search news articles
1402
+ */
1403
+ async news(query, options = {}) {
1404
+ const body = {
1405
+ query,
1406
+ num: options.num || 10
1407
+ };
1408
+ if (options.symbols) body.symbols = options.symbols;
1409
+ if (options.channelIds) body.channel_ids = options.channelIds;
1410
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1411
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1412
+ const response = await this.client.post("/v2/search/news", body);
1413
+ return response.docs || [];
1414
+ }
1415
+ /**
1416
+ * Search research reports
1417
+ */
1418
+ async reports(query, options = {}) {
1419
+ const body = {
1420
+ query,
1421
+ num: options.num || 10
1422
+ };
1423
+ if (options.symbols) body.symbols = options.symbols;
1424
+ if (options.industries) body.industries = options.industries;
1425
+ if (options.channelIds) body.channel_ids = options.channelIds;
1426
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1427
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1428
+ const response = await this.client.post("/v2/search/reports", body);
1429
+ return response.docs || [];
1430
+ }
1431
+ /**
1432
+ * Search company filings
1433
+ *
1434
+ * @param query - Search query string
1435
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1436
+ * @param options - Search options
1437
+ */
1438
+ async filings(query, symbols, options = {}) {
1439
+ const body = {
1440
+ query,
1441
+ symbols,
1442
+ num: options.num || 10
1443
+ };
1444
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1445
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1446
+ const response = await this.client.post("/v2/search/filings", body);
1447
+ return response.docs || [];
1448
+ }
1449
+ /**
1450
+ * Search earnings call transcripts and slides
1451
+ *
1452
+ * @param query - Search query string
1453
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1454
+ * @param options - Search options including fiscal year/quarter filters
1455
+ */
1456
+ async conferenceCalls(query, symbols, options = {}) {
1457
+ const body = {
1458
+ query,
1459
+ symbols,
1460
+ num: options.num || 10
1461
+ };
1462
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1463
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1464
+ if (options.fiscalYear) body.fiscal_year = options.fiscalYear;
1465
+ if (options.fiscalQuarter) body.fiscal_quarter = options.fiscalQuarter;
1466
+ const response = await this.client.post("/v2/search/conference-calls", body);
1467
+ return response.docs || [];
1468
+ }
1469
+ /**
1470
+ * Search earnings financial reports
1471
+ *
1472
+ * @param query - Search query string
1473
+ * @param symbols - Stock symbols in market:ticker format (required, e.g., US:AAPL, HK:00700, SH:600519, SZ:000001)
1474
+ * @param options - Search options including fiscal year/quarter filters
1475
+ */
1476
+ async earningsPack(query, symbols, options = {}) {
1477
+ const body = {
1478
+ query,
1479
+ symbols,
1480
+ num: options.num || 10
1481
+ };
1482
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1483
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1484
+ if (options.fiscalYear) body.fiscal_year = options.fiscalYear;
1485
+ if (options.fiscalQuarter) body.fiscal_quarter = options.fiscalQuarter;
1486
+ const response = await this.client.post("/v2/search/earnings-pack", body);
1487
+ return response.docs || [];
1488
+ }
1489
+ /**
1490
+ * Search conference calls and IR (Investor Relations) meetings
1491
+ */
1492
+ async minutes(query, options = {}) {
1493
+ const body = {
1494
+ query,
1495
+ num: options.num || 10
1496
+ };
1497
+ if (options.symbols) body.symbols = options.symbols;
1498
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1499
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1500
+ const response = await this.client.post("/v2/search/minutes", body);
1501
+ return response.docs || [];
1502
+ }
1503
+ /**
1504
+ * Search social media content
1505
+ */
1506
+ async socials(query, options = {}) {
1507
+ const body = {
1508
+ query,
1509
+ num: options.num || 10
1510
+ };
1511
+ if (options.symbols) body.symbols = options.symbols;
1512
+ if (options.channelIds) body.channel_ids = options.channelIds;
1513
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1514
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1515
+ const response = await this.client.post("/v2/search/socials", body);
1516
+ return response.docs || [];
1517
+ }
1518
+ /**
1519
+ * Search webpage content
1520
+ */
1521
+ async webpages(query, options = {}) {
1522
+ const body = {
1523
+ query,
1524
+ num: options.num || 10
1525
+ };
1526
+ if (options.startDatetime) body.start_datetime = options.startDatetime;
1527
+ if (options.endDatetime) body.end_datetime = options.endDatetime;
1528
+ const response = await this.client.post("/v2/search/webpages", body);
1529
+ return response.docs || [];
1530
+ }
1531
+ };
1532
+
1374
1533
  // src/types.ts
1375
1534
  var ReportifyError = class extends Error {
1376
1535
  statusCode;
@@ -1413,6 +1572,7 @@ var Reportify = class {
1413
1572
  baseUrl;
1414
1573
  timeout;
1415
1574
  // Sub-modules
1575
+ search;
1416
1576
  stock;
1417
1577
  docs;
1418
1578
  quant;
@@ -1430,6 +1590,7 @@ var Reportify = class {
1430
1590
  this.apiKey = config.apiKey;
1431
1591
  this.baseUrl = (config.baseUrl || DEFAULT_BASE_URL).replace(/\/$/, "");
1432
1592
  this.timeout = config.timeout || DEFAULT_TIMEOUT;
1593
+ this.search = new SearchModule(this);
1433
1594
  this.stock = new StockModule(this);
1434
1595
  this.docs = new DocsModule(this);
1435
1596
  this.quant = new QuantModule(this);
@@ -1461,7 +1622,7 @@ var Reportify = class {
1461
1622
  headers: {
1462
1623
  Authorization: `Bearer ${this.apiKey}`,
1463
1624
  "Content-Type": "application/json",
1464
- "User-Agent": "reportify-sdk-js/0.2.8"
1625
+ "User-Agent": "reportify-sdk-js/0.3.0"
1465
1626
  },
1466
1627
  body: options.body ? JSON.stringify(options.body) : void 0,
1467
1628
  signal: controller.signal
@@ -1522,7 +1683,7 @@ var Reportify = class {
1522
1683
  headers: {
1523
1684
  Authorization: `Bearer ${this.apiKey}`,
1524
1685
  "Content-Type": "application/json",
1525
- "User-Agent": "reportify-sdk-typescript/0.2.9"
1686
+ "User-Agent": "reportify-sdk-typescript/0.3.0"
1526
1687
  }
1527
1688
  });
1528
1689
  if (!response.ok) {
@@ -1538,169 +1699,6 @@ var Reportify = class {
1538
1699
  }
1539
1700
  return response.arrayBuffer();
1540
1701
  }
1541
- // ===========================================================================
1542
- // Search Methods
1543
- // ===========================================================================
1544
- /**
1545
- * Search documents across all categories
1546
- *
1547
- * @param query - Search query string
1548
- * @param options - Search options
1549
- * @returns List of matching documents
1550
- *
1551
- * @example
1552
- * ```typescript
1553
- * const docs = await client.search('Tesla earnings', { num: 10 });
1554
- * docs.forEach(doc => console.log(doc.title));
1555
- * ```
1556
- */
1557
- async search(query, options = {}) {
1558
- const body = {
1559
- query,
1560
- num: options.num || 10
1561
- };
1562
- if (options.categories) body.categories = options.categories;
1563
- if (options.symbols) body.symbols = options.symbols;
1564
- if (options.industries) body.industries = options.industries;
1565
- if (options.channelIds) body.channel_ids = options.channelIds;
1566
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1567
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1568
- const response = await this.post("/v2/search", body);
1569
- return response.docs || [];
1570
- }
1571
- /**
1572
- * Search news articles
1573
- */
1574
- async searchNews(query, options = {}) {
1575
- const body = {
1576
- query,
1577
- num: options.num || 10
1578
- };
1579
- if (options.symbols) body.symbols = options.symbols;
1580
- if (options.channelIds) body.channel_ids = options.channelIds;
1581
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1582
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1583
- const response = await this.post("/v2/search/news", body);
1584
- return response.docs || [];
1585
- }
1586
- /**
1587
- * Search research reports
1588
- */
1589
- async searchReports(query, options = {}) {
1590
- const body = {
1591
- query,
1592
- num: options.num || 10
1593
- };
1594
- if (options.symbols) body.symbols = options.symbols;
1595
- if (options.industries) body.industries = options.industries;
1596
- if (options.channelIds) body.channel_ids = options.channelIds;
1597
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1598
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1599
- const response = await this.post("/v2/search/reports", body);
1600
- return response.docs || [];
1601
- }
1602
- /**
1603
- * Search company filings
1604
- * @param query - Search query string
1605
- * @param symbols - Required: Stock symbols to filter by
1606
- * @param options - Search options
1607
- */
1608
- async searchFilings(query, symbols, options = {}) {
1609
- const body = {
1610
- query,
1611
- symbols,
1612
- num: options.num || 10
1613
- };
1614
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1615
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1616
- const response = await this.post("/v2/search/filings", body);
1617
- return response.docs || [];
1618
- }
1619
- /**
1620
- * Search earnings pack documents (Financial reports, Earnings call transcripts, etc.)
1621
- * @param query - Search query string
1622
- * @param symbols - Required: Stock symbols to filter by
1623
- * @param options - Search options
1624
- */
1625
- async searchEarningsPack(query, symbols, options = {}) {
1626
- const body = {
1627
- query,
1628
- symbols,
1629
- num: options.num || 10
1630
- };
1631
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1632
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1633
- const response = await this.post("/v2/search/earnings-pack", body);
1634
- return response.docs || [];
1635
- }
1636
- /**
1637
- * Search conference call transcripts
1638
- * @param query - Search query string
1639
- * @param symbols - Required: Stock symbols to filter by
1640
- * @param options - Search options
1641
- */
1642
- async searchConferenceCalls(query, symbols, options = {}) {
1643
- const body = {
1644
- query,
1645
- symbols,
1646
- num: options.num || 10
1647
- };
1648
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1649
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1650
- const response = await this.post("/v2/search/conference-calls", body);
1651
- return response.docs || [];
1652
- }
1653
- /**
1654
- * Search minutes transcripts (Conference calls, IR meetings)
1655
- * @param query - Search query string
1656
- * @param options - Search options
1657
- */
1658
- async searchMinutes(query, options = {}) {
1659
- const body = {
1660
- query,
1661
- num: options.num || 10
1662
- };
1663
- if (options.symbols) body.symbols = options.symbols;
1664
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1665
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1666
- const response = await this.post("/v2/search/minutes", body);
1667
- return response.docs || [];
1668
- }
1669
- /**
1670
- * Search social media content
1671
- */
1672
- async searchSocials(query, options = {}) {
1673
- const body = {
1674
- query,
1675
- num: options.num || 10
1676
- };
1677
- if (options.symbols) body.symbols = options.symbols;
1678
- if (options.channelIds) body.channel_ids = options.channelIds;
1679
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1680
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1681
- const response = await this.post("/v2/search/socials", body);
1682
- return response.docs || [];
1683
- }
1684
- /**
1685
- * Search webpage content
1686
- */
1687
- async searchWebpages(query, options = {}) {
1688
- const body = {
1689
- query,
1690
- num: options.num || 10
1691
- };
1692
- if (options.startDatetime) body.start_datetime = options.startDatetime;
1693
- if (options.endDatetime) body.end_datetime = options.endDatetime;
1694
- const response = await this.post("/v2/search/webpages", body);
1695
- return response.docs || [];
1696
- }
1697
- /**
1698
- * @deprecated Use searchConferenceCalls instead
1699
- * Search earnings call transcripts
1700
- */
1701
- async searchTranscripts(query, symbols, options = {}) {
1702
- return this.searchConferenceCalls(query, symbols, options);
1703
- }
1704
1702
  };
1705
1703
  export {
1706
1704
  APIError,
@@ -1716,6 +1714,7 @@ export {
1716
1714
  RateLimitError,
1717
1715
  Reportify,
1718
1716
  ReportifyError,
1717
+ SearchModule,
1719
1718
  StockModule,
1720
1719
  TimelineModule,
1721
1720
  UserModule
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reportify-sdk",
3
- "version": "0.2.9",
3
+ "version": "0.3.0",
4
4
  "description": "TypeScript SDK for Reportify API - Financial data and document search",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",