curl --request GET \
--url https://api.example.com/api/graph/v1/stocks/{symbol}import requests
url = "https://api.example.com/api/graph/v1/stocks/{symbol}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/graph/v1/stocks/{symbol}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/graph/v1/stocks/{symbol}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/graph/v1/stocks/{symbol}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/graph/v1/stocks/{symbol}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/stocks/{symbol}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"adv20_usd": 8000000000,
"adv30_usd": 7500000000,
"dollar_volume": 8000000000,
"dollar_volume_today": 8797500000,
"last_price": 195.5,
"rel_volume": 1.17,
"symbol": "AAPL",
"technical": {
"rsi_14": 55.2,
"trend_stack_valid": true
},
"updated_at": "2025-12-20T15:30:00Z",
"volume": 45000000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get complete stock context
curl --request GET \
--url https://api.example.com/api/graph/v1/stocks/{symbol}import requests
url = "https://api.example.com/api/graph/v1/stocks/{symbol}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/graph/v1/stocks/{symbol}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/graph/v1/stocks/{symbol}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/graph/v1/stocks/{symbol}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/graph/v1/stocks/{symbol}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/stocks/{symbol}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"adv20_usd": 8000000000,
"adv30_usd": 7500000000,
"dollar_volume": 8000000000,
"dollar_volume_today": 8797500000,
"last_price": 195.5,
"rel_volume": 1.17,
"symbol": "AAPL",
"technical": {
"rsi_14": 55.2,
"trend_stack_valid": true
},
"updated_at": "2025-12-20T15:30:00Z",
"volume": 45000000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Path Parameters
Query Parameters
Trade date (YYYY-MM-DD), defaults to today
^\d{4}-\d{2}-\d{2}$Comma-separated includes: levels,patterns,news,volume_profile,strategies,confluence_components,level_ladder,thematic_exposure
Response
Stock details
Complete stock data with all available metrics.
This is the primary response model for stock queries.
Stock ticker symbol
x >= 0DEPRECATED: Use adv20_usd (20-day avg) or dollar_volume_today. Currently stores 20-day average.
x >= 0Company name (e.g. NVIDIA Corporation)
Company description
CEO name
Headquarters location
Number of full-time employees
IPO date
Company website URL
Company logo URL
Last price. Delayed (>= 15m old) for non-realtime_sip callers; the live scalar is suppressed to null when no delayed bar is available (see source).
x >= 0Market-data feed source label (entitlement layer): 'realtime_sip' | 'delayed' | 'byok'. Non-realtime_sip callers get 'delayed'.
Today's dollar volume (last_price × volume)
x >= 020-day average dollar volume (canonical name for what was misleadingly called dollar_volume)
x >= 030-day average dollar volume
x >= 030-day average daily share volume (for liquidity hard gate: >= 500k)
x >= 0Relative volume: yesterday's volume / 20-day average daily volume
x >= 05-day average volume / 20-day average volume (volume trend)
x >= 0increasing, decreasing, stable Technical indicator values.
Show child attributes
Show child attributes
Volatility compression indicators.
Show child attributes
Show child attributes
Options-related data.
Note: Data availability depends on options-collector pipeline status.
Show child attributes
Show child attributes
Fundamental data.
Most fields are written by the Go graph writer from Yahoo Finance fundamentals collector. market_cap, sector, exchange are core identifiers.
Show child attributes
Show child attributes
Daily classification context.
Show child attributes
Show child attributes
Earnings-related data including surprise metrics.
Note: Data availability depends on earnings-sync pipeline status.
Show child attributes
Show child attributes
3-day range breakout tracking.
Show child attributes
Show child attributes
Analyst consensus, estimates, and rating data from FMP (COR-68/69).
Show child attributes
Show child attributes
Insider and institutional ownership data from FMP (COR-68/69).
Show child attributes
Show child attributes
Key price levels from IntradayLevel vertex.
Show child attributes
Show child attributes
Volume profile data from VolumeProfileSession vertex.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
News summary aggregated from news_sentiment table.
Show child attributes
Show child attributes
Recent price events (gaps, breakouts, MA crossovers, volume events). Populated via include option.
Show child attributes
Show child attributes
Structured breakdown of 8 v4.5 confluence components with weights and notes. Populated via include option.
Show child attributes
Show child attributes
Sorted level ladder with ATR distances and confluence zones. Populated via include option.
Show child attributes
Show child attributes
Session-specific price data with pre-market, regular, and after-hours OHLC
Show child attributes
Show child attributes
{
"ask": 195.52,
"ask_size": 150,
"bid": 195.48,
"bid_size": 200,
"change": 2.3,
"change_percent": 1.19,
"current": 195.5,
"last_update": "2025-01-06T14:30:45Z",
"market_status": "open",
"pre_market": {
"close": 194.6,
"high": 194.8,
"last": 194.65,
"low": 193.25,
"open": 193.5
},
"previous_close": 193.2,
"regular_session": {
"close": 195.48,
"high": 196,
"last": 195.5,
"low": 194.5,
"open": 194.7
}
}
Confluence score v3 (0-100): weighted combination of volume, technical, day type, pattern, and proximity scores
0 <= x <= 100Tier derived from confluence_score: EXCELLENT (>=90), GOOD (>=80), MODERATE (>=70), WEAK (>=60), POOR (<60)
Canonical bullish confluence (0-100): v5 scoring
0 <= x <= 100Canonical bearish confluence (0-100): v5 scoring
0 <= x <= 100Tier from bullish_confluence: EXCELLENT (>=85), GOOD (>=70), MODERATE (>=50), WEAK (>=25), POOR (<25)
Tier from bearish_confluence: EXCELLENT (>=85), GOOD (>=70), MODERATE (>=50), WEAK (>=25), POOR (<25)
Canonical net confluence (-100 to +100): bullish_confluence - bearish_confluence
-100 <= x <= 100Canonical directional bias from net_confluence thresholds
Canonical confluence scoring version source (v5 preferred)
max(bull, bear) — conviction regardless of direction (0-100)
0 <= x <= 100min(bull, bear) — disagreement signal (0-100)
0 <= x <= 100BULL_DOMINANT / BEAR_DOMINANT / MIXED (10pt margin)
True if price is >2 ATR from SMA20 (exhaustion risk for bulls)
True if elevated volume with declining trend (bearish signal)
Classification of nearest level: 'support', 'resistance', or 'neutral'
Cumulative Volume Delta (raw shares, positive=buying, negative=selling)
CVD as % of total session volume (normalized, cross-symbol comparable)
CVD vs price divergence: bullish_div, bearish_div, none
CVD trend: accumulating, distributing, neutral
Bullish entry score 0-100 (intraday timing)
Bearish entry score 0-100 (intraday timing)
Net entry score (-100 to +100): bullish - bearish
Entry score completeness 0.0-1.0 (how many components available)
Whether all entry quality gates passed
List of failed entry quality gate names
GEX regime modifier applied: long_gamma, short_gamma, or empty
Current GEX regime: long_gamma, short_gamma, or neutral
Strike price where dealer gamma flips sign
V4.2 momentum component bullish score (0-10). Positive momentum favors bulls.
0 <= x <= 10V4.2 momentum component bearish score (0-10). Negative momentum favors bears.
0 <= x <= 10Blended multi-horizon return: 0.5ret_60d + 0.3ret_90d + 0.2*ret_20d (percentage)
Linear regression slope of log(close) over 60 days (annualized percentage)
True if stock passes beta risk gate (VIX-aware: max 1.5 in EXTREME_FEAR, 2.0 in ELEVATED)
Explanation for beta gate result
True if stock passes fundamental quality gate (quality score >= 50)
Fundamental quality score (0-100) based on P/E, ROE, and profit margin
0 <= x <= 100Fundamental health grade A-F based on growth, margins, leverage, earnings execution, and sentiment
Fundamental health score (0-100) underlying the A-F grade
0 <= x <= 100Earnings sentiment from surprise %: POSITIVE (>10%), SLIGHT_POSITIVE (0-10%), SLIGHT_NEGATIVE (-10-0%), NEGATIVE (<-10%)
True if all quality gates (beta, fundamental, earnings sentiment) passed
Pricing edge bullish score from binomial pricer (0-10)
0 <= x <= 10Pricing edge bearish score (0-10)
0 <= x <= 10Greek alignment bullish score based on VIX regime (0-10)
0 <= x <= 10Greek alignment bearish score (0-10)
0 <= x <= 10ORB structure bullish score (trap/breakout patterns, 0-10)
0 <= x <= 10ORB structure bearish score (0-10)
0 <= x <= 10ORB proximity bullish score (0-10)
0 <= x <= 10ORB proximity bearish score (0-10)
0 <= x <= 10True if intraday circuit breaker gate passed (no severe decline)
Intraday return percentage: (last_price - pdc) / pdc * 100
Intraday return bullish component score (0-10)
0 <= x <= 10Intraday return bearish component score (0-10)
0 <= x <= 10True when RSI < 15 or RSI > 85 (extreme territory)
Timestamp when confluence scores were last computed (for staleness detection)
Active score warnings. Open-set vocabulary — consumers MUST default to pass-through on unknown values. Current known values: intraday_decline_severe, extreme_rsi, circuit_breaker_active, score_stale, conviction_stale. See app/documentation/ontology/SCORING_REGISTRY.md § Scoring Version Precedence.
Pulse bullish score (0-100): real-time intraday conviction
0 <= x <= 100Pulse bearish score (0-100): real-time intraday conviction
0 <= x <= 100Pulse net score (-100 to +100): pulse_bull - pulse_bear
-100 <= x <= 100Pulse directional bias: STRONG_LONG/MOD_LONG/NEUTRAL/MOD_SHORT/STRONG_SHORT
Timestamp when pulse scores were last computed (for staleness detection)
Timestamp when entry scores were last computed (for staleness detection)
ORB directional bias: bullish|bearish|neutral
Session dark pool volume percentage (0-1)
Number of block trades detected today
Buy/sell volume ratio (Lee-Ready tick rule)
Net buy volume (buy - sell)
Total dark pool volume today
Total lit exchange volume today
V5 regime state vector (shadow mode).
Show child attributes
Show child attributes
V5 confluence scoring with regime-conditioned weights (shadow mode).
Show child attributes
Show child attributes
V5 momentum health 4-axis composite (shadow mode).
Show child attributes
Show child attributes
Conviction meta-score (MSE real-time).
Show child attributes
Show child attributes
Pulse v5 real-time momentum.
Show child attributes
Show child attributes
Entry Score v2 execution timing.
Show child attributes
Show child attributes
Peer divergence via graph diffusion (heat kernel on multi-layer adjacency).
Show child attributes
Show child attributes
Structural theme exposures with direction, magnitude, and momentum
Show child attributes
Show child attributes
Timestamp of latest quote data (SLA: < 5 seconds)
Timestamp of latest 1-minute bar (SLA: < 5 minutes)
Timestamp of latest daily bar (SLA: < 4 hours during market)