TypeScript SDK for Reportify API - Financial data and document search
npm install reportify-sdkTypeScript SDK for Reportify API - Financial data and document search.
``bash`
npm install reportify-sdkor
yarn add reportify-sdkor
pnpm add reportify-sdk
`typescript
import { Reportify } from 'reportify-sdk';
// Initialize client
const client = new Reportify({ apiKey: 'your-api-key' });
// Search documents
const docs = await client.search('Tesla earnings', { num: 10 });
docs.forEach(doc => console.log(doc.title));
`
`typescript
// General search across all categories
const docs = await client.search('revenue growth', { num: 10 });
// Search specific document types
const news = await client.searchNews('Apple iPhone', { num: 10 });
const reports = await client.searchReports('semiconductor analysis', { num: 10 });
const filings = await client.searchFilings('10-K annual report', { symbols: ['US:AAPL'] });
const transcripts = await client.searchTranscripts('guidance', { symbols: ['US:TSLA'] });
`
`typescript
// Financial statements
const income = await client.stock.incomeStatement('AAPL', { period: 'quarterly' });
const balance = await client.stock.balanceSheet('AAPL');
const cashflow = await client.stock.cashflowStatement('AAPL');
// Price data
const prices = await client.stock.prices('AAPL', { startDate: '2024-01-01' });
// Real-time quote
const quote = await client.stock.quote('AAPL');
// Company info (symbols without market prefix)
const overview = await client.stock.overview({ symbols: 'AAPL' });
const shareholders = await client.stock.shareholders('AAPL');
// Earnings calendar
const earnings = await client.stock.earningsCalendar({ market: 'us', startDate: '2024-01-01', endDate: '2024-01-31' });
`
`typescript`
// Get timeline for followed entities
const companies = await client.timeline.companies({ num: 20 });
const topics = await client.timeline.topics({ num: 20 });
const institutes = await client.timeline.institutes({ num: 20 });
const publicMedia = await client.timeline.publicMedia({ num: 20 });
const socialMedia = await client.timeline.socialMedia({ num: 20 });
`typescript`
// Search user's uploaded documents
const chunks = await client.kb.search('quarterly revenue', { folderIds: ['folder_id'] });
`typescript
// Get document content
const doc = await client.docs.get('doc_id');
const summary = await client.docs.summary('doc_id');
// List and search documents
const docs = await client.docs.list({ symbols: ['US:AAPL'], pageSize: 10 });
const chunks = await client.docs.searchChunks('revenue breakdown', { num: 5 });
// Upload documents
const result = await client.docs.uploadDocs([
{ url: 'https://example.com/report.pdf', name: 'Annual Report' }
]);
`
`typescript
// Compute technical indicators
const rsi = await client.quant.computeIndicators({
symbols: ['000001'],
formula: 'RSI(14)'
});
const macd = await client.quant.computeIndicators({
symbols: ['000001'],
formula: 'MACD()'
});
// Screen stocks by formula
const oversold = await client.quant.screen({ formula: 'RSI(14) < 30' });
const goldenCross = await client.quant.screen({ formula: 'CROSS(MA(CLOSE, 5), MA(CLOSE, 20))' });
// Get OHLCV data
const ohlcv = await client.quant.ohlcv({ symbol: '000001', startDate: '2024-01-01' });
const ohlcvBatch = await client.quant.ohlcvBatch({ symbols: ['000001', '600519'] });
// Backtest strategy
const result = await client.quant.backtest({
startDate: '2023-01-01',
endDate: '2024-01-01',
symbol: '000001',
entryFormula: 'CROSS(MA(CLOSE, 5), MA(CLOSE, 20))',
exitFormula: 'CROSSDOWN(MA(CLOSE, 5), MA(CLOSE, 20))'
});
console.log(Total Return: ${(result.total_return_pct * 100).toFixed(2)}%);`
`typescript
// Get latest concepts
const concepts = await client.concepts.latest();
concepts.forEach(c => console.log(c.concept_name));
// Get today's concept feeds
const feeds = await client.concepts.today();
`
`typescript
// Search channels
const result = await client.channels.search('Goldman Sachs');
// Get followed channels
const followings = await client.channels.getFollowings();
// Follow/unfollow a channel
await client.channels.follow('channel_id');
await client.channels.unfollow('channel_id');
`
`typescript`
// Chat completion based on documents
const response = await client.chat.completion(
'What are Tesla revenue projections?',
{
symbols: ['US:TSLA'],
mode: 'comprehensive' // concise, comprehensive, deepresearch
}
);
console.log(response.message);
`typescript
// Create agent conversation
const conv = await client.agent.createConversation(11887655289749510);
// Chat with agent
const response = await client.agent.chat(
conv.id,
'Analyze NVIDIA latest earnings'
);
// Get agent-generated file
const fileContent = await client.agent.getFile('file_id');
// Save in Node.js: fs.writeFileSync('output.xlsx', Buffer.from(fileContent));
`
`typescript${c.symbol}: ${c.name}
// Get followed companies
const companies = await client.user.followedCompanies();
companies.forEach(c => console.log());`
`typescript
import {
Reportify,
AuthenticationError,
RateLimitError,
NotFoundError,
APIError,
} from 'reportify-sdk';
try {
const docs = await client.search('Tesla');
} catch (error) {
if (error instanceof AuthenticationError) {
console.log('Invalid API key');
} else if (error instanceof RateLimitError) {
console.log('Rate limit exceeded, please wait');
} else if (error instanceof NotFoundError) {
console.log('Resource not found');
} else if (error instanceof APIError) {
console.log(API error: ${error.message});`
}
}
`typescript`
const client = new Reportify({
apiKey: 'your-api-key',
baseUrl: 'https://api.reportify.cn', // Optional: custom API URL
timeout: 30000, // Optional: request timeout in milliseconds
});
This SDK is written in TypeScript and provides full type definitions out of the box.
`typescript``
import type {
Document,
CompanyOverview,
FinancialStatement,
PriceData,
Quote,
} from 'reportify-sdk';
MIT License - see LICENSE for details.