Bitvavo · AsyncAPI Specification

Bitvavo WebSocket API

Version 2.10.0

Real-time WebSocket API for market data, trading, transfers, and account management on Bitvavo.

View Spec View on GitHub CompanyCryptocurrencyExchangeTradingMarket DataNetherlandsAsyncAPIEventsWebSockets

Channels

getBook
getBookReply
getTrades
getTradesReply
getTickerPrice
getTickerPriceReply
getTickerBook
getTickerBookReply
getCandles
getCandlesReply
getTicker24h
getTicker24hReply
privateCreateOrder
privateCreateOrderReply
privateUpdateOrder
privateUpdateOrderReply
privateGetOrder
privateGetOrderReply
privateCancelOrder
privateCancelOrderReply
privateGetOrdersOpen
privateGetOrdersOpenReply
privateGetTrades
privateGetTradesReply
privateGetOrders
privateGetOrdersReply
privateCancelOrders
privateCancelOrdersReply
privateAtomicCancelOrders
privateAtomicCancelOrdersReply
privateCancelOrdersAfter
privateCancelOrdersAfterReply
privateDepositAssets
privateDepositAssetsReply
privateGetDepositHistory
privateGetDepositHistoryReply
privateWithdrawAssets
privateWithdrawAssetsReply
privateCryptoWithdrawal
privateCryptoWithdrawalReply
privateGetWithdrawalHistory
privateGetWithdrawalHistoryReply
privateGetAccount
privateGetAccountReply
privateGetBalance
privateGetBalanceReply
privateGetFees
privateGetFeesReply
privateGetTransactionHistory
privateGetTransactionHistoryReply
getTime
getTimeReply
getMarkets
getMarketsReply
getAssets
getAssetsReply
tickerSubscription
tickerEvents
ticker24hSubscription
ticker24hEvents
candlesSubscription
candlesEvents
tradesSubscription
tradesEvents
bookSubscription
bookEvents
accountSubscription
accountEvents

Messages

