import axios from 'axios'; import { getApiUrl, getAdminApiKey } from '../config'; import { logger } from '../logger'; const AI_API_BASE_URL = getApiUrl().replace(/\/$/, ""); const apiKey = getAdminApiKey(); /** * Centralized Axios client for internal API communication (Edtech API). * Standardizes headers, timeouts, and error logging. */ export const apiClient = axios.create({ baseURL: AI_API_BASE_URL, timeout: 30000, // 30s timeout for AI operations headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${apiKey}` } }); // Response interceptor for consistent error logging apiClient.interceptors.response.use( (response) => response, (error) => { const url = error.config?.url; const status = error.response?.status; const message = error.response?.data?.error || error.message; logger.error(`[API_CLIENT] Error calling ${url} (Status: ${status}): ${message}`); return Promise.reject(error); } );