---
title: "Get Option Contracts"
method: GET
path: "/v1/instruments/options/contracts"
tags: ["Instruments"]
---

# Get Option Contracts

`GET /v1/instruments/options/contracts`

## Request

- Base URL: `https://api.clearstreet.com`
- URL: `https://api.clearstreet.com/v1/instruments/options/contracts`
- Auth: HTTP bearer

List options contracts.

Returns options contracts with options-specific metadata. Exactly one
identifier must be provided: `root`/`underlying_instrument_id` (list
all contracts for that underlier) or `contract_ids` (look up specific
contracts directly). `expiry`/`contract_type` apply as filters in either
case.

## Query parameters

- `root` string
- `underlier` string
- `underlying_instrument_id` string: Instrument identifier: either an instrument UUID or a symbol (symbol for equities, OSI for options). Non-UUID inputs are resolved server-side.
- `contract_ids` InstrumentIdOrSymbol[]
- `expiry` string, date
- `contract_type` 'CALL' | 'PUT': The type of options contract
- `is_settle_on_open` boolean
- `page_size` integer
- `page_token` string, byte: Base64URL-encoded pagination token

## Response `200`

List of options contracts

- object
  - `error` ApiError: A direct mapping of tonic::Status, for use in HTTP responses.
    - `code` integer, required: The error code is used to identify the nature of the error. It corresponds to an HTTP status code.
    - `details` object[]
    - `message` string, required: A human-readable message providing more details about the error.
  - `metadata` ResponseMetadata, required: Metadata for the response. This will always contain a request ID which can be used to identify the request to Clear Street for tracing, and optionally may include pagination data.
    - `next_page_token` string, byte, nullable: Base64URL-encoded pagination token
    - `page_number` integer, nullable: Pagination. Included if this was a GET (list) response
    - `previous_page_token` string, byte, nullable: Base64URL-encoded pagination token
    - `request_id` string, required: A unique ID for this request, generated upon ingestion of the request.
    - `total_items` integer, nullable: Total number of items available (not just in this page).
    - `total_pages` integer, nullable: Total number of pages available.
  - `data` OptionsContract[], required
    - `contract_type` 'CALL' | 'PUT', required: The type of options contract
    - `currency` string, required: ISO currency code
    - `exchange` string, required: MIC code of the primary listing venue
    - `exercise_style` 'AMERICAN' | 'EUROPEAN', required: The exercise style of an options contract
    - `expiry` string, date, required: Expiration date
    - `id` string, uuid, required: Instrument identifier
    - `is_liquidation_only` boolean, required: Whether the contract is liquidation-only
    - `is_marginable` boolean, required: Whether the contract is marginable
    - `is_settle_on_open` boolean, nullable: Whether the option settles on the opening price (AM settlement), if known When a null/undefined value is observed, it indicates that there is no available data.
    - `is_tradable` boolean, required: Whether the contract is tradable
    - `last_trade_cutoff` string, date-time, nullable: Last moment the option can trade (UTC), if known When a null/undefined value is observed, it indicates that there is no available data.
    - `listing_type` 'STANDARD' | 'FLEX' | 'OTC', required: The listing type of an options contract
    - `multiplier` string, required: Contract multiplier (100 for standard options)
    - `open_interest` integer, nullable: Open interest (number of outstanding contracts), if available When a null/undefined value is observed, it indicates that there is no available data.
    - `strike_price` string, required: Strike price
    - `symbol` string, required: OSI symbol (e.g. "AAPL 251219C00150000")
    - `tick_rules` TickRule[]: Price bands this contract quotes on, ascending. Absent when our reference data never supplied the contract's penny-program status.
      - `end_price` string, nullable: Upper bound of the band, exclusive. Absent when the band runs to infinity. When a null/undefined value is observed, it indicates it does not apply.
      - `start_price` string, required: Lowest price in the band, inclusive.
      - `tick_size` string, required: Minimum price increment within the band.
    - `underlying_instrument_id` string, uuid, nullable: Instrument ID of the underlying instrument, when available When a null/undefined value is observed, it indicates that there is no available data.
    - `underlying_instrument_type` 'COMMON_STOCK' | 'INDEX' | 'OPTION' | 'CASH': Security type

## Other responses

- `400`: Invalid parameters
- `404`: Underlier not found
- `500`: Internal server error

## Changes

- **2026-10-30** `7e4b278ca27a`: 1 info
  - added the optional property `allOf[subschema #2]/data/items/underlying_instrument_type` to the response with the `200` status
- **2026-10-16** `1bd9eddeffc8`: 1 breaking, 8 info
  - for the `query` request parameter `underlying_instrument_id`, the minLength was increased from `0` to `1`
  - added the new optional `query` request parameter `contract_ids`
  - added the new optional `query` request parameter `is_settle_on_open`
  - added the new optional `query` request parameter `root`
  - …5 more
- **2026-07-14** `6ffc79452bbe`: 1 info
  - added the required property `allOf[subschema #2]/data/items/is_tradable` to the response with the `200` status
- **2026-07-14** `2d8a75e46de7`: 1 breaking
  - removed the required property `allOf[subschema #2]/data/items/is_tradable` from the response with the `200` status
- **2026-07-14** `6ffc79452bbe`: 1 info
  - added the required property `allOf[subschema #2]/data/items/is_tradable` to the response with the `200` status

[Operation history](https://skmtc.dev/clear-street/apis/clear-street-trading-api/changes/v1/instruments/options/contracts/get.md)

---

[API](https://skmtc.dev/clear-street/apis/clear-street-trading-api.md) - [All operations](https://skmtc.dev/clear-street/apis/clear-street-trading-api/llms.txt) - [OpenAPI document](https://skmtc.dev/clear-street/apis/clear-street-trading-api/revisions/52e77ea7d731?raw)
