API Reference / Market Metrics
Get Market Metrics By Symbols
getMarketMetricsIndex/market-metricsBase URL: https://api.cert.tastyworks.com (Sandbox) · https://api.tastyworks.com (Production)
Returns volatility and liquidity metrics for one or more underlyings in a single read-only request. Pass a comma-separated `symbols` query list (e.g. `?symbols=AAPL,FB,BRK%2FB`); each underlying is returned as a `MarketMetricInfo` object including IV index, IV rank/percentile, liquidity ratings, and per-expiration option implied volatilities. This is a snapshot endpoint.
Code samples
curl -X GET 'https://api.cert.tastyworks.com/market-metrics?symbols=AAPL%2CFB%2CBRK%2FB' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'User-Agent: tastytrade-docs-example/1.0'import requests
url = "https://api.cert.tastyworks.com/market-metrics?symbols=AAPL%2CFB%2CBRK%2FB"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"User-Agent": "tastytrade-docs-example/1.0",
}
resp = requests.get(url, headers=headers)
print(resp.status_code, resp.json())const resp = await fetch("https://api.cert.tastyworks.com/market-metrics?symbols=AAPL%2CFB%2CBRK%2FB", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"User-Agent": "tastytrade-docs-example/1.0",
},
})
const data = await resp.json()
console.log(resp.status, data)package main
import (
"net/http"
"io"
"fmt"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.cert.tastyworks.com/market-metrics?symbols=AAPL%2CFB%2CBRK%2FB", nil)
req.Header.Set("Authorization", "Bearer YOUR_ACCESS_TOKEN")
req.Header.Set("User-Agent", "tastytrade-docs-example/1.0")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(resp.Status, string(out))
}import java.net.URI;
import java.net.http.*;
HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.cert.tastyworks.com/market-metrics?symbols=AAPL%2CFB%2CBRK%2FB"))
.header("Authorization", "Bearer YOUR_ACCESS_TOKEN")
.header("User-Agent", "tastytrade-docs-example/1.0")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode() + " " + resp.body());Parameters
| Name | In | Type | Description |
|---|---|---|---|
| symbols* | query | string | Comma separated list of symbols i.e. ?symbols=AAPL,FB,BRK%2FB e.g. "AAPL,FB,BRK/B" |
Responses
Example response
{
"data": {
"items": [
{
"symbol": "AAPL",
"implied-volatility-index": "0.3125",
"implied-volatility-index-5-day-change": "-0.0182",
"implied-volatility-percentile": "0.5210",
"liquidity-rank": "0.8123",
"liquidity-rating": 4,
"option-expiration-implied-volatilities": [
{
"expiration-date": "2025-02-14",
"settlement-type": "PM",
"option-chain-type": "Standard",
"implied-volatility": "0.3011",
"option-root-symbol": "EX3"
}
],
"implied-volatility-index-15-day": "0.2980",
"implied-volatility-index-rank": "0.4567",
"tos-implied-volatility-index-rank": "0.4567",
"tw-implied-volatility-index-rank": "0.4021",
"tos-implied-volatility-index-rank-updated-at": "2025-02-10T15:36:32.792Z",
"implied-volatility-index-rank-source": "tos",
"implied-volatility-updated-at": "2025-02-10T14:48:43.831Z",
"liquidity-value": "12345.67",
"created-at": "2025-01-20T18:02:42.831Z",
"updated-at": "2025-02-10T15:36:32.971Z",
"liquidity-running-state": {
"sum": "234567.73",
"count": 19,
"started-at": "2025-02-03T10:00:17.388Z",
"updated-at": "2025-02-10T14:48:43.831Z"
},
"beta": "1.2544",
"beta-updated-at": "2025-02-04T17:00:47.320Z",
"corr-spy-3month": "0.55",
"dividend-rate-per-share": "0.25",
"annual-dividend-per-share": "1.00",
"dividend-yield": "0.0045",
"dividend-ex-date": "2025-02-10",
"dividend-next-date": "2025-05-12",
"dividend-pay-date": "2025-02-13",
"dividend-updated-at": "2025-02-10T09:00:00.000Z",
"earnings": {
"visible": true,
"expected-report-date": "2025-04-24",
"estimated": false,
"time-of-day": "AMC",
"late-flag": 0,
"quarter-end-date": "2025-03-29",
"actual-eps": "1.64",
"consensus-estimate": "1.60",
"updated-at": "2025-01-30T13:00:16.249Z"
},
"listed-market": "XNAS",
"lendability": "Easy To Borrow",
"borrow-rate": "0.25",
"market-cap": 3400000000000,
"implied-volatility-30-day": "31.40",
"historical-volatility-30-day": "24.17",
"historical-volatility-60-day": "26.82",
"historical-volatility-90-day": "27.08",
"iv-hv-30-day-difference": "7.23",
"price-earnings-ratio": "34.20",
"earnings-per-share": "6.43",
"sector": "Technology",
"industry": "Consumer Electronics"
}
]
},
"context": "/market-metrics",
"pagination": {
"per-page": 0,
"page-offset": 0,
"item-offset": 0,
"total-items": 0,
"total-pages": 0,
"current-item-count": 0
}
}Schema
datarequiredobjectitemsrequiredarray<object>{42 fields}
contextrequiredstringexample:
"/market-metrics"paginationobjectPaging metadata, present on paginated list responses.
per-pageintegerpage-offsetintegeritem-offsetintegertotal-itemsintegertotal-pagesintegercurrent-item-countinteger
Example response
{
"error": {
"code": "unauthorized",
"message": "No valid access token was provided; access tokens expire after 15 minutes."
}
}Schema
errorrequiredobjectcoderequiredstringMachine-readable error code (see the Error reference).
messagerequiredstringHuman-readable explanation.
errorsarray<object>{3 fields}Present for multi-error / validation failures; one entry per problem.
Example response
{
"error": {
"code": "not_permitted",
"message": "User not permitted access"
}
}Schema
errorrequiredobjectcoderequiredstringMachine-readable error code (see the Error reference).
messagerequiredstringHuman-readable explanation.
errorsarray<object>{3 fields}Present for multi-error / validation failures; one entry per problem.
Example response
{
"error": {
"code": "preflight_check_failure",
"message": "One or more preflight checks failed",
"errors": [
{
"code": "preflight_check_failure",
"message": "A specific validation failed for this order."
}
]
}
}Schema
errorrequiredobjectcoderequiredstringMachine-readable error code (see the Error reference).
messagerequiredstringHuman-readable explanation.
errorsarray<object>{3 fields}Present for multi-error / validation failures; one entry per problem.
Example response
{
"error": {
"code": "string",
"message": "string",
"errors": [
{
"code": "string",
"message": "string",
"domain": "string"
}
]
}
}Schema
errorrequiredobjectcoderequiredstringMachine-readable error code (see the Error reference).
messagerequiredstringHuman-readable explanation.
errorsarray<object>{3 fields}Present for multi-error / validation failures; one entry per problem.
Related
- Rate-limit class:
read· idempotent — Rate limits & backoff - Error reference — codes, causes, and fixes
Agents: this page is also Markdown (with the embedded OpenAPI definition) — append .md or send Accept: text/markdown. Index at /llms.txt.