POST
/auth/signupFREE + PROIssue an API key for an email address.
Request body
{ "email": "you@example.com" }Response shape
{ "key": "dk_free_...", "tier": "free" }REST API for systematic alpha research. All endpoints require an X-API-Key header. Base URL: https://drift-api-production-4337.up.railway.app
Pass your key in the X-API-Key header for every authenticated request.
curl https://drift-api-production-4337.up.railway.app/auth/me \
-H "X-API-Key: dk_free_your_key_here"/auth/signupFREE + PROIssue an API key for an email address.
{ "email": "you@example.com" }{ "key": "dk_free_...", "tier": "free" }/auth/meFREE + PROCheck key usage and tier. Headers: X-API-Key required.
No request body
{ "email": "...", "tier": "free", "requests_today": 3, "daily_limit": 50 }/signals/computeFREE (5 tickers) ยท PRO (50 tickers)Compute IC-weighted factor signals and detect market regime.
{ "tickers": ["RELIANCE", "TCS", "INFY"], "provider": "kite", "benchmark": "^NSEI" }{ "regime": { "label": "bull", ... }, "signals": [...], "factors": [...] }/portfolio/analyzeFREE (5 holdings) ยท PRO (50 holdings)Full factor/risk decomposition of a portfolio. Returns holdings analysis, concentration metrics, correlation clusters, stress test, and HRP rebalance suggestion.
{ "weights": { "RELIANCE": 25, "TCS": 20, "INFY": 20, "HDFCBANK": 20, "ICICIBANK": 15 } }{ "annualised_vol": 0.18, "sharpe": 0.70, "holdings": [...], "rebalance": {...}, ... }/portfolio/reportPRO ONLYGenerate a downloadable PDF report. Returns application/pdf binary.
Same as /portfolio/analyze
Binary PDF file
/screenFREE (top 10) ยท PRO (all results)Screen a named NSE universe by factor scores. Returns ranked stocks with classification.
{ "universe": "nifty50", "sort_by": "composite", "provider": "kite" }{ "results": [...], "current_regime": "bull", "is_truncated": false, ... }/portfolio/optimiseFREE (5 tickers, HRP only) ยท PRO (50 tickers, all methods)Optimise portfolio weights using HRP, Black-Litterman, or CVaR.
{ "tickers": ["RELIANCE", "TCS"], "method": "hrp" }{ "weights": [...], "effective_n": 1.9 }import requests BASE = "https://drift-api-production-4337.up.railway.app" KEY = "dk_free_your_key_here" def drift(path, body): return requests.post( f"{BASE}{path}", json=body, headers={"X-API-Key": KEY} ).json() # Compute signals signals = drift("/signals/compute", { "tickers": ["RELIANCE", "TCS", "INFY"], "provider": "kite" }) print(signals["regime"]["label"]) # "bull" # Analyse portfolio report = drift("/portfolio/analyze", { "weights": {"RELIANCE": 30, "TCS": 40, "INFY": 30} }) print(report["annualised_vol"]) # 0.18
| Tier | Requests/day | Max tickers | PDF reports |
|---|---|---|---|
| Free | 50 | 5 | โ |
| Pro | 2,000 | 50 | โ |