@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
JavaScript
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);
}
}