Raw enriched trades for a ticker
https://api.skylit.ai/v1/underlying/{ticker}/tradesReturns the raw enriched trade rows that feed the chart bars and
the live feed. Supports rich filtering — sweep-only / multi-leg,
moneyness, premium floor, DTE / strike / expiration windows.
See OptionTradeRow below.
Authorization
Authorization: Bearer <your API key>Required. A missing header returns 401; an invalid, revoked or expired key returns 403.
Path parameters
tickerstringrequiredUnderlying ticker symbol (uppercase, e.g.
SPY,AAPL).
Query parameters
startstringLower time bound — ISO 8601 (e.g.
2026-01-12T09:30:00Z) or Unix seconds. Defaults to start-of-trading-day.endstringUpper time bound — ISO 8601 or Unix seconds. Defaults to now.
limitintegerdefault50min 1 · max 500only_sweepsbooleandefaultfalseonly_multi_legbooleandefaultfalseexclude_multi_legbooleandefaultfalsemoneynessstringITMATMOTMmin_moneyness_pctnumberdoublemax_moneyness_pctnumberdoublemin_premiumnumberdoublemin 0min_dteintegermax_dteintegermin_strikenumberdoublemax_strikenumberdoubleexpirationstringdate
Responses
- 200
Filtered enriched trades.
- 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. - 403
Unknown, revoked or expired API key (the gateway's
forbidden), the account's API access is suspended (account_suspended) or blocked (account_blocked). Not retryable. - 404
Unknown ticker or contract (
SYMBOL_NOT_FOUND), or no data for the requested window. Not charged. - 429
Either the key exceeded its requests-per-minute limit (
X-RateLimit-Limit; noRetry-After, wait untilX-RateLimit-Reset), or the account is over one of the API's own limits, such as the query budget (queries running at once, fresh queries per second):TOO_MANY_CONCURRENT_QUERIESorRATE_LIMITEDwithRetry-After. Not charged; retry after the wait. - 500
Unexpected server error (
INTERNAL_ERROR,DATABASE_ERROR). Not charged; safe to retry with exponential backoff. - 503
Underlying data source temporarily unavailable, the credit balance could not be verified (
credit_check_failed), or the API is paused for maintenance (api_paused, with aRetry-Afterheader and aretry_afterfield in seconds). Not charged; safe to retry. - 504
The request did not complete within 25 seconds. Not charged; narrow the window or retry.
Response fields
dataobject[]requireddateintegerrequiredDays since 1970-01-01 (compact session date).
tsEventintegerint64requiredTrade event timestamp in milliseconds since epoch.
tsEventUsintegerint64Microsecond-precision timestamp (contract-trades endpoint only).
instrumentIdintegerint64requiredrawSymbolstringrequiredtickerstringrequiredexpirationintegerrequiredExpiration as days since 1970-01-01.
strikenumberdoublerequiredrightstringrequiredCPdteintegerrequiredpricenumberdoublerequiredsizeintegerrequiredsidestringrequiredGranular execution-side label —
BB(below bid),B(bid),AB(above bid),M(mid),BA(below ask),A(ask),AA(above ask), orN(no BBO).BBBABMBAAAANpublisherIdintegerrequiredbidPxnumber | nulldoubleaskPxnumber | nulldoublebidSzinteger | nullaskSzinteger | nullneutralSzintegerrequiredtotalPremiumnumberdoublerequiredspreadnumber | nulldoubleunderlyingPricenumberdoublerequiredivnumber | nulldoublemoneynessstringrequiredITMATMOTMmoneynessPercentnumberdoublerequiredopenInterestintegerrequiredprevOiintegerrequiredprevClosenumber | nulldoubleprevCloseAgeinteger | nullTrading days back the
prevClosecame from (0 = yesterday).priceChangenumber | nulldoubledailyVolumeintegerrequiredsweepTradebooleanrequiredblockTradebooleanrequiredmultiLegbooleanrequiredcrossTradebooleanrequiredPre-negotiated cross (OPRA condition 127): both sides were matched before the print, so
sidesays nothing about who initiated it.ivDirectionintegerrequired-1 = down, 0 = flat/unknown, 1 = up.
-101ingestionTimestampintegerint64requiredServer ingest time in milliseconds since epoch.
prevIvnumber | nulldoublenextIvnumber | nulldoublepremiumPercentileintegerBucketed premium percentile band (0 = below P50, 99 = P99+).
05075909599flowScoreintegerchainBidPctnumberdoublechainAskPctnumberdoublecontractBidPctnumberdoublecontractAskPctnumberdoubleaggCountintegeraggTotalPremiumnumberdoubleaggTotalSizeintegermlSiblingbooleanTrue when this leg was included via spread association rather than its own filter match.
strategyGroupIdstringstrategyTypestringstrategyLegCountintegerearningsDteintegernextEarningsDateinteger | nullcacheMissbooleansectorstringindustrystring
metaobjectrequiredtimestampstringdate-timerequiredServer-side timestamp the response was generated at.
requestIdstringrequiredShort opaque ID for log correlation.
nextCursorstringTrade feeds (
/v1/flow/{ticker},/v1/contract/{symbol}/trades): pass back ascursorwith the same filters for the next page. Present only when more rows may follow.nextEndTimestringdate-time/v1/flow/{ticker}only: the last row's exact time (RFC 3339 with nanoseconds), forend_timepaging. Inclusive, so rows at that instant can repeat;nextCursornever repeats or skips.
Last updated