Spaces:
Running
Running
| # API Documentation | |
| ## Base URL | |
| - **Local:** `http://localhost:7860` | |
| - **Docker:** `http://localhost:7860` | |
| - **Hugging Face Spaces:** `https://neerajcodz-aibatterylifecycle.hf.space` | |
| ## Interactive Docs | |
| - **Swagger UI:** `/docs` | |
| - **ReDoc:** `/redoc` | |
| - **Gradio UI:** `/gradio` | |
| ## API Versioning (v3.0.0) | |
| The API supports three model generations served in parallel, with dynamic on-demand loading: | |
| | Prefix | Models | Features | Default Model | Status | | |
| |--------|--------|:--------:|---------------|--------| | |
| | `/api/v1/*` | v1 classical (12 models) | 12 | Random Forest | On-demand | | |
| | `/api/v2/*` | v2 classical + deep (20+ models) | 12 | ExtraTrees | On-demand | | |
| | `/api/v3/*` | v3 optimized + ensemble (18 models) | 18 | XGBoost | **Loaded at startup** | | |
| | `/api/*` | Default (v3) | 18 | XGBoost | Same as v3 | | |
| ### Startup Behavior | |
| - Only **v3** models are loaded at startup to minimize memory and boot time. | |
| - v1 and v2 models can be loaded on-demand via `POST /api/versions/{v}/load`. | |
| - Each version's metadata is read from `artifacts/{version}/models.json`. | |
| ### Version Management Endpoints | |
| ```http | |
| GET /api/versions | |
| ``` | |
| Returns all versions with `on_disk`, `loaded`, `model_count`, `catalog_count`, `description`, `features`, `champion`, and `status`. | |
| ```http | |
| POST /api/versions/{version}/load | |
| ``` | |
| Downloads (if needed) and loads a version's models into memory. Returns immediately if already on disk. | |
| ```http | |
| GET /api/versions/{version}/models-meta | |
| ``` | |
| Returns the full `models.json` metadata for a version. | |
| --- | |
| ## Endpoints | |
| ### Health Check | |
| ```http | |
| GET /health | |
| ``` | |
| Response: | |
| ```json | |
| { | |
| "status": "ok", | |
| "version": "2.0.0", | |
| "models_loaded": 12, | |
| "device": "cpu" | |
| } | |
| ``` | |
| --- | |
| ### Single Prediction | |
| ```http | |
| POST /api/predict | |
| Content-Type: application/json | |
| ``` | |
| Request: | |
| ```json | |
| { | |
| "battery_id": "B0005", | |
| "cycle_number": 100, | |
| "ambient_temperature": 24.0, | |
| "peak_voltage": 4.2, | |
| "min_voltage": 2.7, | |
| "avg_current": 2.0, | |
| "avg_temp": 25.0, | |
| "temp_rise": 3.0, | |
| "cycle_duration": 3600, | |
| "Re": 0.04, | |
| "Rct": 0.02, | |
| "delta_capacity": -0.005 | |
| } | |
| ``` | |
| Optionally include `"model_name"` to select a specific model (leave null to use the registry default): | |
| ```json | |
| { | |
| ... | |
| "model_name": "random_forest" | |
| } | |
| ``` | |
| Response: | |
| ```json | |
| { | |
| "battery_id": "B0005", | |
| "cycle_number": 100, | |
| "soh_pct": 92.5, | |
| "rul_cycles": 450, | |
| "degradation_state": "Healthy", | |
| "confidence_lower": 90.5, | |
| "confidence_upper": 94.5, | |
| "model_used": "random_forest", | |
| "model_version": "v1.0.0" | |
| } | |
| ``` | |
| --- | |
| ### Ensemble Prediction | |
| ```http | |
| POST /api/predict/ensemble | |
| Content-Type: application/json | |
| ``` | |
| Always uses the **BestEnsemble (v3.0.0)** — weighted average of Random Forest, XGBoost, and | |
| LightGBM (weights proportional to R²). Body is identical to single prediction. | |
| Response includes `"model_version": "v3.0.0"`. | |
| --- | |
| ### Batch Prediction | |
| ```http | |
| POST /api/predict/batch | |
| Content-Type: application/json | |
| ``` | |
| Request: | |
| ```json | |
| { | |
| "battery_id": "B0005", | |
| "cycles": [ | |
| {"cycle_number": 1, "ambient_temperature": 24, ...}, | |
| {"cycle_number": 2, "ambient_temperature": 24, ...} | |
| ] | |
| } | |
| ``` | |
| --- | |
| ### Recommendations | |
| ```http | |
| POST /api/recommend | |
| Content-Type: application/json | |
| ``` | |
| Request: | |
| ```json | |
| { | |
| "battery_id": "B0005", | |
| "current_cycle": 100, | |
| "current_soh": 85.0, | |
| "ambient_temperature": 24.0, | |
| "top_k": 5 | |
| } | |
| ``` | |
| Response: | |
| ```json | |
| { | |
| "battery_id": "B0005", | |
| "current_soh": 85.0, | |
| "recommendations": [ | |
| { | |
| "rank": 1, | |
| "ambient_temperature": 24.0, | |
| "discharge_current": 0.5, | |
| "cutoff_voltage": 2.7, | |
| "predicted_rul": 500, | |
| "rul_improvement": 50, | |
| "rul_improvement_pct": 11.1, | |
| "explanation": "Operate at 24°C, 0.5A, cutoff 2.7V for ~500 cycles RUL" | |
| } | |
| ] | |
| } | |
| ``` | |
| --- | |
| ### Dashboard Data | |
| ```http | |
| GET /api/dashboard | |
| ``` | |
| Returns full dashboard payload with battery fleet stats, capacity fade curves, and model metrics. | |
| --- | |
| ### Battery List | |
| ```http | |
| GET /api/batteries | |
| ``` | |
| --- | |
| ### Battery Capacity | |
| ```http | |
| GET /api/battery/{battery_id}/capacity | |
| ``` | |
| --- | |
| ### Model List | |
| ```http | |
| GET /api/models | |
| ``` | |
| Returns every registered model with version, family, R², and load status. | |
| --- | |
| ### Model Versions | |
| ```http | |
| GET /api/models/versions | |
| ``` | |
| Groups models by generation: | |
| ```json | |
| { | |
| "v1_classical": ["ridge", "lasso", "random_forest", "xgboost", "lightgbm", ...], | |
| "v2_deep": ["vanilla_lstm", "bilstm", "gru", "attention_lstm", "tft", ...], | |
| "v2_ensemble": ["best_ensemble"], | |
| "other": [], | |
| "default_model": "best_ensemble" | |
| } | |
| ``` | |
| --- | |
| ### Figures | |
| ```http | |
| GET /api/figures # List all | |
| GET /api/figures/{name} # Serve a figure | |
| ``` | |