Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Crypto Data Event Stream API
description: 'Real-time crypto market intelligence API. Built for AI agents: gasless USDC payments via x402 protocol, one-call onboarding, and 180+ endpoints for prices, derivatives, funding, and sentiment.'
version: '2026-10-28'
servers:
- url: https://cryptodataapi.com
tags:
- name: Event Stream
description: Live market events — liquidations, $1M+ whale transfers, funding prints, OI jumps — over Server-Sent Events (Pro), as recent JSON (any key), or as a keyless 30-minute-delayed preview.
paths:
/api/v1/stream:
get:
tags:
- Event Stream
summary: Live event stream (SSE)
description: 'Real-time market events over Server-Sent Events: liquidations (OKX, Bybit,
Hyperliquid; $250+), $1M+ CEX whale transfers, Hyperliquid top-trader position
changes ($25K+), and funding moves, open-interest moves and 1-minute price
moves (0.10%+, perps trading $1M+/day) for every Hyperliquid perp.
Each message''s `data` is one JSON event: `id`, `ts` (event time, ms),
`recv_ts` (when we saw it, ms), `type`, `venue`, `symbol`, plus type fields:
liquidation `side` (the LIQUIDATED position side) + `usd` (+ `px`, `sz` on
Hyperliquid); whale_transfer `exchange`, `chain`, `direction` (inflow/outflow),
`amount`, `usd`; whale_position `action` (entry/exit/increase/decrease), `side`,
`size`, `usd` (notional of the change at entry price), `address`, `change_pct`;
funding `rate_1h`, `prev_rate_1h`, `settle` (true = the hourly settlement
print); oi_delta `usd` (signed change), `pct`, `window_s` (~60 = minute move,
~300 = 5-minute jump), `oi_usd`; price_move `pct`, `price`, `prev_price`,
`window_s`.
Pro and Pro Plus. Free keys: `/stream/recent` (JSON, any key) or the keyless
`/stream/delayed` preview. Up to 3 concurrent streams per key.'
operationId: stream_events_api_v1_stream_get
security:
- APIKeyHeader: []
parameters:
- name: types
in: query
required: false
schema:
description: 'Comma-separated event types: liquidation, whale_transfer, whale_position, funding, oi_delta, price_move. Default: all.'
title: Types
type:
- string
- 'null'
description: 'Comma-separated event types: liquidation, whale_transfer, whale_position, funding, oi_delta, price_move. Default: all.'
- name: symbols
in: query
required: false
schema:
description: 'Comma-separated base coins (BTC,ETH,SOL). Default: all.'
title: Symbols
type:
- string
- 'null'
description: 'Comma-separated base coins (BTC,ETH,SOL). Default: all.'
- name: min_usd
in: query
required: false
schema:
type: number
minimum: 0
description: Drop events smaller than this USD size. Applies to events that carry `usd` (liquidation, whale_transfer, whale_position, oi_delta); funding and price_move always pass.
default: 0
title: Min Usd
description: Drop events smaller than this USD size. Applies to events that carry `usd` (liquidation, whale_transfer, whale_position, oi_delta); funding and price_move always pass.
- name: since_id
in: query
required: false
schema:
description: Replay buffered events after this id before going live (~2h ring). The Last-Event-ID header does the same and wins when both are sent.
title: Since Id
type:
- integer
- 'null'
minimum: 0
description: Replay buffered events after this id before going live (~2h ring). The Last-Event-ID header does the same and wins when both are sent.
responses:
'200':
description: 'Server-Sent Events. One JSON event per `data:` line, `id:` set for resume; `: ping` comments every 15s.'
content:
text/event-stream: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-streaming: true
/api/v1/stream/recent:
get:
tags:
- Event Stream
summary: Recent events (JSON)
description: 'The newest events from the live stream as JSON, oldest first. Same event
shape as `GET /stream`. `last_id` is the id to pass as `since_id` when
opening the stream, so a client can backfill and then go live without a gap
or a duplicate. Any key, Free included.'
operationId: stream_recent_api_v1_stream_recent_get
security:
- APIKeyHeader: []
parameters:
- name: limit
in: query
required: false
schema:
type: integer
maximum: 500
minimum: 1
description: Newest N events (1-500).
default: 100
title: Limit
description: Newest N events (1-500).
- name: types
in: query
required: false
schema:
description: 'Comma-separated event types: liquidation, whale_transfer, whale_position, funding, oi_delta, price_move. Default: all.'
title: Types
type:
- string
- 'null'
description: 'Comma-separated event types: liquidation, whale_transfer, whale_position, funding, oi_delta, price_move. Default: all.'
- name: symbols
in: query
required: false
schema:
description: 'Comma-separated base coins (BTC,ETH,SOL). Default: all.'
title: Symbols
type:
- string
- 'null'
description: 'Comma-separated base coins (BTC,ETH,SOL). Default: all.'
- name: min_usd
in: query
required: false
schema:
type: number
minimum: 0
description: Drop events smaller than this USD size. Applies to events that carry `usd` (liquidation, whale_transfer, whale_position, oi_delta); funding and price_move always pass.
default: 0
title: Min Usd
description: Drop events smaller than this USD size. Applies to events that carry `usd` (liquidation, whale_transfer, whale_position, oi_delta); funding and price_move always pass.
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/stream/delayed:
get:
tags:
- Event Stream
summary: Delayed event preview (no key)
description: 'A free, keyless preview of the stream: the events from a 3-minute window
that ended 30 minutes ago (`window_start`/`window_end`, event time, ms),
oldest first, at most 900. `server_now` lets a client replay them at their
original pace (`ts + delay_ms`). `events_per_min` is the window''s rate.
Cached for 60s. For real-time events use `GET /stream` (Pro).'
operationId: stream_delayed_api_v1_stream_delayed_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
securitySchemes:
APIKeyHeader:
type: apiKey
in: header
name: X-API-Key