List Future Options
getInstrumentsFutureOptions/instruments/future-optionsBase URL: https://api.cert.tastyworks.com (Sandbox) · https://api.tastyworks.com (Production)
Returns future option definitions for one or more symbols using tastytrade symbology (e.g. `./ESZ9 EW4U9 190927P2975`). You may filter by `option-root-symbol`, `expiration-date`, `option-type`, and `strike-price`, but these must be supplied together; `symbol` and `option-root-symbol` are mutually exclusive.
Code samples
curl -X GET 'https://api.cert.tastyworks.com/instruments/future-options?exchange=%7Bexchange%7D&expiration-date=2024-01-15&maturity-date=2024-01-15&option-root-symbol=EW1&option-type=C&security-id=%7Bsecurity-id%7D&strike-price=97.50&symbol[]=.%2FESZ9%20EW4U9%20190927P2975' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'User-Agent: tastytrade-docs-example/1.0'import requests
url = "https://api.cert.tastyworks.com/instruments/future-options?exchange=%7Bexchange%7D&expiration-date=2024-01-15&maturity-date=2024-01-15&option-root-symbol=EW1&option-type=C&security-id=%7Bsecurity-id%7D&strike-price=97.50&symbol[]=.%2FESZ9%20EW4U9%20190927P2975"
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/instruments/future-options?exchange=%7Bexchange%7D&expiration-date=2024-01-15&maturity-date=2024-01-15&option-root-symbol=EW1&option-type=C&security-id=%7Bsecurity-id%7D&strike-price=97.50&symbol[]=.%2FESZ9%20EW4U9%20190927P2975", {
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/instruments/future-options?exchange=%7Bexchange%7D&expiration-date=2024-01-15&maturity-date=2024-01-15&option-root-symbol=EW1&option-type=C&security-id=%7Bsecurity-id%7D&strike-price=97.50&symbol[]=.%2FESZ9%20EW4U9%20190927P2975", 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/instruments/future-options?exchange=%7Bexchange%7D&expiration-date=2024-01-15&maturity-date=2024-01-15&option-root-symbol=EW1&option-type=C&security-id=%7Bsecurity-id%7D&strike-price=97.50&symbol[]=.%2FESZ9%20EW4U9%20190927P2975"))
.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 |
|---|---|---|---|
| exchange | query | string | Name of the exchange for the product |
| expiration-date | query | string | Expiration date e.g. "2024-01-15" |
| maturity-date | query | string | Maturity date e.g. "2024-01-15" |
| option-root-symbol | query | string | Future option root, i.e. EW3 or SO e.g. "EW1" |
| option-type | query | string | P(ut) or C(all) enum: C, P e.g. "C" |
| security-id | query | array | Exchange-specific ID used for order routing (example: security-id[]={value1}&security-id[]={value2}) |
| strike-price | query | string | Strike price using display factor e.g. "97.50" |
| symbol | query | array | The symbol of the future option(s) (example: symbol[]={value1}&symbol[]={value2}) e.g. ["./ESZ9 EW4U9 190927P2975"] |
Responses
Example response
{
"data": {
"items": [
{
"active": true,
"days-to-expiration": 4,
"display-factor": "0.01",
"exchange": "CME",
"exercise-style": "American",
"expiration-date": "2023-08-03",
"expires-at": "2023-08-03T20:00:00.000+00:00",
"future-price-ratio": "100.00",
"is-closing-only": true,
"is-confirmed": true,
"is-exercisable-weekly": true,
"is-primary-deliverable": true,
"is-vanilla": true,
"last-trade-time": "string",
"maturity-date": "2023-08-03",
"multiplier": "1.0",
"notional-value": "0.5",
"option-root-symbol": "E1D",
"option-type": "P",
"product-code": "ES",
"root-symbol": "/ES",
"security-id": "abc123",
"settlement-type": "Future",
"stops-trading-at": "2023-08-03T20:00:00.000+00:00",
"streamer-symbol": "./E1DQ23P3860:XCME",
"strike-factor": "string",
"strike-price": "3860.0",
"symbol": "./ESU3 E1DQ3 230803P3860",
"underlying-count": "string",
"underlying-symbol": "/ESU3",
"future-option-product": {
"cash-settled": true,
"code": "string",
"display-factor": "string",
"exchange": "string",
"expiration-type": "string",
"is-am-settled": true,
"itm-rule": "string",
"market-sector": "string",
"product-subtype": "string",
"product-type": "string",
"root-symbol": "AAPL",
"settlement-delay-days": 0,
"supported": true
},
"exchange-symbol": "E1DQ3 P3860",
"security-exchange": "2",
"sx-id": "0"
}
]
},
"context": "/instruments/future-options",
"pagination": {
"per-page": 0,
"page-offset": 0,
"item-offset": 0,
"total-items": 0,
"total-pages": 0,
"current-item-count": 0
}
}Schema
datarequiredobjectitemsrequiredarray<object>{34 fields}
contextrequiredstringexample:
"/instruments/future-options"paginationobjectPaging metadata, present on paginated list responses.
per-pageintegerpage-offsetintegeritem-offsetintegertotal-itemsintegertotal-pagesintegercurrent-item-countinteger
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.
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": "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.