---
title: "Get Technical Regime"
method: GET
path: "/api/v1/indicators/technical"
tags: ["Indicators"]
---

# Get Technical Regime

`GET /api/v1/indicators/technical`

## Request

- Base URL: `https://cryptodataapi.com`
- URL: `https://cryptodataapi.com/api/v1/indicators/technical`
- Auth: API key in header `X-API-Key`

Technical / Structural regime overlay (Regime #14, Pro tier).

Per-asset price-structure state across the same universe as SIGNUM_RGG:
moving-average position (SMA-50/100/200 + last cross), Bollinger-band
squeeze + bandwidth percentile, 20d range position, RSI(14) extremes on
daily + 1h timeframes, and `sr` — up to 3 support + 3 resistance levels
per side, from swing-high/low pivots on the daily series, nearest to
current price first. A level's `strength` is how many pivots clustered
into it; `dist_pct` is its signed % distance from mark (negative =
support, positive = resistance). Levels further than 30% from mark are
dropped as not actionable.

``breadth`` reports compression breadth over the FULL universe regardless
of filters: ``{total, in_squeeze, pct_in_squeeze,
pct_in_squeeze_pctile_30d, history_days}`` — the percentile ranks today's
squeeze share against the last 30 archived daily values (null until 10
days are archived).

Filter via `ma_state`, `bb`, `range_zone`, `rsi` (each is optional and
AND-combined). Example screener queries:

  - `?bb=in_squeeze&sort=squeeze_days&order=desc` — assets compressed for longest
  - `?rsi=oversold&min_days_in_state=2` — sustained oversold candidates
  - `?ma_state=reclaim_200` — recent 200MA reclaims (last 10 days)
  - `?range_zone=near_high&ma_state=above_200` — near-range-high + uptrend
  - `?symbol=BTC,ETH,SOL` — just those assets (alias `coin`); any the universe does not
    cover are listed in `not_covered`

Every series is DAILY (``ma`` carries SMA-20/50/100/200). An unrecognised query parameter
(``interval``, say) is a 400, not a silently ignored filter; 4h / 1h ADX is
``/indicators/adx``.

## Query parameters

- `source` 'binance_spot' | 'hyperliquid_perp', nullable
- `ma_state` 'above_200' | 'below_200' | 'breakdown_200' | 'reclaim_200', nullable: Filter by SMA-200 relationship
- `bb` 'in_squeeze' | 'expanding', nullable: Filter by Bollinger band state
- `range_zone` 'near_low' | 'mid' | 'near_high', nullable: Filter by 20d range position
- `rsi` 'overbought' | 'oversold' | 'extreme', nullable: Filter by daily RSI state
- `min_days_in_state` integer, nullable: Min days in state (squeeze or RSI extreme); requires matching filter
- `sort` 'symbol' | 'price' | 'rsi_1d' | 'bb_bandwidth' | 'squeeze_days' | 'dist_from_200' | 'position_in_range'
- `order` 'asc' | 'desc'
- `limit` integer
- `symbol` string, nullable: Comma list of symbols to return (BTC,ETH,kPEPE); omit for the whole universe. Requested symbols the universe does not cover are listed in `not_covered`.
- `coin` string, nullable: Alias for `symbol`. Send one or the other.

## Response `200`

Successful Response

- TechnicalRegimeResponse
  - `items` TechnicalRegimeItem[], required
    - `symbol` string, required
    - `source` 'binance_spot' | 'hyperliquid_perp', required
    - `price` number, required
    - `ma` MovingAverageStateModel, required
      - `sma_50` number, nullable
      - `sma_100` number, nullable
      - `sma_200` number, nullable
      - `above_50` boolean, nullable
      - `above_100` boolean, nullable
      - `above_200` boolean, nullable
      - `dist_from_50_pct` number, nullable
      - `dist_from_100_pct` number, nullable
      - `dist_from_200_pct` number, nullable
      - `last_cross_200` 'golden' | 'death', nullable
      - `days_since_cross_200` integer, nullable
      - `last_cross_50_100` 'golden' | 'death', nullable
      - `days_since_cross_50_100` integer, nullable
      - `sma_20` number, nullable
      - `above_20` boolean, nullable
      - `dist_from_20_pct` number, nullable
    - `bollinger` BollingerStateModel, required
      - `middle` number, nullable
      - `upper` number, nullable
      - `lower` number, nullable
      - `bandwidth_pct` number, nullable
      - `squeeze_percentile` number, nullable
      - `in_squeeze` boolean
      - `days_in_squeeze` integer
      - `expanding` boolean
    - `range_state` RangeStateModel, required
      - `low` number, nullable
      - `high` number, nullable
      - `width_pct` number, nullable
      - `position_pct` number, nullable
      - `zone` 'near_low' | 'mid' | 'near_high', nullable
      - `near_high` boolean
      - `near_low` boolean
    - `rsi` RsiStateModel, required
      - `rsi_14_1d` number, nullable
      - `rsi_14_1h` number, nullable
      - `state_1d` 'overbought' | 'oversold' | 'neutral'
      - `state_1h` 'overbought' | 'oversold' | 'neutral'
      - `extreme_1d` boolean
      - `extreme_1h` boolean
      - `extreme_duration_bars` integer
    - `sr` SupportResistanceModel
      - `support` SRLevelModel[]: Nearest-to-price first; each dist_pct is negative
        - `price` number, required
        - `strength` integer, required: Swing-pivot touches clustered into this level
        - `dist_pct` number, required: Signed % distance from current price
      - `resistance` SRLevelModel[]: Nearest-to-price first; each dist_pct is positive
        - `price` number, required
        - `strength` integer, required: Swing-pivot touches clustered into this level
        - `dist_pct` number, required: Signed % distance from current price
  - `count` integer, required
  - `universe_size` integer, required
  - `timestamp` string, required
  - `breadth` TechnicalBreadth: Compression breadth across the FULL universe (pre-filter).
    - `total` integer, required
    - `in_squeeze` integer, required
    - `pct_in_squeeze` number, required
    - `pct_in_squeeze_pctile_30d` number, nullable: Percentile (0-100) of today's pct_in_squeeze vs the last 30 archived daily values; null when fewer than 10 days are archived
    - `history_days` integer: Archived days behind the percentile
  - `not_covered` string[], nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/cryptodataapi/apis/crypto-data-api.md) · [All operations](https://skmtc.dev/cryptodataapi/apis/crypto-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cryptodataapi/apis/crypto-data-api/revisions/8628b754ca81?raw)
