---
title: "Chain-level call/put-aware bull/bear pressure"
method: GET
path: "/v1/chain-bull-bear/{ticker}"
tags: ["Ratios"]
---

# Chain-level call/put-aware bull/bear pressure

`GET /v1/chain-bull-bear/{ticker}`

Folds option type into the bid/ask/mid signal: a call lifted at the
ask is bullish, a put hit at the bid is also bullish (put selling),
etc. Returns overall bull/bear/neutral percentages plus call-only
and put-only bull breakdowns so callers can tell whether the
directional pressure originates from call buying, put selling, or
both.

## Path parameters

- `ticker` string, required

## Query parameters

- `date` string, date
- `timeframe` '5m' | '15m' | '1h' | '4h' | '1d'
- `option_type` 'call' | 'put' | 'all'
- `min_premium` integer
- `min_dte` integer
- `max_dte` integer

## Response `200`

Chain-level bull/bear analysis.

- ChainBullBearSuccess
  - `data` ChainBullBearResponse, required
    - `ticker` string, required
    - `date` string, date, required
    - `timeframe` string, required
    - `tradeCount` integer, required
    - `totalVolume` integer, required
    - `totalPremium` number, required
    - `metrics` ChainBullBearMetrics, required
      - `bullPct` number, required — Share (0–100) of volume classified as bullish.
      - `bearPct` number, required
      - `neutralPct` number, required
      - `bullBearRatio` number, required — bullVolume / bearVolume (capped at 999 when bear = 0).
      - `callBullPct` number, required — Bullish share within calls only (high = aggressive call buying).
      - `putBullPct` number, required — Bullish share within puts only (high = put selling = contrarian bullish).
    - `interpretation` BullBearInterpretation, required
      - `bias` 'BULLISH' | 'BEARISH' | 'NEUTRAL' | 'MIXED', required
      - `strength` 'strong' | 'moderate' | 'weak' | 'uncertain' | 'passive' | 'balanced', required
      - `confidence` 'HIGH' | 'MEDIUM' | 'LOW', required
      - `description` string, 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`.
- `403` — API key revoked/expired, monthly quota exceeded, or the account's API access is suspended (`account_suspended`).
- `404` — Unknown resource (ticker / sector / window with no data).
- `429` — Per-minute rate limit exceeded.
- `503` — Underlying data source temporarily unavailable, or the credit balance could not be verified (`credit_check_failed`). Safe to retry.

---

[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)
