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. determines supported symbols and whether session-based intraday aggregation is available.
forex, futures, crypto, stock "stock"
"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?