---
title: "Contracts with significant OI changes"
method: GET
path: "/v1/contract/unusual-oi"
tags: ["Contract"]
---

# Contracts with significant OI changes

`GET /v1/contract/unusual-oi`

Contracts whose open interest changed by at least
`min_oi_change` (or `min_oi_change_pct`) on the target date. `direction`
narrows the result to opening (OI ↑) or closing (OI ↓) flow.

## Query parameters

- `limit` integer
- `min_oi_change` integer
- `min_oi_change_pct` number, double
- `ticker` string
- `right` 'C' | 'P'
- `min_dte` integer
- `max_dte` integer
- `min_premium` number, double
- `min_volume` integer
- `date` string, date
- `order_by` 'oi_change' | 'oi_change_pct' | 'volume' | 'premium'
- `direction` 'opening' | 'closing' | 'both'
- `only_sweeps` boolean
- `only_multi_leg` boolean
- `exclude_multi_leg` boolean

## Response `200`

Contracts ranked by OI change.

- UnusualOiListSuccess
  - `data` UnusualOiItem[], required
    - `symbol` string, required
    - `ticker` string, required
    - `expiration` string, date, required
    - `strike` number, double, required
    - `right` 'C' | 'P', required
    - `dte` integer, required
    - `date` string, date, required
    - `openInterest` integer, required
    - `prevOi` integer, required
    - `oiChange` integer, required
    - `oiChangePct` number, double, required
    - `volume` integer, required
    - `premium` number, double, required
    - `volumeOiRatio` number, double, required
    - `bidVolume` integer, required
    - `askVolume` integer, required
    - `lastPrice` number, double, required
    - `underlyingPrice` number, double, required
    - `iv` number, double, required
    - `positionType` 'opening' | 'closing', required
    - `sweepVolume` integer, required
    - `sweepPremium` number, double, required
    - `multiLegVolume` integer, required
    - `multiLegPremium` number, double, required
  - `meta` Meta, required
    - `timestamp` string, date-time, required — Server-side timestamp the response was generated at.
    - `requestId` string, required — Short opaque ID for log correlation.

## Other responses

- `400` — Request validation failed.
- `401` — Missing or invalid API key.
- `402` — The account's shared Skylit credit balance is lower than this route's cost. Top up to continue. Carries `X-Credits-Remaining: 0`.
- `429` — Per-minute rate limit exceeded.

---

[API](https://skmtc.net/skylit/apis/flowseeker-skylit-public-api.md) · [All operations](https://skmtc.net/skylit/apis/flowseeker-skylit-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skylit/flowseeker-skylit-public-api/revisions/3280190b1b24/schema)
