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 (v2.1.0) | |
| The API supports two model generations served in parallel: | |
| | Prefix | Models | Split Strategy | Notes | | |
| |--------|--------|---------------|-------| | |
| | `/api/v1/*` | v1 models (cross-battery split) | Group-battery 80/20 | Legacy | | |
| | `/api/v2/*` | v2 models (chrono split, bug-fixed) | Intra-battery 80/20 | **Recommended** | | |
| | `/api/*` | Default (v2) | Same as v2 | Backward-compatible | | |
| ### v2 Bug Fixes | |
| - **avg_temp auto-correction removed** — v1 silently added 8°C to avg_temp | |
| - **Recommendation baseline fixed** — v1 re-predicted SOH, yielding ~0 improvement | |
| --- | |
| ## 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 | |
| ``` | |