Flow Alert by ID
curl --request GET \
--url https://api.unusualwhales.com/api/option-trades/flow-alerts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/option-trades/flow-alerts/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.unusualwhales.com/api/option-trades/flow-alerts/{id}', 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.unusualwhales.com/api/option-trades/flow-alerts/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.unusualwhales.com/api/option-trades/flow-alerts/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.unusualwhales.com/api/option-trades/flow-alerts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/option-trades/flow-alerts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"alert": {
"all_opening_trades": false,
"ask": "2.1",
"bid": "1.85",
"created_at": "2026-03-11T15:17:55.477Z",
"end_time": 1773242266346,
"expiry": "2026-04-17T00:00:00.000Z",
"expiry_count": 1,
"has_floor": true,
"has_multileg": true,
"has_singleleg": false,
"has_sweep": false,
"id": "ae47f719-7131-4816-b9f5-8bd35de90ddc",
"iv_end": "0.520552934579374",
"iv_start": "0.520552934579374",
"open_interest": 5452,
"option_chain": "DINO260417C00060000",
"price": "2",
"rule_id": "d9769fb4-003b-49e4-9181-c78c9cc101f5",
"start_time": 1773242266346,
"strike": "60",
"ticker": "DINO",
"total_ask_side_prem": "474200",
"total_bid_side_prem": "0",
"total_premium": "474200",
"total_size": 2371,
"trade_count": 2,
"type": "call",
"underlying_price": "55.555",
"volume": 2505,
"volume_oi_ratio": "0.459464416727806"
},
"has_more": false,
"trades": [
{
"ask_vol": 2481,
"bid_vol": 19,
"canceled": false,
"delta": "0.1259692093444437",
"ewma_nbbo_ask": "0.65",
"ewma_nbbo_bid": "0.40",
"exchange": "ARCO",
"executed_at": "2026-03-11T15:17:46.346Z",
"expiry": "2026-04-17T00:00:00.000Z",
"gamma": "0.01998647589382455",
"id": "c382f142-c826-4e4a-8ab1-b23d8b8f926c",
"implied_volatility": "0.585444300420791",
"mid_vol": 0,
"multi_vol": 2500,
"nbbo_ask": "0.65",
"nbbo_bid": "0.40",
"no_side_vol": 0,
"open_interest": 2533,
"option_chain_id": "DINO260417C00070000",
"option_type": "call",
"premium": "142260.00",
"price": "0.60",
"report_flags": [
"futures_floor"
],
"rho": "0.00648586626657072",
"size": 2371,
"stock_multi_vol": 0,
"strike": "70",
"tags": [
"ask_side",
"bullish"
],
"theo": "0.599999999999996",
"theta": "-0.02899721099905604",
"underlying_price": "55.555",
"underlying_symbol": "DINO",
"upstream_condition_detail": "mlft",
"vega": "0.03660808151831155",
"volume": 2500
},
{
"ask_vol": 2376,
"bid_vol": 129,
"canceled": false,
"delta": "0.3518520218048382",
"ewma_nbbo_ask": "2.10",
"ewma_nbbo_bid": "1.85",
"exchange": "ARCO",
"executed_at": "2026-03-11T15:17:46.346Z",
"expiry": "2026-04-17T00:00:00.000Z",
"gamma": "0.04030489876911814",
"id": "dfa96f76-7311-4a78-9863-d56ad256781d",
"implied_volatility": "0.520552934579374",
"mid_vol": 0,
"multi_vol": 2501,
"nbbo_ask": "2.10",
"nbbo_bid": "1.85",
"no_side_vol": 0,
"open_interest": 5452,
"option_chain_id": "DINO260417C00060000",
"option_type": "call",
"premium": "474200.00",
"price": "2.00",
"report_flags": [
"futures_floor"
],
"rho": "0.01778751083946871",
"size": 2371,
"stock_multi_vol": 0,
"strike": "60",
"tags": [
"ask_side",
"bullish"
],
"theo": "2.000000000000004",
"theta": "-0.0462715923458194",
"underlying_price": "55.555",
"underlying_symbol": "DINO",
"upstream_condition_detail": "mlft",
"vega": "0.065641409398948",
"volume": 2505
}
]
}{
"code": "authentication_required",
"documentation_url": "https://api.unusualwhales.com/docs",
"expected_format": "uuid",
"message": "The API token provided is not in the expected format. Unusual Whales API tokens are UUIDs, such as 123e4567-e89b-12d3-a456-426614174000.",
"reason": "malformed_token",
"request_id": "GNI_YTC1CRnw2LACGBvE",
"retryable": false,
"support_email": "[email protected]",
"token_url": "https://unusualwhales.com/dashboard/api"
}{
"code": "missing_access",
"documentation_url": "https://api.unusualwhales.com/docs",
"message": "The API token provided is valid but is not permitted to access this route.",
"reason": "route_not_permitted",
"request_id": "GNI_YTC1CRnw2LACGBvE",
"retryable": false,
"support_email": "[email protected]",
"token_url": "https://unusualwhales.com/dashboard/api"
}{
"msg": "Invalid path input: MSFT12 (valid example: AAPL) - Invalid query input(s): date=2023-02-140 (valid example: date=2024-01-18)",
"path": "/api/darkpool/MSFT12",
"query": "date=2023-02-140",
"url": "localhost:4000/api/darkpool/MSFT12?date=2023-02-140"
}"Something went wrong"option-trade
Flow Alert by ID
Returns the trades that made up the specific alert. For multi leg flow alert trades it will return all the related multi leg trades. For alerts such as RepeatedHits it will return all the transactions that made up that alert.
GET
/
api
/
option-trades
/
flow-alerts
/
{id}
Flow Alert by ID
curl --request GET \
--url https://api.unusualwhales.com/api/option-trades/flow-alerts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/option-trades/flow-alerts/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.unusualwhales.com/api/option-trades/flow-alerts/{id}', 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.unusualwhales.com/api/option-trades/flow-alerts/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.unusualwhales.com/api/option-trades/flow-alerts/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.unusualwhales.com/api/option-trades/flow-alerts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/option-trades/flow-alerts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"alert": {
"all_opening_trades": false,
"ask": "2.1",
"bid": "1.85",
"created_at": "2026-03-11T15:17:55.477Z",
"end_time": 1773242266346,
"expiry": "2026-04-17T00:00:00.000Z",
"expiry_count": 1,
"has_floor": true,
"has_multileg": true,
"has_singleleg": false,
"has_sweep": false,
"id": "ae47f719-7131-4816-b9f5-8bd35de90ddc",
"iv_end": "0.520552934579374",
"iv_start": "0.520552934579374",
"open_interest": 5452,
"option_chain": "DINO260417C00060000",
"price": "2",
"rule_id": "d9769fb4-003b-49e4-9181-c78c9cc101f5",
"start_time": 1773242266346,
"strike": "60",
"ticker": "DINO",
"total_ask_side_prem": "474200",
"total_bid_side_prem": "0",
"total_premium": "474200",
"total_size": 2371,
"trade_count": 2,
"type": "call",
"underlying_price": "55.555",
"volume": 2505,
"volume_oi_ratio": "0.459464416727806"
},
"has_more": false,
"trades": [
{
"ask_vol": 2481,
"bid_vol": 19,
"canceled": false,
"delta": "0.1259692093444437",
"ewma_nbbo_ask": "0.65",
"ewma_nbbo_bid": "0.40",
"exchange": "ARCO",
"executed_at": "2026-03-11T15:17:46.346Z",
"expiry": "2026-04-17T00:00:00.000Z",
"gamma": "0.01998647589382455",
"id": "c382f142-c826-4e4a-8ab1-b23d8b8f926c",
"implied_volatility": "0.585444300420791",
"mid_vol": 0,
"multi_vol": 2500,
"nbbo_ask": "0.65",
"nbbo_bid": "0.40",
"no_side_vol": 0,
"open_interest": 2533,
"option_chain_id": "DINO260417C00070000",
"option_type": "call",
"premium": "142260.00",
"price": "0.60",
"report_flags": [
"futures_floor"
],
"rho": "0.00648586626657072",
"size": 2371,
"stock_multi_vol": 0,
"strike": "70",
"tags": [
"ask_side",
"bullish"
],
"theo": "0.599999999999996",
"theta": "-0.02899721099905604",
"underlying_price": "55.555",
"underlying_symbol": "DINO",
"upstream_condition_detail": "mlft",
"vega": "0.03660808151831155",
"volume": 2500
},
{
"ask_vol": 2376,
"bid_vol": 129,
"canceled": false,
"delta": "0.3518520218048382",
"ewma_nbbo_ask": "2.10",
"ewma_nbbo_bid": "1.85",
"exchange": "ARCO",
"executed_at": "2026-03-11T15:17:46.346Z",
"expiry": "2026-04-17T00:00:00.000Z",
"gamma": "0.04030489876911814",
"id": "dfa96f76-7311-4a78-9863-d56ad256781d",
"implied_volatility": "0.520552934579374",
"mid_vol": 0,
"multi_vol": 2501,
"nbbo_ask": "2.10",
"nbbo_bid": "1.85",
"no_side_vol": 0,
"open_interest": 5452,
"option_chain_id": "DINO260417C00060000",
"option_type": "call",
"premium": "474200.00",
"price": "2.00",
"report_flags": [
"futures_floor"
],
"rho": "0.01778751083946871",
"size": 2371,
"stock_multi_vol": 0,
"strike": "60",
"tags": [
"ask_side",
"bullish"
],
"theo": "2.000000000000004",
"theta": "-0.0462715923458194",
"underlying_price": "55.555",
"underlying_symbol": "DINO",
"upstream_condition_detail": "mlft",
"vega": "0.065641409398948",
"volume": 2505
}
]
}{
"code": "authentication_required",
"documentation_url": "https://api.unusualwhales.com/docs",
"expected_format": "uuid",
"message": "The API token provided is not in the expected format. Unusual Whales API tokens are UUIDs, such as 123e4567-e89b-12d3-a456-426614174000.",
"reason": "malformed_token",
"request_id": "GNI_YTC1CRnw2LACGBvE",
"retryable": false,
"support_email": "[email protected]",
"token_url": "https://unusualwhales.com/dashboard/api"
}{
"code": "missing_access",
"documentation_url": "https://api.unusualwhales.com/docs",
"message": "The API token provided is valid but is not permitted to access this route.",
"reason": "route_not_permitted",
"request_id": "GNI_YTC1CRnw2LACGBvE",
"retryable": false,
"support_email": "[email protected]",
"token_url": "https://unusualwhales.com/dashboard/api"
}{
"msg": "Invalid path input: MSFT12 (valid example: AAPL) - Invalid query input(s): date=2023-02-140 (valid example: date=2024-01-18)",
"path": "/api/darkpool/MSFT12",
"query": "date=2023-02-140",
"url": "localhost:4000/api/darkpool/MSFT12?date=2023-02-140"
}"Something went wrong"Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The UUID of the flow alert
Query Parameters
The unix time in milliseconds or seconds at which no newer results will be returned. Can be used with newer_than to paginate by time. Also accepts an ISO date or RFC 3339 datetime (example: 2024-01-25).
Example:
"1_715_083_417"
Last modified on September 29, 2026
Was this page helpful?
