polycorr-backend / API_EXAMPLES.md
dhruv575
Initial build
5bde3f1
# API Usage Examples
This document provides practical examples for testing each API endpoint.
## 1. Health Check
**Request:**
```bash
curl http://localhost:5000/health
```
**Response:**
```json
{
"status": "ok"
}
```
---
## 2. Get Market Information
**Request:**
```bash
curl -X POST http://localhost:5000/api/market-info \
-H "Content-Type: application/json" \
-d '{
"url": "https://polymarket.com/event/will-biden-pardon-hunter-biden"
}'
```
**Response:**
```json
{
"id": "...",
"question": "Will Biden pardon Hunter Biden?",
"conditionId": "...",
"clobTokenIds": ["..."],
"firstTokenId": "..."
}
```
---
## 3. Convert EST to Unix
**Request:**
```bash
curl -X POST http://localhost:5000/api/time/est-to-unix \
-H "Content-Type: application/json" \
-d '{
"datetime": "2025-11-15 14:30:00"
}'
```
**Response:**
```json
{
"unix_timestamp": 1763210400,
"est_datetime": "2025-11-15 14:30:00 EST"
}
```
---
## 4. Convert Unix to EST
**Request:**
```bash
curl -X POST http://localhost:5000/api/time/unix-to-est \
-H "Content-Type: application/json" \
-d '{
"timestamp": 1763210400
}'
```
**Response:**
```json
{
"unix_timestamp": 1763210400,
"est_datetime": "2025-11-15 14:30:00 EST"
}
```
---
## 5. Get Price History
**Request:**
```bash
curl -X POST http://localhost:5000/api/price-history \
-H "Content-Type: application/json" \
-d '{
"token_id": "52607315900507156846622820770453728082833251091510131025984187712529448877245",
"start_time": "2025-11-14 10:00:00",
"end_time": "2025-11-14 16:00:00",
"fidelity": 60,
"granularity": 60
}'
```
**Response:**
```json
{
"token_id": "...",
"start_unix": 1234567890,
"end_unix": 1234567900,
"start_time": "2025-11-14 10:00:00 EST",
"end_time": "2025-11-14 16:00:00 EST",
"fidelity": 60,
"granularity": 60,
"raw_history_count": 50,
"timeseries_count": 360,
"raw_history": [
{"t": 1234567890, "p": 0.45}
],
"timeseries": [
{"timestamp": 1234567890, "price": 0.45}
]
}
```
---
## 6. Analyze Correlations (LLM)
**Request:**
```bash
curl -X POST http://localhost:5000/api/analyze-correlations \
-H "Content-Type: application/json" \
-d '{
"question": "Will the Federal Reserve cut interest rates in December 2025?"
}'
```
**Response:**
```json
{
"question": "Will the Federal Reserve cut interest rates in December 2025?",
"correlated": [
{
"ticker": "TLT",
"reason": "Long-term Treasury bonds typically rise when interest rates are cut"
},
{
"ticker": "XLF",
"reason": "Financial sector stocks often react positively to rate cuts"
}
],
"inversely_correlated": [
{
"ticker": "DXY",
"reason": "US Dollar typically weakens when Fed cuts rates"
},
{
"ticker": "BND",
"reason": "Bond yields fall with rate cuts, causing inverse price movement"
}
]
}
```
---
## 7. Fetch Asset Prices
**Request:**
```bash
curl -X POST http://localhost:5000/api/fetch-asset-prices \
-H "Content-Type: application/json" \
-d '{
"ticker": "AAPL",
"start_time": "2025-11-14 10:00:00",
"end_time": "2025-11-14 16:00:00",
"interval": "1h"
}'
```
**Response:**
```json
{
"ticker": "AAPL",
"start_time": "2025-11-14 10:00:00",
"end_time": "2025-11-14 16:00:00",
"interval": "1h",
"data_points": 6,
"timeseries": [
{"timestamp": 1234567890, "price": 150.25},
{"timestamp": 1234571490, "price": 151.30}
]
}
```
---
## 8. Full Analysis (Complete Workflow)
This is the **main endpoint** that combines all the functionality.
**Request:**
```bash
curl -X POST http://localhost:5000/api/analyze-full \
-H "Content-Type: application/json" \
-d '{
"url": "https://polymarket.com/event/will-biden-pardon-hunter-biden",
"start_time": "2025-11-01 00:00:00",
"end_time": "2025-11-14 23:59:59",
"granularity": 60
}'
```
**Response:**
```json
{
"market_info": {
"id": "...",
"question": "Will Biden pardon Hunter Biden?",
"token_id": "..."
},
"time_range": {
"start": "2025-11-01 00:00:00",
"end": "2025-11-14 23:59:59",
"start_unix": 1234567890,
"end_unix": 1234567900,
"granularity": 60
},
"polymarket_data": [
{"timestamp": 1234567890, "price": 0.45}
],
"polymarket_data_normalized": [
{"timestamp": 1234567890, "price": 0.45, "original_price": 0.45}
],
"correlated_assets": [
{
"ticker": "SPY",
"reason": "...",
"correlation": 0.75,
"data_points": 150,
"timeseries": [...],
"normalized_timeseries": [...],
"success": true
}
],
"inversely_correlated_assets": [
{
"ticker": "GLD",
"reason": "...",
"correlation": -0.65,
"data_points": 150,
"timeseries": [...],
"normalized_timeseries": [...],
"success": true
}
]
}
```
---
## Testing with Python
You can also test using Python's `requests` library:
```python
import requests
import json
# Full analysis example
url = "http://localhost:5000/api/analyze-full"
data = {
"url": "https://polymarket.com/event/will-biden-pardon-hunter-biden",
"start_time": "2025-11-01 00:00:00",
"end_time": "2025-11-14 23:59:59",
"granularity": 60
}
response = requests.post(url, json=data)
result = response.json()
print(json.dumps(result, indent=2))
```
---
## Notes
1. **Time Format**: All times should be in EST format: `"YYYY-MM-DD HH:MM:SS"`
2. **Granularity**: Specified in minutes (60 = hourly, 1 = minute-by-minute)
3. **Intervals**: For yfinance: `"1m"`, `"5m"`, `"15m"`, `"30m"`, `"1h"`, `"1d"`
4. **Correlations**: Range from -1 (perfect inverse) to +1 (perfect positive)
5. **Data Limitations**:
- 1-minute data only available for last 7 days
- Polymarket CLOB API may have rate limits
- Some tickers may not have data for all time periods