---
title: "Coinbase cross-exchange price premium vs global composite — $0.02/call"
method: GET
path: "/api/v1/cex-premium/{asset}"
tags: ["cex-premium", "cross-exchange", "paid"]
---

# Coinbase cross-exchange price premium vs global composite — $0.02/call

`GET /api/v1/cex-premium/{asset}`

## Request

- Base URL: `https://kronossignals.com` (the document declares no server; this is the origin it was published from)
- URL: `https://kronossignals.com/api/v1/cex-premium/{asset}`
- Auth: none declared

Computes the Coinbase price premium vs the composite median of OKX, Kraken, and Binance spot prices. premium_pct = (coinbase_price / composite_median − 1) × 100. Positive = US/institutional demand bias; negative = global selling pressure or Coinbase supply imbalance. Covers all assets listed on Coinbase (BTC/ETH/SOL/XRP/DOGE/ADA/AVAX/LINK/DOT/LTC/BCH/ATOM/NEAR). Assets not listed on Coinbase (BNB, TRX, APT) return available:false. Includes 30d z-score and 24h percentile from Kronos cex_premium_history table (hourly cron record-cex-premium). Returns baseline_status:'accumulating' with sample count until ≥24 hourly samples exist. $0.02 USDC on Base mainnet via x402.

## Path parameters

- `asset` 'btc' | 'eth' | 'sol' | 'xrp' | 'doge' | 'ada' | 'avax' | 'link' | 'dot' | 'ltc' | 'bch' | 'atom' | 'near', required

## Response `200`

CEX premium returned (payment verified)

- object
  - `available` boolean, required
  - `asset` string, required
  - `coinbase_price` number, required
  - `composite_median` number, required: Median of OKX + Kraken + Binance spot prices.
  - `premium_pct` number, required: (coinbase / composite_median − 1) × 100. Positive = Coinbase premium.
  - `interpretation` string: Plain-language read of the premium magnitude and direction.
  - `sources_used` object[], required
    - `exchange` 'coinbase' | 'okx' | 'kraken' | 'binance'
    - `price` number
    - `role` 'reference' | 'composite' | 'unavailable'
  - `composite_source_count` integer: Number of composite sources that responded.
  - `z_score_30d` number, nullable: 30-day z-score: (current_premium − 30d_mean) / 30d_stddev. null while accumulating <24 samples.
  - `percentile_24h` number, nullable: % of 24h hourly samples with premium strictly below current. null while accumulating <12 samples.
  - `baseline_samples_30d` integer: Hourly premium samples recorded in the trailing 30 days.
  - `baseline_samples_24h` integer: Hourly premium samples recorded in the trailing 24 hours.
  - `baseline_status` 'ready' | 'accumulating': 'ready' when ≥24 samples exist; 'accumulating' otherwise.
  - `baseline_note` string: Explains z-score computation or accumulating state.
  - `data_age_seconds` integer
  - `as_of` string, date-time, required
  - `disclaimer` string, required

## Other responses

- `400`: Unsupported asset or asset not listed on Coinbase.
- `402`: Payment Required — x402 micropayment instructions in response body.
- `503`: Coinbase price unavailable or no composite sources reachable.

---

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