Get an option contract
One contract by id, with its latest observed quote and its latest Greeks. Returns 404 for an unknown contract id - never an invented contract. The same Greeks honesty contract as the chain endpoint applies: provider Greeks are observations, computed Greeks carry their model and inputs, and a contract with neither is returned quote-only with the missing inputs named.
One contract by id, with its latest observed quote and its latest Greeks. Returns 404 for an unknown contract id - never an invented contract. The same Greeks honesty contract as the chain endpoint applies: provider Greeks are observations, computed Greeks carry their model and inputs, and a contract with neither is returned quote-only with the missing inputs named.
Authorization
ApiKeyAuth options:readPresent your API key as a bearer token: Authorization: Bearer pk_live_....
Two environments are issued per account. A pk_test_ sandbox key returns the SAME real historical data as a live key and does NOT consume your LIVE allowance, so learning the API is free. It has its own separate windows and can be rate limited on them. A pk_live_ key reads against your allowance.
Keys carry explicit scopes (instruments:read, prices:read, actions:read, fx:read, earnings:read, options:read, news:read, sentiment:read, events:read, analytics:read, correlations:read, technicals:read, macro:read) and are enforced fail-closed, so a leaked key is bounded to what it was issued for. Revocation is immediate.
In: header
Scope: options:read
Path Parameters
Option contract identifier (UUID).
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/options/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "data": { "contract": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "instrumentId": "48367a03-b541-4ea7-88a6-ae604df75c64", "contractSymbol": "string", "expiry": "string", "strike": 0, "right": "call", "multiplier": -9007199254740991, "isActive": true }, "quote": { "bid": 0, "ask": 0, "lastPrice": 0, "volume": 0, "openInterest": 0, "asOf": "string", "source": "string" }, "greeks": { "delta": 0, "gamma": 0, "theta": 0, "vega": 0, "rho": 0, "impliedVolatility": 0, "asOf": "string", "greeksSource": "provider", "model": { "name": "string", "spotPrice": 0, "riskFreeRate": 0, "dividendYield": 0 } }, "greeksUnavailable": { "reason": "not_supplied_and_not_computable", "missingInputs": [ "spotPrice" ], "detail": "string" } }, "meta": { "asOf": "string", "source": "string", "stale": true }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}Get a macro time series GET
A FRED macro time series (e.g. DGS10, CPIAUCSL, VIXCLS) with its title, units, native frequency and dated observations in ascending order, optionally bounded by start and end. The series id MUST be on the published allowlist - an unknown id is rejected with invalid_request rather than proxied, so this is never an open FRED gateway. FRED encodes a missing observation as "." and those rows are OMITTED rather than coerced to 0, so a gap never reads as a real zero. When no FRED API key is configured the endpoint returns a typed unavailable error rather than a fabricated series.
Get the risk-free rate GET
The current annualized risk-free (Treasury) rate as a decimal, with an honest source tag: source=fred is a live observation, source=fallback means the live source was unreachable (or no FRED API key is configured) and a last-known or hardcoded rate is standing in. maturity names the Treasury term and asOf dates the observation. A caller can always tell a live rate from a degraded stand-in rather than being handed a number that silently drifted.