Skip to main content
Glama
zk-armor
by zk-armor
client.ts2.59 kB
import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'; export class JinaAIAPIClient { private readonly client: AxiosInstance; private readonly apiKey: string; private readonly baseUrl: string = 'https://api.jina.ai/v1'; constructor(apiKey: string) { if (!apiKey) { throw new Error('Jina AI API key is required.'); } this.apiKey = apiKey; this.client = axios.create({ headers: { 'Authorization': `Bearer ${this.apiKey}`, 'Content-Type': 'application/json', 'Accept-Encoding': 'identity', // Required to avoid compressed responses 'Accept': 'application/json', } }); } private async post<T>(url: string, data: unknown, config?: AxiosRequestConfig): Promise<T> { try { const response = await this.client.post<T>(url, data, config); return response.data; } catch (error) { if (axios.isAxiosError(error) && error.response) { console.error('Jina AI API Error:', JSON.stringify(error.response.data, null, 2)); throw new Error(`Jina AI API Error: ${error.response.status} ${error.response.statusText}`); } console.error('Unexpected Jina AI API Error:', error); throw new Error('An unexpected error occurred with the Jina AI API.'); } } public embeddings(data: Record<string, any>) { const url = `${this.baseUrl}/embeddings`; return this.post(url, data); } public rerank(data: Record<string, any>) { const url = `${this.baseUrl}/rerank`; return this.post(url, data); } public classify(data: Record<string, any>) { const url = `${this.baseUrl}/classify`; return this.post(url, data); } public deepsearch(data: Record<string, any>) { const url = 'https://deepsearch.jina.ai/v1/chat/completions'; return this.post(url, data); } public read(data: Record<string, any>, headers?: Record<string, string>) { const readerUrl = 'https://r.jina.ai/'; return this.post(readerUrl, { url: data.url }, { headers }); } public search(data: Record<string, any>, headers?: Record<string, string>) { const searchUrl = 'https://s.jina.ai/'; return this.post(searchUrl, { q: data.q }, { headers }); } public segment(data: Record<string, any>) { const segmentUrl = 'https://segment.jina.ai/'; return this.post(segmentUrl, data); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zk-armor/mcp-jina-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server