curl --request GET \
--url 'https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>' \
--header 'Authorization: Bearer <api-key>'import requests
url = "https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>"
headers = {"Authorization": "Bearer <api-key>"}
response = requests.get(url, headers=headers)
print(response.json())const url = "https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>";
const options = {
method: "GET",
headers: { Authorization: "Bearer <api-key>" },
};
const response = await fetch(url, options);
const data = await response.json();
console.log(data);<?php
$ch = curl_init("https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer <api-key>"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>", nil)
req.Header.Set("Authorization", "Bearer <api-key>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>"))
.header("Authorization", "Bearer <api-key>")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());require "net/http"
require "uri"
uri = URI("https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer <api-key>"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts response.body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}market session breakout by levels
Computes the session 1 range, then counts how often session 2 reaches each of 8 breakout levels above the session 1 high (0.5x to 4.0x of range) and 8 breakdown levels below the session 1 low (-0.5x to -4.0x). Returns per-level counts and percentages plus a per-day detail table with max bullish and bearish levels reached. Configurable via session windows, breakout and breakdown level multipliers, seperate_days (compare session 1 to next-day session 2), and days_to_use (weekday filter).
curl --request GET \
--url 'https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>' \
--header 'Authorization: Bearer <api-key>'import requests
url = "https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>"
headers = {"Authorization": "Bearer <api-key>"}
response = requests.get(url, headers=headers)
print(response.json())const url = "https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>";
const options = {
method: "GET",
headers: { Authorization: "Bearer <api-key>" },
};
const response = await fetch(url, options);
const data = await response.json();
console.log(data);<?php
$ch = curl_init("https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer <api-key>"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>", nil)
req.Header.Set("Authorization", "Bearer <api-key>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>"))
.header("Authorization", "Bearer <api-key>")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());require "net/http"
require "uri"
uri = URI("https://api.edgeful.com/report_calculation/market-session-breakout-by-levels/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer <api-key>"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts response.body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Use your Edgeful API key as the bearer token. In the API Reference authorization drawer, paste only the key (for example, ef_live_<random>).
Path Parameters
ticker symbol. format varies by market_type: stocks use a plain symbol (e.g., SPY), forex uses a 6-character pair (e.g., EURUSD), crypto uses a contract pair (e.g., BTCUSD), futures uses the root symbol (e.g., ES).
"SPY"
"EURUSD"
"BTCUSD"
"ES"
market venue for the ticker, one of forex, futures, crypto. stock is not supported for this report.
forex, futures, crypto "futures"
"forex"
Query Parameters
session 1 start time, HH:MM:SS, interpreted in session1_timezone. defines the range whose high and low anchor the breakout/breakdown levels. defaults to the London session.
session 1 end time, HH:MM:SS, interpreted in session1_timezone.
IANA timezone used to interpret session 1 times. defaults to Europe/London.
session 2 start time, HH:MM:SS, interpreted in session2_timezone. session 2 is the window where level interactions are measured. defaults to the New York session.
session 2 end time, HH:MM:SS, interpreted in session2_timezone.
IANA timezone used to interpret session 2 times. defaults to America/New_York.
when true, treats session 1 and session 2 as falling on separate calendar days; when false, both sessions belong to the same calendar day.
inclusive start date, YYYY-MM-DD, interpreted in the request timezone. sessions on or after this date are included in the calculation.
"2024-01-01"
inclusive end date, YYYY-MM-DD, interpreted in the request timezone. sessions on or before this date are included in the calculation.
"2024-12-31"
first upside level above session 1 high, expressed as a multiple of the session 1 range.
second upside level above session 1 high, as a multiple of the session 1 range.
third upside level above session 1 high, as a multiple of the session 1 range.
fourth upside level above session 1 high, as a multiple of the session 1 range.
fifth upside level above session 1 high, as a multiple of the session 1 range.
sixth upside level above session 1 high, as a multiple of the session 1 range.
seventh upside level above session 1 high, as a multiple of the session 1 range.
eighth upside level above session 1 high, as a multiple of the session 1 range.
first downside level below session 1 low, expressed as a negative multiple of the session 1 range.
second downside level below session 1 low, as a negative multiple of the session 1 range.
third downside level below session 1 low, as a negative multiple of the session 1 range.
fourth downside level below session 1 low, as a negative multiple of the session 1 range.
fifth downside level below session 1 low, as a negative multiple of the session 1 range.
sixth downside level below session 1 low, as a negative multiple of the session 1 range.
seventh downside level below session 1 low, as a negative multiple of the session 1 range.
eighth downside level below session 1 low, as a negative multiple of the session 1 range.
weekday filter limiting the calculation to specific sessions (e.g., ['Monday', 'Friday']). when omitted, all weekdays are included.
Response
Successful Response
Was this page helpful?