## Get Option Contracts `client.V1.Instruments.GetOptionContracts(ctx, query) (*V1InstrumentGetOptionContractsResponse, error)` **get** `/v1/instruments/options/contracts` List options contracts. Returns options contracts for a given underlier with options-specific metadata. Exactly one underlier identifier must be provided. ### Parameters - `query V1InstrumentGetOptionContractsParams` - `ContractType param.Field[ContractType]` Filter by contract type: CALL or PUT - `Expiry param.Field[Time]` Filter to contracts expiring on this date (YYYY-MM-DD) - `PageSize param.Field[int64]` The number of items to return per page. Only used when page_token is not provided. - `PageToken param.Field[string]` Token for retrieving the next or previous page of results. Contains encoded pagination state; when provided, page_size is ignored. - `Underlier param.Field[string]` Underlier symbol (e.g., AAPL, SPX) - `UnderlyingInstrumentID param.Field[InstrumentIDOrSymbol]` OEMS instrument UUID or symbol of the underlying equity/index ### Returns - `type V1InstrumentGetOptionContractsResponse struct{…}` - `Data OptionsContractList` - `ID string` OEMS instrument identifier - `ContractType ContractType` Whether this is a CALL or PUT - `const ContractTypeCall ContractType = "CALL"` - `const ContractTypePut ContractType = "PUT"` - `Currency string` ISO currency code - `Exchange string` MIC code of the primary listing venue - `ExerciseStyle ExerciseStyle` Exercise style - `const ExerciseStyleAmerican ExerciseStyle = "AMERICAN"` - `const ExerciseStyleEuropean ExerciseStyle = "EUROPEAN"` - `Expiry Time` Expiration date - `IsLiquidationOnly bool` Whether the contract is liquidation-only - `IsMarginable bool` Whether the contract is marginable - `IsRestricted bool` Whether the contract is restricted from trading - `ListingType ListingType` Listing type - `const ListingTypeStandard ListingType = "STANDARD"` - `const ListingTypeFlex ListingType = "FLEX"` - `const ListingTypeOtc ListingType = "OTC"` - `Multiplier string` Contract multiplier (100 for standard options) - `StrikePrice string` Strike price - `Symbol string` OSI symbol (e.g. "AAPL 251219C00150000") - `OpenInterest int64` Open interest (number of outstanding contracts), if available - `UnderlyingInstrumentID string` OEMS instrument ID of the underlying instrument, if resolvable ### Example ```go package main import ( "context" "fmt" "github.com/clear-street/clear-street-go" "github.com/clear-street/clear-street-go/option" ) func main() { client := clearstreet.NewClient( option.WithAPIKey("My API Key"), ) response, err := client.V1.Instruments.GetOptionContracts(context.TODO(), clearstreet.V1InstrumentGetOptionContractsParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response) } ``` #### Response ```json { "data": [ { "contract_type": "CALL", "currency": "USD", "exchange": "BATO", "exercise_style": "AMERICAN", "expiry": "2026-03-20", "id": "b6f4b5e2-94a8-4fe4-9a85-2b4a81d30cc5", "is_liquidation_only": false, "is_marginable": true, "is_restricted": false, "is_tradable": true, "listing_type": "STANDARD", "multiplier": "100", "strike_price": "180", "symbol": "AAPL 260320C00180000", "underlying_instrument_id": "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8" }, { "contract_type": "PUT", "currency": "USD", "exchange": "BATO", "exercise_style": "AMERICAN", "expiry": "2026-03-20", "id": "c7e5c6f3-a5b9-5gf5-0b96-3c5b92e41dd6", "is_liquidation_only": false, "is_marginable": true, "is_restricted": false, "is_tradable": true, "listing_type": "STANDARD", "multiplier": "100", "strike_price": "180", "symbol": "AAPL 260320P00180000", "underlying_instrument_id": "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8" } ], "metadata": { "page_number": 1, "request_id": "c2d0429d-c629-4ee1-b719-df007157f3bb", "total_items": 2, "total_pages": 1 } } ```