UNPKG

@mvkproject/nexus

Version:

Free AI SDK with API key (500 free daily requests). Access 25+ LLM models (GPT-4, Gemini, Llama, DeepSeek), generate images with 14+ models (Flux, Stable Diffusion), and integrate Akinator game - all completely free.

74 lines (65 loc) 2 kB
import axios from 'axios'; export class APIClient { constructor(apiKey, baseURL = 'https://nexus.drexus.xyz') { if (!apiKey) { throw new Error('API key is required. Get your free API key at https://nexus.drexus.xyz'); } this.apiKey = apiKey; this.baseURL = baseURL; this.client = axios.create({ baseURL: this.baseURL, headers: { 'Authorization': `Bearer ${this.apiKey}`, 'Content-Type': 'application/json' } }); } async request(method, endpoint, data = null, config = {}) { try { const response = await this.client.request({ method, url: endpoint, data, ...config }); return response.data; } catch (error) { this.handleError(error); } } handleError(error) { if (error.response) { const { status, data } = error.response; const message = data?.message || data?.error || 'Unknown error occurred'; switch (status) { case 400: throw new Error(`Bad Request: ${message}`); case 401: throw new Error('Unauthorized: Invalid or missing API key'); case 403: throw new Error('Forbidden: Access denied'); case 404: throw new Error(`Not Found: ${message}`); case 429: throw new Error('Too Many Requests: Daily limit exceeded'); case 500: throw new Error(`Server Error: ${message}`); default: throw new Error(`API Error (${status}): ${message}`); } } else if (error.request) { throw new Error('Network Error: Unable to reach the Nexus API'); } else { throw new Error(`Request Error: ${error.message}`); } } get(endpoint, config) { return this.request('GET', endpoint, null, config); } post(endpoint, data, config) { return this.request('POST', endpoint, data, config); } delete(endpoint, config) { return this.request('DELETE', endpoint, null, config); } }