Quick Start Examples
TypeScript Examples
Quick start examples for integrating with the API using TypeScript
This page provides practical Quick start examples for integrating with the API using TypeScript.
Basic Client
interface IPOResponse {
meta: {
count: number;
countOnPage: number;
totalPages: number;
page: number;
limit: number;
};
ipos: IPO[];
}
interface IPO {
id: string;
name: string;
symbol: string;
slug: string;
type?: string;
startDate?: string;
endDate?: string;
listingDate?: string;
priceRange?: string;
listingGain?: string;
minQty?: number;
minAmount?: number;
issueSize?: string;
status?: string;
logo?: string;
prospectusUrl?: string;
schedule?: ScheduleItem[];
about?: string;
strengths?: string[];
risks?: string[];
mediaCoverageLinks?: string[];
nseInfoUrl?: string;
infoUrl?: string;
}
interface ScheduleItem {
event: string;
date: string;
}
interface IPODetailResponse {
ipo: IPO;
}
class IPOAlertsClient {
private apiKey: string;
private baseURL: string;
constructor(apiKey: string) {
this.apiKey = apiKey;
this.baseURL = 'https://api.ipoalerts.in';
}
private async makeRequest<T>(endpoint: string, options: RequestInit = {}): Promise<T> {
const response = await fetch(`${this.baseURL}${endpoint}`, {
...options,
headers: {
'x-api-key': this.apiKey,
'Content-Type': 'application/json',
...options.headers,
},
});
if (!response.ok) {
throw new Error(`HTTP error: ${response.status}`);
}
return response.json();
}
async getIPOs(
status?: string,
type?: string,
page: number = 1,
limit: number = 10
): Promise<IPOResponse> {
const params = new URLSearchParams();
if (status) params.append('status', status);
if (type) params.append('type', type);
params.append('page', page.toString());
params.append('limit', limit.toString());
return this.makeRequest<IPOResponse>(`/ipos?${params}`);
}
async getIPO(identifier: string): Promise<IPO> {
const response = await this.makeRequest<IPODetailResponse>(`/ipos/${identifier}`);
return response.ipo;
}
}
// Usage
async function main() {
const client = new IPOAlertsClient('YOUR_API_KEY');
try {
// Get upcoming IPOs
const ipos = await client.getIPOs('upcoming', 'EQ', 1, 10);
console.log(`Found ${ipos.meta.count} upcoming equity IPOs`);
ipos.ipos.forEach(ipo => {
console.log(`${ipo.name} (${ipo.symbol}) - ${ipo.priceRange}`);
});
// Get specific IPO
const ipoDetails = await client.getIPO('example-company-limited');
console.log(`IPO Details: ${ipoDetails.name}`);
} catch (error) {
console.error('Error:', error);
}
}
main();
React Hook with TypeScript
import { useState, useEffect, useCallback } from 'react';
interface UseIPOAlertsReturn {
loading: boolean;
error: string | null;
data: IPOResponse | null;
getIPOs: (filters?: IPOFilters) => Promise<IPOResponse>;
getIPO: (identifier: string) => Promise<IPO>;
}
interface IPOFilters {
status?: string;
type?: string;
page?: number;
limit?: number;
}
const useIPOAlerts = (apiKey: string): UseIPOAlertsReturn => {
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
const [data, setData] = useState<IPOResponse | null>(null);
const makeRequest = useCallback(async <T>(endpoint: string, options: RequestInit = {}): Promise<T> => {
setLoading(true);
setError(null);
try {
const response = await fetch(`https://api.ipoalerts.in${endpoint}`, {
...options,
headers: {
'x-api-key': apiKey,
'Content-Type': 'application/json',
...options.headers
}
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const result = await response.json();
setData(result);
return result;
} catch (err) {
const errorMessage = err instanceof Error ? err.message : 'Unknown error';
setError(errorMessage);
throw err;
} finally {
setLoading(false);
}
}, [apiKey]);
const getIPOs = useCallback(async (filters: IPOFilters = {}): Promise<IPOResponse> => {
const params = new URLSearchParams();
if (filters.status) params.append('status', filters.status);
if (filters.type) params.append('type', filters.type);
if (filters.page) params.append('page', filters.page.toString());
if (filters.limit) params.append('limit', filters.limit.toString());
return makeRequest<IPOResponse>(`/ipos?${params}`);
}, [makeRequest]);
const getIPO = useCallback(async (identifier: string): Promise<IPO> => {
const response = await makeRequest<IPODetailResponse>(`/ipos/${identifier}`);
return response.ipo;
}, [makeRequest]);
return {
loading,
error,
data,
getIPOs,
getIPO
};
};
export default useIPOAlerts;