| # Working API Endpoints - Complete Reference | |
| ## Overview | |
| All backend API endpoints tested and verified working. This document provides examples and expected responses for each endpoint. | |
| **Base URL:** `http://localhost:7860` (or your HuggingFace Space URL) | |
| --- | |
| ## ๐ฅ Health & Status Endpoints | |
| ### GET /api/health | |
| **Description:** System health check | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "status": "healthy", | |
| "timestamp": "2025-12-12T10:30:00.000000Z", | |
| "service": "unified_query_service", | |
| "version": "1.0.0" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/health | |
| ``` | |
| --- | |
| ### GET /api/status | |
| **Description:** System status with metrics | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "health": "healthy", | |
| "online": 2, | |
| "offline": 0, | |
| "degraded": 0, | |
| "avg_response_time": 250, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/status | |
| ``` | |
| --- | |
| ### GET /api/routers | |
| **Description:** Get status of all loaded routers | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "routers": { | |
| "unified_service_api": "loaded", | |
| "real_data_api": "loaded", | |
| "market_api": "loaded", | |
| "technical_analysis": "loaded", | |
| "ai_ml": "loaded", | |
| "multi_source": "loaded" | |
| }, | |
| "total_loaded": 15, | |
| "total_available": 15, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/routers | |
| ``` | |
| --- | |
| ## ๐ Market Data Endpoints | |
| ### GET /api/market | |
| **Description:** Market overview data | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "total_market_cap": 2450000000000, | |
| "totalMarketCap": 2450000000000, | |
| "total_volume": 98500000000, | |
| "totalVolume": 98500000000, | |
| "btc_dominance": 52.3, | |
| "eth_dominance": 17.8, | |
| "active_coins": 100, | |
| "timestamp": "2025-12-12T10:30:00.000000Z", | |
| "source": "coingecko" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/market | |
| ``` | |
| --- | |
| ### GET /api/coins/top | |
| **Description:** Top cryptocurrencies by market cap | |
| **Parameters:** | |
| - `limit` (optional): Number of coins to return (default: 50, max: 250) | |
| **Response:** | |
| ```json | |
| { | |
| "coins": [ | |
| { | |
| "id": "btc", | |
| "rank": 1, | |
| "symbol": "BTC", | |
| "name": "Bitcoin", | |
| "price": 67850.32, | |
| "market_cap": 1280000000000, | |
| "volume_24h": 42500000000, | |
| "change_24h": 2.45, | |
| "image": "https://assets.coingecko.com/coins/images/1/small/btc.png" | |
| } | |
| ], | |
| "total": 10, | |
| "timestamp": "2025-12-12T10:30:00.000000Z", | |
| "source": "coingecko" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl "http://localhost:7860/api/coins/top?limit=10" | |
| ``` | |
| --- | |
| ### GET /api/trending | |
| **Description:** Trending cryptocurrencies | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "coins": [ | |
| { | |
| "rank": 1, | |
| "name": "Bitcoin", | |
| "symbol": "BTC", | |
| "price": 67850.32, | |
| "volume_24h": 42500000000, | |
| "market_cap": 1280000000000, | |
| "change_24h": 2.45, | |
| "image": "https://..." | |
| } | |
| ], | |
| "timestamp": "2025-12-12T10:30:00.000000Z", | |
| "source": "coingecko_trending" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/trending | |
| ``` | |
| --- | |
| ### GET /api/service/rate | |
| **Description:** Get rate for a specific trading pair | |
| **Parameters:** | |
| - `pair` (required): Trading pair (e.g., "BTC/USDT") | |
| **Response:** | |
| ```json | |
| { | |
| "pair": "BTC/USDT", | |
| "rate": 67850.32, | |
| "timestamp": "2025-12-12T10:30:00.000000Z", | |
| "source": "binance" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl "http://localhost:7860/api/service/rate?pair=BTC/USDT" | |
| ``` | |
| --- | |
| ### GET /api/service/rate/batch | |
| **Description:** Get rates for multiple trading pairs | |
| **Parameters:** | |
| - `pairs` (required): Comma-separated list of pairs | |
| **Response:** | |
| ```json | |
| { | |
| "rates": [ | |
| {"pair": "BTC/USDT", "rate": 67850.32}, | |
| {"pair": "ETH/USDT", "rate": 3420.15} | |
| ], | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl "http://localhost:7860/api/service/rate/batch?pairs=BTC/USDT,ETH/USDT" | |
| ``` | |
| --- | |
| ### GET /api/service/history | |
| **Description:** Historical price data | |
| **Parameters:** | |
| - `symbol` (required): Cryptocurrency symbol | |
| - `interval` (optional): Time interval (1h, 4h, 1d, etc.) | |
| - `limit` (optional): Number of data points | |
| **Response:** | |
| ```json | |
| { | |
| "symbol": "BTC", | |
| "interval": "1h", | |
| "data": [ | |
| {"timestamp": 1702380000000, "open": 67800, "high": 67900, "low": 67750, "close": 67850, "volume": 1000} | |
| ], | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl "http://localhost:7860/api/service/history?symbol=BTC&interval=1h&limit=24" | |
| ``` | |
| --- | |
| ## ๐ง Sentiment & AI Endpoints | |
| ### GET /api/sentiment/global | |
| **Description:** Global market sentiment | |
| **Parameters:** | |
| - `timeframe` (optional): "1D", "7D", "30D", "1Y" (default: "1D") | |
| **Response:** | |
| ```json | |
| { | |
| "fear_greed_index": 65, | |
| "sentiment": "greed", | |
| "market_mood": "bullish", | |
| "confidence": 0.85, | |
| "history": [ | |
| {"timestamp": 1702380000000, "sentiment": 65, "volume": 100000} | |
| ], | |
| "timestamp": "2025-12-12T10:30:00.000000Z", | |
| "source": "alternative.me" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl "http://localhost:7860/api/sentiment/global?timeframe=1D" | |
| ``` | |
| --- | |
| ### GET /api/sentiment/asset/{symbol} | |
| **Description:** Sentiment for specific asset | |
| **Parameters:** | |
| - `symbol` (path): Cryptocurrency symbol (e.g., "BTC") | |
| **Response:** | |
| ```json | |
| { | |
| "symbol": "BTC", | |
| "sentiment": "positive", | |
| "sentiment_value": 72, | |
| "color": "#10b981", | |
| "social_score": 78, | |
| "news_score": 65, | |
| "sources": { | |
| "twitter": 25000, | |
| "reddit": 5000, | |
| "news": 150 | |
| }, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/sentiment/asset/BTC | |
| ``` | |
| --- | |
| ### POST /api/service/sentiment | |
| **Description:** Analyze text sentiment | |
| **Body:** | |
| ```json | |
| { | |
| "text": "Bitcoin is showing strong bullish momentum!", | |
| "mode": "crypto" | |
| } | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "sentiment": "bullish", | |
| "score": 0.85, | |
| "confidence": 0.92, | |
| "model": "cryptobert", | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl -X POST http://localhost:7860/api/service/sentiment \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"text":"Bitcoin is showing strong bullish momentum!","mode":"crypto"}' | |
| ``` | |
| --- | |
| ### GET /api/ai/signals | |
| **Description:** AI trading signals | |
| **Parameters:** | |
| - `symbol` (optional): Cryptocurrency symbol (default: "BTC") | |
| **Response:** | |
| ```json | |
| { | |
| "symbol": "BTC", | |
| "signals": [ | |
| { | |
| "id": "sig_1702380000_0", | |
| "symbol": "BTC", | |
| "type": "buy", | |
| "score": 0.85, | |
| "model": "cryptobert_elkulako", | |
| "created_at": "2025-12-12T10:30:00.000000Z", | |
| "confidence": 0.92 | |
| } | |
| ], | |
| "total": 3, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl "http://localhost:7860/api/ai/signals?symbol=BTC" | |
| ``` | |
| --- | |
| ### POST /api/ai/decision | |
| **Description:** AI trading decision | |
| **Body:** | |
| ```json | |
| { | |
| "symbol": "BTC", | |
| "horizon": "swing", | |
| "risk_tolerance": "moderate", | |
| "context": "Market is showing bullish momentum", | |
| "model": "cryptobert" | |
| } | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "decision": "BUY", | |
| "confidence": 0.78, | |
| "summary": "Based on recent market conditions and a swing horizon, the AI suggests a BUY stance for BTC with 78% confidence.", | |
| "signals": [ | |
| {"type": "bullish", "text": "Primary signal indicates BUY bias."} | |
| ], | |
| "risks": [ | |
| "Market volatility may increase around major macro events." | |
| ], | |
| "targets": { | |
| "support": 65000, | |
| "resistance": 70000, | |
| "target": 72000 | |
| }, | |
| "symbol": "BTC", | |
| "horizon": "swing", | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl -X POST http://localhost:7860/api/ai/decision \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"symbol":"BTC","horizon":"swing","risk_tolerance":"moderate"}' | |
| ``` | |
| --- | |
| ## ๐ฐ News Endpoints | |
| ### GET /api/news | |
| **Description:** Latest crypto news | |
| **Parameters:** | |
| - `limit` (optional): Number of articles (default: 50) | |
| - `source` (optional): Filter by source (e.g., "CoinDesk") | |
| **Response:** | |
| ```json | |
| { | |
| "articles": [ | |
| { | |
| "id": "article-123", | |
| "title": "Bitcoin Reaches New All-Time High", | |
| "description": "Bitcoin surpasses $70,000 for the first time...", | |
| "content": "Full article content...", | |
| "source": "CoinDesk", | |
| "published_at": "2025-12-12T10:00:00.000000Z", | |
| "url": "https://...", | |
| "sentiment": "positive", | |
| "sentiment_score": 0.75, | |
| "tags": ["bitcoin", "price", "ath"] | |
| } | |
| ], | |
| "total": 50, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl "http://localhost:7860/api/news?limit=10" | |
| ``` | |
| --- | |
| ### GET /api/news/latest | |
| **Description:** Alias for /api/news | |
| **Parameters:** Same as /api/news | |
| **Response:** Same as /api/news | |
| **Test:** | |
| ```bash | |
| curl "http://localhost:7860/api/news/latest?limit=10" | |
| ``` | |
| --- | |
| ## ๐ค AI Models Endpoints | |
| ### GET /api/models/list | |
| **Description:** List all AI models | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "models": [ | |
| { | |
| "key": "cryptobert_elkulako", | |
| "id": "cryptobert_elkulako", | |
| "name": "ElKulako/cryptobert", | |
| "model_id": "ElKulako/cryptobert", | |
| "task": "sentiment-analysis", | |
| "category": "sentiment", | |
| "requires_auth": false, | |
| "loaded": true, | |
| "error": null | |
| } | |
| ], | |
| "total": 4, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/models/list | |
| ``` | |
| --- | |
| ### GET /api/models/status | |
| **Description:** Models status summary | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "status": "operational", | |
| "models_loaded": 2, | |
| "models_failed": 0, | |
| "hf_mode": "on", | |
| "transformers_available": true, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/models/status | |
| ``` | |
| --- | |
| ### GET /api/models/summary | |
| **Description:** Comprehensive models summary | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "ok": true, | |
| "success": true, | |
| "summary": { | |
| "total_models": 4, | |
| "loaded_models": 2, | |
| "failed_models": 0, | |
| "hf_mode": "on", | |
| "transformers_available": true | |
| }, | |
| "categories": { | |
| "sentiment": [ | |
| { | |
| "key": "cryptobert_elkulako", | |
| "model_id": "ElKulako/cryptobert", | |
| "name": "cryptobert", | |
| "category": "sentiment", | |
| "task": "sentiment-analysis", | |
| "loaded": true, | |
| "status": "healthy" | |
| } | |
| ] | |
| }, | |
| "health_registry": [], | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/models/summary | |
| ``` | |
| --- | |
| ### GET /api/models/health | |
| **Description:** Per-model health information | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "health": { | |
| "cryptobert_elkulako": { | |
| "status": "healthy", | |
| "success_count": 150, | |
| "error_count": 2, | |
| "last_success": "2025-12-12T10:29:00.000000Z" | |
| } | |
| }, | |
| "total": 4 | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/models/health | |
| ``` | |
| --- | |
| ### POST /api/models/test | |
| **Description:** Test a model with input | |
| **Body:** | |
| ```json | |
| { | |
| "model": "cryptobert", | |
| "input": "Bitcoin is showing strong momentum" | |
| } | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "success": true, | |
| "model": "cryptobert_elkulako", | |
| "result": { | |
| "sentiment": "bullish", | |
| "score": 0.85, | |
| "confidence": 0.92 | |
| }, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl -X POST http://localhost:7860/api/models/test \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"model":"cryptobert","input":"Bitcoin is showing strong momentum"}' | |
| ``` | |
| --- | |
| ### POST /api/models/reinitialize | |
| **Description:** Reinitialize all AI models | |
| **Body:** None | |
| **Response:** | |
| ```json | |
| { | |
| "status": "ok", | |
| "init_result": { | |
| "initialized": true, | |
| "models_loaded": 2 | |
| }, | |
| "registry": { | |
| "status": "operational", | |
| "models_loaded": 2 | |
| } | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl -X POST http://localhost:7860/api/models/reinitialize | |
| ``` | |
| --- | |
| ## ๐ Resources Endpoints | |
| ### GET /api/resources | |
| **Description:** Resources statistics | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "total": 248, | |
| "free": 180, | |
| "models": 8, | |
| "providers": 15, | |
| "categories": [ | |
| {"name": "Market Data", "count": 15}, | |
| {"name": "News", "count": 10} | |
| ], | |
| "timestamp": "2025-12-12T10:30:00.000000Z", | |
| "registry_loaded": true | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/resources | |
| ``` | |
| --- | |
| ### GET /api/resources/summary | |
| **Description:** Detailed resources summary | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "success": true, | |
| "summary": { | |
| "total_resources": 248, | |
| "free_resources": 180, | |
| "premium_resources": 68, | |
| "models_available": 8, | |
| "local_routes_count": 24, | |
| "categories": { | |
| "market_data": {"count": 15, "type": "external"}, | |
| "news": {"count": 10, "type": "external"} | |
| }, | |
| "by_category": [ | |
| {"name": "Market Data", "count": 15} | |
| ] | |
| }, | |
| "timestamp": "2025-12-12T10:30:00.000000Z", | |
| "registry_loaded": true | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/resources/summary | |
| ``` | |
| --- | |
| ### GET /api/resources/categories | |
| **Description:** List resource categories | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "categories": [ | |
| {"name": "Market Data", "count": 15}, | |
| {"name": "News", "count": 10}, | |
| {"name": "Sentiment", "count": 7} | |
| ], | |
| "total": 248, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/resources/categories | |
| ``` | |
| --- | |
| ### GET /api/resources/category/{category_name} | |
| **Description:** Get resources for specific category | |
| **Parameters:** | |
| - `category_name` (path): Category name | |
| **Response:** | |
| ```json | |
| { | |
| "category": "Market Data", | |
| "items": [ | |
| { | |
| "name": "CoinGecko", | |
| "type": "API", | |
| "url": "https://api.coingecko.com", | |
| "free": true | |
| } | |
| ], | |
| "total": 15, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/resources/category/MarketData | |
| ``` | |
| --- | |
| ### GET /api/providers | |
| **Description:** List of data providers | |
| **Parameters:** None | |
| **Response:** | |
| ```json | |
| { | |
| "providers": [ | |
| {"id": "coingecko", "name": "CoinGecko", "status": "online", "type": "market_data"}, | |
| {"id": "binance", "name": "Binance", "status": "online", "type": "exchange"}, | |
| {"id": "etherscan", "name": "Etherscan", "status": "online", "type": "blockchain"} | |
| ], | |
| "total": 6, | |
| "online": 6, | |
| "offline": 0, | |
| "timestamp": "2025-12-12T10:30:00.000000Z" | |
| } | |
| ``` | |
| **Test:** | |
| ```bash | |
| curl http://localhost:7860/api/providers | |
| ``` | |
| --- | |
| ## ๐ Response Codes | |
| | Code | Meaning | Description | | |
| |------|---------|-------------| | |
| | 200 | OK | Request successful | | |
| | 400 | Bad Request | Invalid parameters | | |
| | 404 | Not Found | Endpoint or resource not found | | |
| | 429 | Too Many Requests | Rate limit exceeded | | |
| | 500 | Internal Server Error | Server error | | |
| | 503 | Service Unavailable | Service temporarily unavailable | | |
| --- | |
| ## ๐ Testing Tips | |
| ### 1. Use curl with formatting | |
| ```bash | |
| curl http://localhost:7860/api/health | jq | |
| ``` | |
| ### 2. Test with timeout | |
| ```bash | |
| curl --max-time 10 http://localhost:7860/api/market | |
| ``` | |
| ### 3. Include headers | |
| ```bash | |
| curl -H "Accept: application/json" http://localhost:7860/api/health | |
| ``` | |
| ### 4. Save response to file | |
| ```bash | |
| curl http://localhost:7860/api/coins/top?limit=10 > response.json | |
| ``` | |
| ### 5. Test POST with data | |
| ```bash | |
| curl -X POST http://localhost:7860/api/ai/decision \ | |
| -H "Content-Type: application/json" \ | |
| -d @request.json | |
| ``` | |
| --- | |
| ## โ Verification | |
| All endpoints have been tested and verified working. Use the provided test suite for automated verification: | |
| ```bash | |
| # Automated testing | |
| python verify_deployment.py | |
| # Interactive testing | |
| open http://localhost:7860/test_api_integration.html | |
| ``` | |
| --- | |
| **Last Updated:** December 12, 2025 | |
| **Status:** โ All endpoints operational | |