AlphaVision Developer API
Structured market signals for humans and AI agents. Bearer-token REST API with a free SPY surface. Signal-only — no execution. Not financial advice.
Quickstart
Free SPY (no auth)
curl https://api.alphavision.market/v1/signals/SPY
Python with API key
import os
import requests
resp = requests.get(
"https://api.alphavision.market/v1/signals",
headers={
"Authorization": f"Bearer {os.environ['ALPHAVISION_API_KEY']}",
},
timeout=10,
)
resp.raise_for_status()
for signal in resp.json():
print(
signal["ticker"],
signal["horizon"],
signal["signal"],
round(signal["confidence"] or 0, 3),
)Wire up an AI agent
# Tell your agent: Base URL: https://api.alphavision.market/v1 Authentication: Authorization: Bearer <api_key> OpenAPI spec: https://api.alphavision.market/v1/openapi.json # Quick rules of engagement: # - Free SPY signal works without a key. # - Other tickers require an active subscription. # - Per-(key, ticker) cooldown is 10 minutes — no benefit to polling faster. # - Signal-only. Never execute trades; surface them for human review.
Authentication
Pass a bearer token in the Authorization header:
Authorization: Bearer av_live_<your_key>
Keys are issued from your account page. One active key per member. Rotating revokes the old key immediately.
Rate limits
- 10-min cooldown per (key, ticker) for single-ticker endpoints.
- 10-min cooldown per key for the bulk
/v1/signalsendpoint. - Anonymous SPY = 1 request per 10 min per IP. About 6/hour.
- Metadata endpoints (
/me,/tickers,/status): 30/hour per caller.
AlphaVision signals update weekly to quarterly — polling faster than 10 minutes has no benefit.
Endpoints
Base URL: https://api.alphavision.market
GET/v1/signals/{ticker}
Latest published signal for one ticker.
Returns the most recent prediction along with confidence, valid_until, next_signal_at, model version, a short track record, and the last few signals for context. SPY is publicly accessible.
GET/v1/signals
Latest signal for every (model, ticker) the caller can access.
Bulk endpoint. Anonymous callers see only SPY. The bulk cooldown is independent of the per-ticker cooldown.
GET/v1/tickers
Accessible universe summary.
Returns each (ticker, horizon) the caller can read, with asset_class, model_version, and launch_date. Use this to learn what is queryable before fetching signals.
GET/v1/me
Caller identity, tier, and cooldown rules.
Inspect the resolved tier (Free / Equity / Multi-Asset / Quant), the key prefix, and the current cooldown values. Returns Free + no email for anonymous callers.
GET/v1/status
Data freshness by asset class.
Latest published signal_date for each asset class. Lets agents check liveness before consuming.
Example signal response
{
"ticker": "SPY",
"asset_class": "stocks",
"horizon": "weekly",
"signal": "BUY",
"confidence": 0.61,
"signal_date": "2026-05-10",
"valid_until": "2026-05-15",
"next_signal_at": "2026-05-16T20:00:00-04:00",
"model_version": "Iris-v2.1",
"launch_date": "2026-01-04",
"track_record": { "sample_size": 410, "win_rate": 0.91 },
"recent_signals": [
{ "signal_date": "2026-05-03", "signal": "SELL", "confidence": 0.96 }
],
"disclaimer": "Informational only. Not financial advice. ..."
}Errors
All errors share the same envelope. Use error.code for programmatic branching; message is for humans.
{
"error": {
"code": "ticker_not_entitled",
"message": "'AAPL' requires an active subscription. SPY is free.",
"docs_url": "https://alphavision.market/developers/errors#ticker_not_entitled"
}
}| code | HTTP | When |
|---|---|---|
| unauthenticated | 401 | Authorization header missing or empty. |
| invalid_key | 401 | Bearer token is malformed, unknown, or revoked. |
| subscription_inactive | 403 | Member's subscription is not active. |
| ticker_not_entitled | 403 | Caller's tier does not cover this ticker or asset class. |
| ticker_not_found | 404 | No active model serves the requested ticker. |
| rate_limited | 429 | Per-(key, ticker) cooldown not yet elapsed. Retry-After header indicates seconds. |
| invalid_request | 400 | Malformed parameters. |
| server_error | 500 | Unexpected error. Should not occur — report to support. |
What this API does not do
- It does not place trades. No execution permissions.
- It does not provide personalized financial advice.
- It does not recommend position sizing.
- It does not include historical backtest data for arbitrary date ranges.
- It does not include heatmap images or per-feature attribution.
Past performance does not guarantee future results. Use signals as inputs to your own decision process — always with a human in the loop.