301 lines
6.3 KiB
Markdown
301 lines
6.3 KiB
Markdown
# Trading Agents API - Quick Start Guide
|
|
|
|
This guide will get your FastAPI Trading Agents API up and running in minutes.
|
|
|
|
## Prerequisites
|
|
|
|
- Python 3.10+
|
|
- TradingAgents installed and configured
|
|
- Required environment variables (OPENAI_API_KEY, ALPHA_VANTAGE_API_KEY, etc.)
|
|
|
|
## Setup (5 minutes)
|
|
|
|
### 1. Install API Dependencies
|
|
|
|
```bash
|
|
cd TradingAgents
|
|
pip install -r requirements-api.txt
|
|
```
|
|
|
|
### 2. Initialize Database
|
|
|
|
```bash
|
|
python -m api.cli_admin init-database
|
|
```
|
|
|
|
### 3. Create Your First API Key
|
|
|
|
```bash
|
|
python -m api.cli_admin create-key "Development Key"
|
|
```
|
|
|
|
**IMPORTANT**: Save the API key that's displayed. You won't be able to see it again!
|
|
|
|
Example output:
|
|
```
|
|
✓ API Key created successfully!
|
|
|
|
Name: Development Key
|
|
Created: 2025-10-21 14:30:00
|
|
|
|
API Key (save this, it won't be shown again):
|
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
|
|
Use this key in the X-API-Key header for all API requests.
|
|
```
|
|
|
|
### 4. Start the API Server
|
|
|
|
```bash
|
|
python -m api.main
|
|
```
|
|
|
|
Or use the startup script:
|
|
```bash
|
|
./run_api.sh
|
|
```
|
|
|
|
The API will start at: `http://localhost:8000`
|
|
|
|
## Test Your API (2 minutes)
|
|
|
|
### View API Documentation
|
|
|
|
Open your browser to:
|
|
- **Swagger UI**: http://localhost:8000/docs
|
|
- **ReDoc**: http://localhost:8000/redoc
|
|
|
|
### Create Your First Analysis
|
|
|
|
Replace `YOUR_API_KEY` with the key you created:
|
|
|
|
```bash
|
|
curl -X POST "http://localhost:8000/api/v1/analyses" \
|
|
-H "X-API-Key: YOUR_API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"ticker": "AAPL",
|
|
"analysis_date": "2025-10-21",
|
|
"selected_analysts": ["market", "news"],
|
|
"research_depth": 1
|
|
}'
|
|
```
|
|
|
|
You'll get a response with an `analysis_id`:
|
|
```json
|
|
{
|
|
"id": "550e8400-e29b-41d4-a716-446655440000",
|
|
"ticker": "AAPL",
|
|
"status": "pending",
|
|
...
|
|
}
|
|
```
|
|
|
|
### Check Status
|
|
|
|
```bash
|
|
curl "http://localhost:8000/api/v1/analyses/YOUR_ANALYSIS_ID/status" \
|
|
-H "X-API-Key: YOUR_API_KEY"
|
|
```
|
|
|
|
### Get Results
|
|
|
|
```bash
|
|
curl "http://localhost:8000/api/v1/analyses/YOUR_ANALYSIS_ID" \
|
|
-H "X-API-Key: YOUR_API_KEY"
|
|
```
|
|
|
|
## Using the Python Client
|
|
|
|
### Install Additional Dependencies
|
|
|
|
```bash
|
|
pip install httpx websockets
|
|
```
|
|
|
|
### Run Example Client
|
|
|
|
Edit `api/example_client.py` and replace `YOUR_API_KEY`, then:
|
|
|
|
```bash
|
|
python -m api.example_client
|
|
```
|
|
|
|
This will:
|
|
1. Create an analysis for AAPL
|
|
2. Monitor it via WebSocket
|
|
3. Display the results
|
|
|
|
## Next Steps
|
|
|
|
### Multiple Parallel Analyses
|
|
|
|
Create multiple analyses at once - they'll run in parallel:
|
|
|
|
```bash
|
|
# Start 3 analyses
|
|
for ticker in AAPL MSFT GOOGL; do
|
|
curl -X POST "http://localhost:8000/api/v1/analyses" \
|
|
-H "X-API-Key: YOUR_API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"ticker\": \"$ticker\", \"analysis_date\": \"2025-10-21\", \"selected_analysts\": [\"market\", \"news\"], \"research_depth\": 1}"
|
|
done
|
|
```
|
|
|
|
### List All Analyses
|
|
|
|
```bash
|
|
curl "http://localhost:8000/api/v1/analyses" \
|
|
-H "X-API-Key: YOUR_API_KEY"
|
|
```
|
|
|
|
### Get Analyses for Specific Ticker
|
|
|
|
```bash
|
|
curl "http://localhost:8000/api/v1/tickers/AAPL/analyses" \
|
|
-H "X-API-Key: YOUR_API_KEY"
|
|
```
|
|
|
|
### View Cached Market Data
|
|
|
|
```bash
|
|
# List all cached tickers
|
|
curl "http://localhost:8000/api/v1/data/cache" \
|
|
-H "X-API-Key: YOUR_API_KEY"
|
|
|
|
# Get data for specific ticker
|
|
curl "http://localhost:8000/api/v1/data/cache/AAPL" \
|
|
-H "X-API-Key: YOUR_API_KEY"
|
|
```
|
|
|
|
## WebSocket Real-Time Monitoring
|
|
|
|
### JavaScript Example
|
|
|
|
```javascript
|
|
const ws = new WebSocket('ws://localhost:8000/api/v1/ws/analyses/YOUR_ANALYSIS_ID');
|
|
|
|
ws.onmessage = (event) => {
|
|
const update = JSON.parse(event.data);
|
|
console.log(`Status: ${update.status}, Progress: ${update.progress_percentage}%`);
|
|
|
|
if (update.status === 'completed') {
|
|
console.log('Analysis finished!');
|
|
ws.close();
|
|
}
|
|
};
|
|
|
|
ws.onerror = (error) => console.error('WebSocket error:', error);
|
|
```
|
|
|
|
### Python Example
|
|
|
|
```python
|
|
import asyncio
|
|
import websockets
|
|
import json
|
|
|
|
async def monitor_analysis(analysis_id, api_key):
|
|
uri = f"ws://localhost:8000/api/v1/ws/analyses/{analysis_id}"
|
|
|
|
async with websockets.connect(uri) as websocket:
|
|
while True:
|
|
message = await websocket.recv()
|
|
data = json.loads(message)
|
|
|
|
print(f"Status: {data['status']}, Progress: {data['progress_percentage']}%")
|
|
|
|
if data['status'] in ['completed', 'failed', 'cancelled']:
|
|
break
|
|
|
|
asyncio.run(monitor_analysis('YOUR_ANALYSIS_ID', 'YOUR_API_KEY'))
|
|
```
|
|
|
|
## API Key Management
|
|
|
|
### List All Keys
|
|
|
|
```bash
|
|
python -m api.cli_admin list-keys
|
|
```
|
|
|
|
### Create Additional Key
|
|
|
|
```bash
|
|
python -m api.cli_admin create-key "Frontend App"
|
|
```
|
|
|
|
### Revoke a Key
|
|
|
|
```bash
|
|
python -m api.cli_admin revoke-key 1
|
|
```
|
|
|
|
### Activate a Key
|
|
|
|
```bash
|
|
python -m api.cli_admin activate-key 1
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
Set these before starting the API:
|
|
|
|
```bash
|
|
# Maximum concurrent analyses (default: 4)
|
|
export MAX_CONCURRENT_ANALYSES=8
|
|
|
|
# Database URL (default: SQLite in current directory)
|
|
export API_DATABASE_URL="sqlite:///./api_database.db"
|
|
|
|
# Or use PostgreSQL for production
|
|
export API_DATABASE_URL="postgresql://user:pass@localhost/trading_agents"
|
|
|
|
# Standard TradingAgents config
|
|
export OPENAI_API_KEY="your-key"
|
|
export ALPHA_VANTAGE_API_KEY="your-key"
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### "Invalid or inactive API key"
|
|
- Make sure you're using the exact key that was displayed when you created it
|
|
- Check that the key hasn't been revoked: `python -m api.cli_admin list-keys`
|
|
|
|
### "Analysis not found"
|
|
- The analysis ID must be exactly as returned from the create endpoint
|
|
- Check available analyses: `curl "http://localhost:8000/api/v1/analyses" -H "X-API-Key: YOUR_KEY"`
|
|
|
|
### Database locked
|
|
- SQLite has limited concurrency
|
|
- Reduce `MAX_CONCURRENT_ANALYSES` to 2-3
|
|
- Or switch to PostgreSQL
|
|
|
|
### Import errors
|
|
- Make sure you're in the TradingAgents directory
|
|
- Run with: `python -m api.main` (not `python api/main.py`)
|
|
|
|
## Full API Reference
|
|
|
|
See `api/README.md` for complete documentation of all endpoints and features.
|
|
|
|
## Production Deployment
|
|
|
|
For production use, see the deployment section in `api/README.md`. Key points:
|
|
|
|
1. Use PostgreSQL instead of SQLite
|
|
2. Configure CORS for your frontend domain
|
|
3. Use HTTPS/WSS with reverse proxy
|
|
4. Add rate limiting
|
|
5. Set up monitoring and logging
|
|
|
|
## Support
|
|
|
|
For issues or questions:
|
|
- Check the full documentation: `api/README.md`
|
|
- Review the main TradingAgents README
|
|
- Check the interactive docs: http://localhost:8000/docs
|
|
|