---
title: "Select one contract by closest delta (no full-chain download)"
method: GET
path: "/api/v1/options/{symbol}/strike-by-delta"
tags: ["Options"]
---

# Select one contract by closest delta (no full-chain download)

`GET /api/v1/options/{symbol}/strike-by-delta`

Returns the single contract whose delta is CLOSEST to the requested target on the requested expiry - the 'which strike is the 25-delta call' answer as one small response instead of the ~256 KB full chain plus a client-side search. Delta is SIGNED: positive selects from calls, negative from puts; the optional ``right`` parameter must agree with the sign when given. Contracts whose implied volatility fails the shared plausibility gate (including the upstream's literal 0.0 no-data marker, API-1.8) or that carry no usable delta are EXCLUDED before selection and disclosed in the ``dropped_*`` counters, so a gated chain can never silently select an empty contract. Error codes match ``/snapshot``: ``unknown_symbol``, ``expiry_not_in_snapshot``, ``snapshot_not_available``. ``unknown_symbol`` covers two different situations, told apart by the ``reason`` field of the error body: a symbol that does not resolve on this platform, and one that resolves but is not among the underliers options data is collected for. The body names the size of that roster and the endpoint listing it.

## Path parameters

- `symbol` string, required — Underlier ticker.

## Query parameters

- `expiry` string, required — Expiry to select from (YYYY-MM-DD). Required - delta targeting is per-expiry.
- `delta` number, required — Target delta, SIGNED: calls in (0, 1), puts in (-1, 0). 0.25 = the 25-delta call; -0.25 = the 25-delta put.
- `right` string, nullable — Optional side. When given it must agree with the delta sign; when omitted the sign decides.
- `date` string, nullable — Optional snapshot date (YYYY-MM-DD). Defaults to the latest cycle.

## Response `200`

The closest-delta contract + selection disclosure.

- EnvelopeOptionsStrikeByDeltaPayload
  - `data` OptionsStrikeByDeltaPayload, required — One contract selected by closest delta - the answer to 'which strike is the 25-delta call' without downloading the ~256 KB full chain.
    - `symbol` string, required — Underlier ticker.
    - `snapshot_date` string, required — Snapshot date the selection was made on (YYYY-MM-DD).
    - `underlier_price` number, nullable — Underlier spot at snapshot time.
    - `expiry` string, required — Expiry the contract was selected from (YYYY-MM-DD).
    - `option_type` string, required — C (call) or P (put), per OCC convention.
    - `target_delta` number, required — The requested delta, signed (calls positive, puts negative).
    - `delta_distance` number, required — |contract.delta - target_delta| for the selected contract - how close the chain could get.
    - `contract` OptionContract, required — One options contract row inside an expiry block.
      - `strike` number, required — Strike price.
      - `last_price` number, nullable — Last traded price; null when no trades.
      - `bid` number, nullable — Best bid; null when no quote.
      - `ask` number, nullable — Best ask; null when no quote.
      - `volume` integer, nullable — Contracts traded since open.
      - `open_interest` integer, nullable — Outstanding open interest.
      - `implied_volatility` number, nullable — Implied volatility as a decimal (0.20 = 20%). Null when upstream missing.
      - `delta` number, nullable — Black-Scholes delta (per 1.00 underlier move). Null when IV gate triggered.
      - `gamma` number, nullable — Black-Scholes gamma. Null when IV gate triggered.
      - `theta` number, nullable — Black-Scholes theta per calendar day. Null when IV gate triggered.
      - `vega` number, nullable — Black-Scholes vega per 1% vol point. Null when IV gate triggered.
      - `rho` number, nullable — Black-Scholes rho per 1% rate point. Null when IV gate triggered.
      - `in_the_money` boolean, nullable — True when strike is in-the-money at snapshot time.
      - `contract_symbol` string, nullable — OCC OSI contract symbol.
      - `last_trade_date` string, nullable — ISO timestamp of last trade; null when no trades since open.
      - `option_type` string, required — C (call) or P (put) per OCC convention.
      - `greeks_source` string, nullable — Per-contract Greeks origin token. Categories: equity IV/Black-Scholes zero-div path, non-equity IV/BS caveat path, exchange-native Greeks (e.g. VIX), or unreliable when the IV gate rejects the input. Wire values are stable tokens (see response payload); do not treat the token string as a brand name.
    - `contracts_considered` integer, required — Contracts on the requested side of the expiry that entered selection AFTER the reliability filter.
    - `dropped_unreliable_iv` integer, required — Contracts EXCLUDED before selection because their implied volatility failed the shared plausibility gate (incl. the upstream's literal 0.0 no-data marker, API-1.8). Disclosed so a gated chain can never silently select an empty contract.
    - `dropped_missing_delta` integer, required — Contracts EXCLUDED before selection because they carry no usable delta.
  - `meta` SugraMeta, required — Metadata attached to every /api/v1/* response envelope.
    - `endpoint` string, required — Requested endpoint path.
    - `data_time` string, required — ISO 8601 UTC timestamp of the source data, not of the request.
    - `response_time` string, required — ISO 8601 UTC timestamp when this response was produced.
    - `provider` string, required — API name and version.
    - `source` string, nullable — Identifier of the primary upstream source used for this response.
    - `attribution` string, nullable — Human-readable attribution mandated by an upstream source (e.g. a securities regulator or self-regulatory organization). Present only on responses whose source requires the owner and source to be clearly identified. Do not remove or alter it when using the response.
    - `fallback_used` boolean, nullable — True when the primary source failed and a fallback produced the data.
    - `fallback_chain` string[], nullable — Ordered list of sources attempted, in the order they were tried.
    - `cached` boolean, nullable — True when this response was served from the internal cache.
    - `stale` boolean, nullable — True when the cached response was returned after the upstream rate-limited or errored. Clients can use this to detect degraded data.

## Other responses

- `401` — Missing or invalid `x-api-key` header. JSON body with a stable `code` distinguishing `missing_api_key` (no header sent) from `invalid_api_key` (header sent, key not accepted); any other 401 source carries the generic `unauthorized` with its detail as `reason`. Plus `hint`. `plan` is always null on 401 - an unauthenticated request has no plan; quota exhaustion is 429, not 401.
- `422` — Validation Error
- `429` — Daily rate limit exceeded. Check `X-RateLimit-Reset` for the next window.
- `503` — Upstream source is temporarily unavailable. Retry after a short delay.

---

[API](https://skmtc.net/sugra/apis/sugra-api.md) · [All operations](https://skmtc.net/sugra/apis/sugra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sugra/sugra-api/revisions/652554d2aae1/schema)