✉
getBookRequest
getBookRequest
✉
getBookResponse
getBookResponse
✉
getTradesRequest
getTradesRequest
✉
getTradesResponse
getTradesResponse
✉
getTickerPriceRequest
getTickerPriceRequest
✉
getTickerPriceResponse
getTickerPriceResponse
✉
getTickerBookRequest
getTickerBookRequest
✉
getTickerBookResponse
getTickerBookResponse
✉
getCandlesRequest
getCandlesRequest
✉
getCandlesResponse
getCandlesResponse
✉
getTicker24hRequest
getTicker24hRequest
✉
getTicker24hResponse
getTicker24hResponse
✉
privateCreateOrderRequest
privateCreateOrderRequest
✉
privateUpdateOrderRequest
privateUpdateOrderRequest
✉
privateGetOrderRequest
privateGetOrderRequest
✉
privateCancelOrderRequest
privateCancelOrderRequest
✉
privateCancelOrderResponse
privateCancelOrderResponse
✉
privateGetOrdersOpenRequest
privateGetOrdersOpenRequest
✉
privateGetTradesRequest
privateGetTradesRequest
✉
privateGetTradesResponse
privateGetTradesResponse
✉
privateGetOrdersRequest
privateGetOrdersRequest
✉
privateCancelOrdersRequest
privateCancelOrdersRequest
✉
privateCancelOrdersResponse
privateCancelOrdersResponse
✉
privateAtomicCancelOrdersRequest
privateAtomicCancelOrdersRequest
✉
privateAtomicCancelOrdersResponse
privateAtomicCancelOrdersResponse
✉
privateCancelOrdersAfterRequest
privateCancelOrdersAfterRequest
✉
privateCancelOrdersAfterResponse
privateCancelOrdersAfterResponse
✉
orderResponseFull
responseRequired=true
✉
orderResponseMinimal
responseRequired=false
✉
privateDepositAssetsRequest
privateDepositAssetsRequest
✉
digitalAssetDepositResponse
Digital asset
✉
fiatDepositResponse
Fiat
✉
privateGetDepositHistoryRequest
privateGetDepositHistoryRequest
✉
digitalAssetDepositHistoryResponse
Digital asset
✉
fiatDepositHistoryResponse
Fiat
✉
privateWithdrawAssetsRequest
privateWithdrawAssetsRequest
✉
privateWithdrawAssetsResponse
privateWithdrawAssetsResponse
✉
privateCryptoWithdrawalRequest
privateCryptoWithdrawalRequest
✉
privateCryptoWithdrawalResponse
privateCryptoWithdrawalResponse
✉
privateGetWithdrawalHistoryRequest
privateGetWithdrawalHistoryRequest
✉
privateGetWithdrawalHistoryResponse
privateGetWithdrawalHistoryResponse
✉
privateGetAccountRequest
privateGetAccountRequest
✉
privateGetAccountResponse
privateGetAccountResponse
✉
privateGetBalanceRequest
privateGetBalanceRequest
✉
privateGetBalanceResponse
privateGetBalanceResponse
✉
privateGetFeesRequest
privateGetFeesRequest
✉
privateGetFeesResponse
privateGetFeesResponse
✉
privateGetTransactionHistoryRequest
privateGetTransactionHistoryRequest
✉
privateGetTransactionHistoryResponse
privateGetTransactionHistoryResponse
✉
getTimeRequest
getTimeRequest
✉
getTimeResponse
getTimeResponse
✉
getMarketsRequest
getMarketsRequest
✉
getMarketsResponse
getMarketsResponse
✉
getAssetsRequest
getAssetsRequest
✉
getAssetsResponse
getAssetsResponse
✉
subscriptionRequest
subscriptionRequest
✉
tickerSubscriptionRequest
tickerSubscriptionRequest
✉
ticker24hSubscriptionRequest
ticker24hSubscriptionRequest
✉
tradesSubscriptionRequest
tradesSubscriptionRequest
✉
bookSubscriptionRequest
bookSubscriptionRequest
✉
accountSubscriptionRequest
accountSubscriptionRequest
✉
candlesSubscriptionRequest
candlesSubscriptionRequest
✉
tickerSubscriptionConfirmation
tickerSubscriptionConfirmation
✉
tickerEvent
tickerEvent
✉
ticker24hSubscriptionConfirmation
ticker24hSubscriptionConfirmation
✉
ticker24hEvent
ticker24hEvent
✉
candlesSubscriptionConfirmation
candlesSubscriptionConfirmation
✉
candlesEvent
candlesEvent
✉
tradesSubscriptionConfirmation
tradesSubscriptionConfirmation
✉
tradesEvent
tradesEvent
✉
bookSubscriptionConfirmation
bookSubscriptionConfirmation
✉
bookEvent
bookEvent
✉
accountSubscriptionConfirmation
accountSubscriptionConfirmation
✉
accountOrderEvent
accountOrderEvent
✉
accountFillEvent
accountFillEvent

Servers

wss
production

AsyncAPI Specification

Raw ↑
asyncapi: 3.0.0

info:
  title: Bitvavo WebSocket API
  version: 2.10.0
  description: |
    Real-time WebSocket API for market data, trading, transfers, and account management on Bitvavo.

servers:
  production:
    host: ws.bitvavo.com
    pathname: /v2
    protocol: wss

