Get volume nodes with profile context
curl --request GET \
--url https://api.example.com/api/graph/v1/volume-nodes/{symbol}/contextimport requests
url = "https://api.example.com/api/graph/v1/volume-nodes/{symbol}/context"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/graph/v1/volume-nodes/{symbol}/context', 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/volume-nodes/{symbol}/context",
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/volume-nodes/{symbol}/context"
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/volume-nodes/{symbol}/context")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/volume-nodes/{symbol}/context")
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{
"symbol": "<string>",
"trade_date": "2023-12-25",
"session_type": "<string>",
"poc": "<string>",
"vah": "<string>",
"val": "<string>",
"profile_shape": "<string>",
"hvn_nodes": [
{
"symbol": "<string>",
"trade_date": "2023-12-25",
"node_type": "HVN",
"price_low": "<string>",
"price_high": "<string>",
"price_mid": "<string>",
"node_volume": 123,
"bucket_count": 123,
"z_score": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_type": "prior",
"node_volume_pct": "<string>",
"avg_bucket_volume": 123,
"node_rank": 123,
"overlaps_value_area": false,
"contains_poc": false,
"computed_at": "2023-11-07T05:31:56Z"
}
],
"lvn_nodes": [
{
"symbol": "<string>",
"trade_date": "2023-12-25",
"node_type": "HVN",
"price_low": "<string>",
"price_high": "<string>",
"price_mid": "<string>",
"node_volume": 123,
"bucket_count": 123,
"z_score": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_type": "prior",
"node_volume_pct": "<string>",
"avg_bucket_volume": 123,
"node_rank": 123,
"overlaps_value_area": false,
"contains_poc": false,
"computed_at": "2023-11-07T05:31:56Z"
}
],
"hvn_count": 0,
"lvn_count": 0,
"strongest_hvn": {
"symbol": "<string>",
"trade_date": "2023-12-25",
"node_type": "HVN",
"price_low": "<string>",
"price_high": "<string>",
"price_mid": "<string>",
"node_volume": 123,
"bucket_count": 123,
"z_score": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_type": "prior",
"node_volume_pct": "<string>",
"avg_bucket_volume": 123,
"node_rank": 123,
"overlaps_value_area": false,
"contains_poc": false,
"computed_at": "2023-11-07T05:31:56Z"
},
"strongest_lvn": {
"symbol": "<string>",
"trade_date": "2023-12-25",
"node_type": "HVN",
"price_low": "<string>",
"price_high": "<string>",
"price_mid": "<string>",
"node_volume": 123,
"bucket_count": 123,
"z_score": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_type": "prior",
"node_volume_pct": "<string>",
"avg_bucket_volume": 123,
"node_rank": 123,
"overlaps_value_area": false,
"contains_poc": false,
"computed_at": "2023-11-07T05:31:56Z"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Volume Nodes
Get volume nodes with profile context
Get volume nodes with full volume profile context (POC, VAH, VAL).
Returns detected HVN and LVN nodes grouped by type, along with:
- **POC** (Point of Control): Price level with highest traded volume
- **VAH** (Value Area High): Upper boundary of 70% volume area
- **VAL** (Value Area Low): Lower boundary of 70% volume area
Also includes:
- Strongest HVN and LVN by volume
- Node counts by type
## Use Cases
- Identify key support/resistance levels for entry/exit planning
- Find breakout zones where price may move quickly
- Combine with institutional levels for confluence analysis
## Performance Target
<200ms response time.
GET
/
api
/
graph
/
v1
/
volume-nodes
/
{symbol}
/
context
Get volume nodes with profile context
curl --request GET \
--url https://api.example.com/api/graph/v1/volume-nodes/{symbol}/contextimport requests
url = "https://api.example.com/api/graph/v1/volume-nodes/{symbol}/context"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/graph/v1/volume-nodes/{symbol}/context', 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/volume-nodes/{symbol}/context",
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/volume-nodes/{symbol}/context"
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/volume-nodes/{symbol}/context")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/volume-nodes/{symbol}/context")
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{
"symbol": "<string>",
"trade_date": "2023-12-25",
"session_type": "<string>",
"poc": "<string>",
"vah": "<string>",
"val": "<string>",
"profile_shape": "<string>",
"hvn_nodes": [
{
"symbol": "<string>",
"trade_date": "2023-12-25",
"node_type": "HVN",
"price_low": "<string>",
"price_high": "<string>",
"price_mid": "<string>",
"node_volume": 123,
"bucket_count": 123,
"z_score": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_type": "prior",
"node_volume_pct": "<string>",
"avg_bucket_volume": 123,
"node_rank": 123,
"overlaps_value_area": false,
"contains_poc": false,
"computed_at": "2023-11-07T05:31:56Z"
}
],
"lvn_nodes": [
{
"symbol": "<string>",
"trade_date": "2023-12-25",
"node_type": "HVN",
"price_low": "<string>",
"price_high": "<string>",
"price_mid": "<string>",
"node_volume": 123,
"bucket_count": 123,
"z_score": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_type": "prior",
"node_volume_pct": "<string>",
"avg_bucket_volume": 123,
"node_rank": 123,
"overlaps_value_area": false,
"contains_poc": false,
"computed_at": "2023-11-07T05:31:56Z"
}
],
"hvn_count": 0,
"lvn_count": 0,
"strongest_hvn": {
"symbol": "<string>",
"trade_date": "2023-12-25",
"node_type": "HVN",
"price_low": "<string>",
"price_high": "<string>",
"price_mid": "<string>",
"node_volume": 123,
"bucket_count": 123,
"z_score": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_type": "prior",
"node_volume_pct": "<string>",
"avg_bucket_volume": 123,
"node_rank": 123,
"overlaps_value_area": false,
"contains_poc": false,
"computed_at": "2023-11-07T05:31:56Z"
},
"strongest_lvn": {
"symbol": "<string>",
"trade_date": "2023-12-25",
"node_type": "HVN",
"price_low": "<string>",
"price_high": "<string>",
"price_mid": "<string>",
"node_volume": 123,
"bucket_count": 123,
"z_score": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_type": "prior",
"node_volume_pct": "<string>",
"avg_bucket_volume": 123,
"node_rank": 123,
"overlaps_value_area": false,
"contains_poc": false,
"computed_at": "2023-11-07T05:31:56Z"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Path Parameters
Query Parameters
Date (defaults to most recent with data)
Session type: prior or developing
Sigma above mean for HVN classification
Required range:
0 <= x <= 3Sigma below mean for LVN classification
Required range:
-3 <= x <= 0Minimum contiguous buckets for a valid node
Required range:
1 <= x <= 10Response
Volume nodes with context
Volume nodes with full volume profile context.
Point of Control
Pattern:
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Value Area High
Pattern:
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Value Area Low
Pattern:
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Volume distribution shape: normal, p_shaped, d_shaped, b_shaped
High Volume Nodes (support/resistance)
Show child attributes
Show child attributes
Low Volume Nodes (breakout zones)
Show child attributes
Show child attributes
Number of HVN nodes detected
Number of LVN nodes detected
Most significant HVN by volume
Show child attributes
Show child attributes
Most significant LVN by volume
Show child attributes
Show child attributes