operations:

  # ---------------------------------------------------------------------------
  # Market data
  # ---------------------------------------------------------------------------

  getBook:
    action: send
    channel:
      $ref: '#/channels/getBook'
    summary: Get order book
    description: |
      Returns the list of up to 1000 bids and asks per request for the specified `market`, sorted by `price`.

      **Rate limit weight points**: 1
    tags:
      - name: Market data
    reply:
      channel:
        $ref: '#/channels/getBookReply'

  getTrades:
    action: send
    channel:
      $ref: '#/channels/getTrades'
    summary: Get trades
    description: |
      Returns the list of trades made by all Bitvavo users for the specified `market` and time period up to 24 hours. 

      The returned trades are sorted by their `timestamp` in a descending order, from the latest to the earliest.

      **Rate limit weight points**: 5
    tags:
      - name: Market data
    reply:
      channel:
        $ref: '#/channels/getTradesReply'

  getTickerPrice:
    action: send
    channel:
      $ref: '#/channels/getTickerPrice'
    summary: Get ticker prices
    description: |
      Returns prices of the latest trades on Bitvavo for all markets or a single `market`. 

      :::info
      A _tick_ in a market is any change in the price of a digital asset.
      :::

      **Rate limit weight points**: 1
    tags:
      - name: Market data
    reply:
      channel:
        $ref: '#/channels/getTickerPriceReply'

  getTickerBook:
    action: send
    channel:
      $ref: '#/channels/getTickerBook'
    summary: Get ticker book
    description: |
      Stream the highest buy and the lowest sell prices currently available for all markets, or a single `market`, in the Bitvavo order book.

      **Rate limit weight points**: 1
    tags:
      - name: Market data
    reply:
      channel:
        $ref: '#/channels/getTickerBookReply'

  getCandles:
    action: send
    channel:
      $ref: '#/channels/getCandles'
    summary: Get candlestick data
    description: |
      Returns the [OHLCV](https://www.investopedia.com/terms/o/ohlcchart.asp) market data used to create [candlestick charts](https://learn.bitvavo.com/article/what-are-candlestick-patterns/1199).

      Candlestick data is always returned in chronological order from the latest to the earliest. Data is returned when trades are made in the `interval` represented by that candlestick. If no trades occur you see a gap in data flow - zero trades are represented by zero candlesticks.

      **Rate limit weight points**: 1
    tags:
      - name: Market data
    reply:
      channel:
        $ref: '#/channels/getCandlesReply'

  getTicker24h:
    action: send
    channel:
      $ref: '#/channels/getTicker24h'
    summary: Get ticker data 24h
    description: |
      Streams the [OHLCV](https://www.investopedia.com/terms/o/ohlcchart.asp) data about trades and orders for all markets, or a single `market`, on Bitvavo during the latest 24 hours.

      **Rate limit weight points**: **25** (without `market`) or **1** (with `market`).
    tags:
      - name: Market data
    reply:
      channel:
        $ref: '#/channels/getTicker24hReply'

  # ---------------------------------------------------------------------------
  # Trading
  # ---------------------------------------------------------------------------

  privateCreateOrder:
    action: send
    channel:
      $ref: '#/channels/privateCreateOrder'
    summary: Create order
    description: |
      Creates an order to buy or sell digital assets on Bitvavo.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      :::warning
      You can have a maximum of [100 open orders](/docs/rest-api/get-orders) at any one time in each `market`. 
      ::::

      **Rate limit weight points**: **1**
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateCreateOrderReply'

  privateUpdateOrder:
    action: send
    channel:
      $ref: '#/channels/privateUpdateOrder'
    summary: Update order
    description: |
      Updates an existing *limit* or *trigger* order.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      :::info
      You must set either `orderId` or `clientOrderId`. If you set both, we use the `clientOrderId` to identify the order. `clientOrderId` is only returned if you set it when you created the order.
      :::

      :::tip
      Updating an order is faster than canceling and creating new orders. During the update, your order is briefly removed from the order book.
      :::

      **Rate limit weight points**: 1
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateUpdateOrderReply'

  privateGetOrder:
    action: send
    channel:
      $ref: '#/channels/privateGetOrder'
    summary: Get order
    description: |
      Returns information about an existing order.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      :::info
      You must set either `orderId` or `clientOrderId`. If you set both, we use the `clientOrderId` to identify the order. `clientOrderId` is only returned if you set it when you created the order.
      :::

      **Rate limit weight points**: **1**
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetOrderReply'

  privateCancelOrder:
    action: send
    channel:
      $ref: '#/channels/privateCancelOrder'
    summary: Cancel order
    description: |
      Cancels an open order.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      :::info
      You must set either `orderId` or `clientOrderId`. If you set both, we use the `clientOrderId` to identify the order. `clientOrderId` is only returned if you set it when you created the order.
      :::

      **Rate limit weight points**: **1**
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateCancelOrderReply'

  privateGetOrdersOpen:
    action: send
    channel:
      $ref: '#/channels/privateGetOrdersOpen'
    summary: Get open orders
    description: |
      Returns all current open orders.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **100** (without `market`) or **5** (with `market`).
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetOrdersOpenReply'

  privateGetTrades:
    action: send
    channel:
      $ref: '#/channels/privateGetTrades'
    summary: Get trade history
    description: |
      Returns the specified number of past trades for your account and a time period of up to 24 hours. Does not return trades with a Price Guarantee. 

      The returned trades are sorted by their `timestamp` in a descending order, from the latest to the earliest.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      :::tip
      To get a specific list of trades, use the `start`, `end`, `tradeIdFrom`, and `tradeIdTo` parameters.
      ::::

      :::tip
      To get all past transactions for your account, use the [privateGetTransactionHistory](/docs/websocket-api/get-transaction-history/) message.
      ::::

      **Rate limit weight points**: **5**
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetTradesReply'

  privateGetOrders:
    action: send
    channel:
      $ref: '#/channels/privateGetOrders'
    summary: Get orders
    description: |
      Returns information about multiple orders.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **5**
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetOrdersReply'

  privateCancelOrders:
    action: send
    channel:
      $ref: '#/channels/privateCancelOrders'
    summary: Cancel orders
    description: |
      Cancels multiple orders for the specified market or the account.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **100** (without `market`) or **25** (with `market`).
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateCancelOrdersReply'

  privateAtomicCancelOrders:
    action: send
    channel:
      $ref: '#/channels/privateAtomicCancelOrders'
    summary: Atomic cancel orders
    description: |
      Cancels all open orders to buy or sell in the specified `market` as a single atomic request. The request is processed in strict arrival order and executed without interleaving with other operations.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **100**
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateAtomicCancelOrdersReply'

  privateCancelOrdersAfter:
    action: send
    channel:
      $ref: '#/channels/privateCancelOrdersAfter'
    summary: Cancel orders after
    description: |
      Creates an identifier used to group open orders and sets the countdown timer after which those orders are automatically canceled.

      To learn how to use this endpoint, see [Cancel on disconnect](/docs/cancel-on-disconnect/).

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      :::info
      You can create only one group. If you need to create multiple groups, reach out to your Bitvavo contact to enable this.
      :::

      **Rate limit weight points**: **5**
    tags:
      - name: Trading
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateCancelOrdersAfterReply'

  # ---------------------------------------------------------------------------
  # Transfer
  # ---------------------------------------------------------------------------

  privateDepositAssets:
    action: send
    channel:
      $ref: '#/channels/privateDepositAssets'
    summary: Get deposit data
    description: |
      Returns wallet or bank account information required to deposit digital or fiat assets.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **1**
    tags:
      - name: Transfer
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateDepositAssetsReply'

  privateGetDepositHistory:
    action: send
    channel:
      $ref: '#/channels/privateGetDepositHistory'
    summary: Get deposit history
    description: |
      Returns all past deposits for your account.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **5**
    tags:
      - name: Transfer
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetDepositHistoryReply'

  privateWithdrawAssets:
    action: send
    channel:
      $ref: '#/channels/privateWithdrawAssets'
    summary: Withdraw assets
    description: |
      Request to withdraw assets to a wallet or bank account.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      :::warning
      2FA and address confirmation by email are disabled for withdrawals using the API.
      :::

      **Rate limit weight points**: **1**
    tags:
      - name: Transfer
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateWithdrawAssetsReply'

  privateCryptoWithdrawal:
    action: send
    channel:
      $ref: '#/channels/privateCryptoWithdrawal'
    summary: Withdraw crypto assets
    description: |
      Request to withdraw crypto assets to a wallet over the specified network.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **25**
    tags:
      - name: Transfer
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateCryptoWithdrawalReply'

  privateGetWithdrawalHistory:
    action: send
    channel:
      $ref: '#/channels/privateGetWithdrawalHistory'
    summary: Get withdrawal history
    description: |
      Returns all past withdrawals for your account.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **5**
    tags:
      - name: Transfer
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetWithdrawalHistoryReply'

  # ---------------------------------------------------------------------------
  # Account
  # ---------------------------------------------------------------------------

  privateGetAccount:
    action: send
    channel:
      $ref: '#/channels/privateGetAccount'
    summary: Get account fees
    description: |
      Returns your current trading fees from the default [Category A](https://bitvavo.com/en/fees) based on the trading volume of your account.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **1**
    tags:
      - name: Account
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetAccountReply'

  privateGetBalance:
    action: send
    channel:
      $ref: '#/channels/privateGetBalance'
    summary: Get account balance
    description: |
      Returns the current balance for your account.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **5**
    tags:
      - name: Account
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetBalanceReply'

  privateGetFees:
    action: send
    channel:
      $ref: '#/channels/privateGetFees'
    summary: Get market fees
    description: |
      Returns your current trading fees from the [Category](https://bitvavo.com/en/fees) of the specified market based on the trading volume of your account. 

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **1**
    tags:
      - name: Account
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetFeesReply'

  privateGetTransactionHistory:
    action: send
    channel:
      $ref: '#/channels/privateGetTransactionHistory'
    summary: Get transaction history
    description: |
      Returns a list of past transactions for your account or the specified date range. If the range is not specified, returns all past transactions.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::

      **Rate limit weight points**: **1**
    tags:
      - name: Account
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/privateGetTransactionHistoryReply'

  # ---------------------------------------------------------------------------
  # Synchronization
  # ---------------------------------------------------------------------------

  getTime:
    action: send
    channel:
      $ref: '#/channels/getTime'
    summary: Get server time
    description: |
      Returns the current Unix timestamp of Bitvavo servers.

      **Rate limit weight points**: **1**
    tags:
      - name: Synchronization
    reply:
      channel:
        $ref: '#/channels/getTimeReply'

  getMarkets:
    action: send
    channel:
      $ref: '#/channels/getMarkets'
    summary: Get markets
    description: |
      Returns the information about one or all markets on Bitvavo.

      **Rate limit weight points**: **1**
    tags:
      - name: Synchronization
    reply:
      channel:
        $ref: '#/channels/getMarketsReply'

  getAssets:
    action: send
    channel:
      $ref: '#/channels/getAssets'
    summary: Get asset data
    description: |
      Returns the information about the specified assets. 

      **Rate limit weight points**: **1**
    tags:
      - name: Synchronization
    reply:
      channel:
        $ref: '#/channels/getAssetsReply'

  # ---------------------------------------------------------------------------
  # Market data subscriptions
  # ---------------------------------------------------------------------------

  subscribeToTicker:
    action: send
    channel:
      $ref: '#/channels/tickerSubscription'
    summary: Ticker subscription
    description: |
      Subscribes to ticker events which return an object every time the best bid or ask changes.
    tags:
      - name: Market data subscription
    reply:
      channel:
        $ref: '#/channels/tickerEvents'

  subscribeToTicker24h:
    action: send
    channel:
      $ref: '#/channels/ticker24hSubscription'
    summary: Ticker 24 hour subscription
    description: |
      Subscribes to ticker24h events. Every second, it returns an object with the best bids and asks in the last 24 hours.
    tags:
      - name: Market data subscription
    reply:
      channel:
        $ref: '#/channels/ticker24hEvents'

  subscribeToCandles:
    action: send
    channel:
      $ref: '#/channels/candlesSubscription'
    summary: Candles subscription
    description: |
      Subscribes to events that return data used to form candlestick charts.
    tags:
      - name: Market data subscription
    reply:
      channel:
        $ref: '#/channels/candlesEvents'

  subscribeToTrades:
    action: send
    channel:
      $ref: '#/channels/tradesSubscription'
    summary: Trades subscription
    description: |
      Subscribes to events that return data when a trade is made.
    tags:
      - name: Market data subscription
    reply:
      channel:
        $ref: '#/channels/tradesEvents'

  subscribeToBook:
    action: send
    channel:
      $ref: '#/channels/bookSubscription'
    summary: Book subscription
    description: |
      Subscribes to events that return data when there is a change in the order book.
    tags:
      - name: Market data subscription
    reply:
      channel:
        $ref: '#/channels/bookEvents'

  # ---------------------------------------------------------------------------
  # Trading data subscriptions
  # ---------------------------------------------------------------------------

  subscribeToAccount:
    action: send
    channel:
      $ref: '#/channels/accountSubscription'
    summary: Track your orders
    description: |
      Subscribes to events that return data when your orders in the specified market are updated.

      You can receive one of the following events:
      - **Subscribe**: receive a confirmation that you subscribed to the channel.
      - **Order**: receive data about all orders you created or updated.
      - **Fill**: receive data about all fills or trades executed for an orders you created.

      :::info
      *Authentication required*. To send messages, you need to [authenticate connection](/docs/websocket-api/introduction/).
      :::
    tags:
      - name: Trading data subscription
    security:
      - $ref: '#/components/securitySchemes/websocketAuth'
    reply:
      channel:
        $ref: '#/channels/accountEvents'

# =============================================================================
# Channels
# =============================================================================

channels:

  # --- Market data request/reply channels ---

  getBook:
    messages:
      getBookRequest:
        $ref: '#/components/messages/getBookRequest'
  getBookReply:
    messages:
      getBookResponse:
        $ref: '#/components/messages/getBookResponse'

  getTrades:
    messages:
      getTradesRequest:
        $ref: '#/components/messages/getTradesRequest'
  getTradesReply:
    messages:
      getTradesResponse:
        $ref: '#/components/messages/getTradesResponse'

  getTickerPrice:
    messages:
      getTickerPriceRequest:
        $ref: '#/components/messages/getTickerPriceRequest'
  getTickerPriceReply:
    messages:
      getTickerPriceResponse:
        $ref: '#/components/messages/getTickerPriceResponse'

  getTickerBook:
    messages:
      getTickerBookRequest:
        $ref: '#/components/messages/getTickerBookRequest'
  getTickerBookReply:
    messages:
      getTickerBookResponse:
        $ref: '#/components/messages/getTickerBookResponse'

  getCandles:
    messages:
      getCandlesRequest:
        $ref: '#/components/messages/getCandlesRequest'
  getCandlesReply:
    messages:
      getCandlesResponse:
        $ref: '#/components/messages/getCandlesResponse'

  getTicker24h:
    messages:
      getTicker24hRequest:
        $ref: '#/components/messages/getTicker24hRequest'
  getTicker24hReply:
    messages:
      getTicker24hResponse:
        $ref: '#/components/messages/getTicker24hResponse'

  # --- Trading request/reply channels ---

  privateCreateOrder:
    messages:
      privateCreateOrderRequest:
        $ref: '#/components/messages/privateCreateOrderRequest'
  privateCreateOrderReply:
    messages:
      privateCreateOrderResponseFull:
        $ref: '#/components/messages/orderResponseFull'
      privateCreateOrderResponseMinimal:
        $ref: '#/components/messages/orderResponseMinimal'

  privateUpdateOrder:
    messages:
      privateUpdateOrderRequest:
        $ref: '#/components/messages/privateUpdateOrderRequest'
  privateUpdateOrderReply:
    messages:
      privateUpdateOrderResponseFull:
        $ref: '#/components/messages/orderResponseFull'
      privateUpdateOrderResponseMinimal:
        $ref: '#/components/messages/orderResponseMinimal'

  privateGetOrder:
    messages:
      privateGetOrderRequest:
        $ref: '#/components/messages/privateGetOrderRequest'
  privateGetOrderReply:
    messages:
      privateGetOrderResponse:
        $ref: '#/components/messages/orderResponseFull'

  privateCancelOrder:
    messages:
      privateCancelOrderRequest:
        $ref: '#/components/messages/privateCancelOrderRequest'
  privateCancelOrderReply:
    messages:
      privateCancelOrderResponse:
        $ref: '#/components/messages/privateCancelOrderResponse'

  privateGetOrdersOpen:
    messages:
      privateGetOrdersOpenRequest:
        $ref: '#/components/messages/privateGetOrdersOpenRequest'
  privateGetOrdersOpenReply:
    messages:
      privateGetOrdersOpenResponse:
        $ref: '#/components/messages/orderResponseFull'

  privateGetTrades:
    messages:
      privateGetTradesRequest:
        $ref: '#/components/messages/privateGetTradesRequest'
  privateGetTradesReply:
    messages:
      privateGetTradesResponse:
        $ref: '#/components/messages/privateGetTradesResponse'

  privateGetOrders:
    messages:
      privateGetOrdersRequest:
        $ref: '#/components/messages/privateGetOrdersRequest'
  privateGetOrdersReply:
    messages:
      privateGetOrdersResponse:
        $ref: '#/components/messages/orderResponseFull'

  privateCancelOrders:
    messages:
      privateCancelOrdersRequest:
        $ref: '#/components/messages/privateCancelOrdersRequest'
  privateCancelOrdersReply:
    messages:
      privateCancelOrdersResponse:
        $ref: '#/components/messages/privateCancelOrdersResponse'

  privateAtomicCancelOrders:
    messages:
      privateAtomicCancelOrdersRequest:
        $ref: '#/components/messages/privateAtomicCancelOrdersRequest'
  privateAtomicCancelOrdersReply:
    messages:
      privateAtomicCancelOrdersResponse:
        $ref: '#/components/messages/privateAtomicCancelOrdersResponse'

  privateCancelOrdersAfter:
    messages:
      privateCancelOrdersAfterRequest:
        $ref: '#/components/messages/privateCancelOrdersAfterRequest'
  privateCancelOrdersAfterReply:
    messages:
      privateCancelOrdersAfterResponse:
        $ref: '#/components/messages/privateCancelOrdersAfterResponse'

  # --- Transfer request/reply channels ---

  privateDepositAssets:
    messages:
      privateDepositAssetsRequest:
        $ref: '#/components/messages/privateDepositAssetsRequest'
  privateDepositAssetsReply:
    messages:
      digitalAssetDeposit:
        $ref: '#/components/messages/digitalAssetDepositResponse'
      fiatDeposit:
        $ref: '#/components/messages/fiatDepositResponse'

  privateGetDepositHistory:
    messages:
      privateGetDepositHistoryRequest:
        $ref: '#/components/messages/privateGetDepositHistoryRequest'
  privateGetDepositHistoryReply:
    messages:
      digitalAssetHistory:
        $ref: '#/components/messages/digitalAssetDepositHistoryResponse'
      fiatHistory:
        $ref: '#/components/messages/fiatDepositHistoryResponse'

  privateWithdrawAssets:
    messages:
      privateWithdrawAssetsRequest:
        $ref: '#/components/messages/privateWithdrawAssetsRequest'
  privateWithdrawAssetsReply:
    messages:
      privateWithdrawAssetsResponse:
        $ref: '#/components/messages/privateWithdrawAssetsResponse'

  privateCryptoWithdrawal:
    messages:
      privateCryptoWithdrawalRequest:
        $ref: '#/components/messages/privateCryptoWithdrawalRequest'
  privateCryptoWithdrawalReply:
    messages:
      privateCryptoWithdrawalResponse:
        $ref: '#/components/messages/privateCryptoWithdrawalResponse'

  privateGetWithdrawalHistory:
    messages:
      privateGetWithdrawalHistoryRequest:
        $ref: '#/components/messages/privateGetWithdrawalHistoryRequest'
  privateGetWithdrawalHistoryReply:
    messages:
      privateGetWithdrawalHistoryResponse:
        $ref: '#/components/messages/privateGetWithdrawalHistoryResponse'

  # --- Account request/reply channels ---

  privateGetAccount:
    messages:
      privateGetAccountRequest:
        $ref: '#/components/messages/privateGetAccountRequest'
  privateGetAccountReply:
    messages:
      privateGetAccountResponse:
        $ref: '#/components/messages/privateGetAccountResponse'

  privateGetBalance:
    messages:
      privateGetBalanceRequest:
        $ref: '#/components/messages/privateGetBalanceRequest'
  privateGetBalanceReply:
    messages:
      privateGetBalanceResponse:
        $ref: '#/components/messages/privateGetBalanceResponse'

  privateGetFees:
    messages:
      privateGetFeesRequest:
        $ref: '#/components/messages/privateGetFeesRequest'
  privateGetFeesReply:
    messages:
      privateGetFeesResponse:
        $ref: '#/components/messages/privateGetFeesResponse'

  privateGetTransactionHistory:
    messages:
      privateGetTransactionHistoryRequest:
        $ref: '#/components/messages/privateGetTransactionHistoryRequest'
  privateGetTransactionHistoryReply:
    messages:
      privateGetTransactionHistoryResponse:
        $ref: '#/components/messages/privateGetTransactionHistoryResponse'

  # --- Synchronization request/reply channels ---

  getTime:
    messages:
      getTimeRequest:
        $ref: '#/components/messages/getTimeRequest'
  getTimeReply:
    messages:
      getTimeResponse:
        $ref: '#/components/messages/getTimeResponse'

  getMarkets:
    messages:
      getMarketsRequest:
        $ref: '#/components/messages/getMarketsRequest'
  getMarketsReply:
    messages:
      getMarketsResponse:
        $ref: '#/components/messages/getMarketsResponse'

  getAssets:
    messages:
      getAssetsRequest:
        $ref: '#/components/messages/getAssetsRequest'
  getAssetsReply:
    messages:
      getAssetsResponse:
        $ref: '#/components/messages/getAssetsResponse'

  # --- Subscription channels ---

  tickerSubscription:
    messages:
      tickerSubscribeRequest:
        $ref: '#/components/messages/tickerSubscriptionRequest'
  tickerEvents:
    messages:
      tickerConfirmation:
        $ref: '#/components/messages/tickerSubscriptionConfirmation'
      tickerEvent:
        $ref: '#/components/messages/tickerEvent'

  ticker24hSubscription:
    messages:
      ticker24hSubscribeRequest:
        $ref: '#/components/messages/ticker24hSubscriptionRequest'
  ticker24hEvents:
    messages:
      ticker24hConfirmation:
        $ref: '#/components/messages/ticker24hSubscriptionConfirmation'
      ticker24hEvent:
        $ref: '#/components/messages/ticker24hEvent'

  candlesSubscription:
    messages:
      candlesSubscribeRequest:
        $ref: '#/components/messages/candlesSubscriptionRequest'
  candlesEvents:
    messages:
      candlesConfirmation:
        $ref: '#/components/messages/candlesSubscriptionConfirmation'
      candlesEvent:
        $ref: '#/components/messages/candlesEvent'

  tradesSubscription:
    messages:
      tradesSubscribeRequest:
        $ref: '#/components/messages/tradesSubscriptionRequest'
  tradesEvents:
    messages:
      tradesConfirmation:
        $ref: '#/components/messages/tradesSubscriptionConfirmation'
      tradesEvent:
        $ref: '#/components/messages/tradesEvent'

  bookSubscription:
    messages:
      bookSubscribeRequest:
        $ref: '#/components/messages/bookSubscriptionRequest'
  bookEvents:
    messages:
      bookConfirmation:
        $ref: '#/components/messages/bookSubscriptionConfirmation'
      bookEvent:
        $ref: '#/components/messages/bookEvent'

  accountSubscription:
    messages:
      accountSubscribeRequest:
        $ref: '#/components/messages/accountSubscriptionRequest'
  accountEvents:
    messages:
      accountConfirmation:
        $ref: '#/components/messages/accountSubscriptionConfirmation'
      orderEvent:
        $ref: '#/components/messages/accountOrderEvent'
      fillEvent:
        $ref: '#/components/messages/accountFillEvent'

# =============================================================================
# Components - messages and schemas placeholder
# =============================================================================
# Due to file size, the full message and schema definitions continue below.
# Each message contains the complete inline payload schema.

components:

  securitySchemes:
    websocketAuth:
      type: httpApiKey
      in: query
      name: token
      description: Authenticated WebSocket session token obtained via REST API.

  messages:

    # =========================================================================
    # Mark

# --- truncated at 32 KB (151 KB total) ---
# Full source: https://artifacts.apis.io/bitvavo/asyncapi/bitvavo-exchange-websocket-asyncapi.yml

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/bitvavo-exchange-websocket-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.