Bullish Asset Data API

Non-authenticated APIs for accessing general asset data information

OpenAPI Specification

bullish-asset-data-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: REST API specification for the Bullish Trading API.
  version: 1.0.0
  title: Bullish Trading Asset Data API
  contact:
    name: Bullish Help Center
    email: support@bullish.com
    url: https://support.bullish.com
servers:
- url: https://api.exchange.bullish.com/trading-api
  description: PRODUCTION
- url: https://registered.api.exchange.bullish.com/trading-api
  description: PRODUCTION
- url: https://prod.access.bullish.com/trading-api
  description: PRODUCTION (Direct Connect)
- url: https://api.bugbounty.bullish.com/trading-api
  description: SECURITY SANDBOX
- url: https://api.simnext.bullish-test.com/trading-api
  description: API SANDBOX
- url: https://registered.api.simnext.bullish-test.com/trading-api
  description: API SANDBOX
- url: https://simnext.access.bullish.com/trading-api
  description: API SANDBOX (Direct Connect)
tags:
- name: asset-data
  x-displayName: Asset Data
  description: Non-authenticated APIs for accessing general asset data information
paths:
  /v1/assets:
    get:
      tags:
      - asset-data
      summary: Get Assets
      description: Get supported assets.
      operationId: getAssets
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                minItems: 0
                maxItems: 10
                items:
                  $ref: '#/components/schemas/Asset'
        '429':
          description: Too Many Requests
        '500':
          description: Internal Server Error
      security: []
  /v1/assets/{symbol}:
    get:
      tags:
      - asset-data
      summary: Get Asset by Symbol
      description: Get Asset by Symbol
      operationId: getAssetBySymbol
      parameters:
      - in: path
        name: symbol
        schema:
          type: string
        required: true
        example: BTC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
        '429':
          description: Too Many Requests
        '500':
          description: Internal Server Error
      security: []
  /v1/vol-grids:
    get:
      tags:
      - asset-data
      summary: Get Vol Grids
      description: Returns grids for **all** options-enabled underlyings.
      operationId: getVolGrids
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VolGridConfiguration'
        '500':
          description: Internal Server Error
      security: []
  /v1/assets/{symbol}/vol-grid:
    get:
      parameters:
      - in: path
        name: symbol
        schema:
          type: string
        required: true
        example: BTC
        description: The underlying asset symbol (e.g. `BTC`, `ETH`)
      tags:
      - asset-data
      summary: Get Vol Grid by Symbol
      description: Returns the current active BPM (Bullish Portfolio Margin) vol grid configuration for the specified underlying asset.
      operationId: getVolGridByAsset
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VolGridConfiguration'
        '400':
          description: Invalid asset symbol
        '404':
          description: Vol grid config not found for assetSymbol
        '500':
          description: Internal Server Error
      security: []
components:
  schemas:
    AssetValue:
      description: see [asset value](/rest/general/price-quantity-precision) format
      type: string
      example: '1.00000000'
    Asset:
      type: object
      required:
      - assetId
      - symbol
      - name
      - precision
      - minBalanceInterest
      - minFee
      - apr
      - collateralRating
      - maxBorrow
      - totalOfferedLoanQuantity
      - loanBorrowedQuantity
      - collateralBands
      - underlyingAsset
      properties:
        assetId:
          description: unique asset ID
          allOf:
          - $ref: '#/components/schemas/AssetID'
        symbol:
          description: asset symbol
          allOf:
          - $ref: '#/components/schemas/AssetSymbol'
        name:
          description: asset name
          allOf:
          - $ref: '#/components/schemas/AssetName'
        precision:
          description: number of decimal digits 'after the dot' for asset amount
          type: string
          example: '8'
        minBalanceInterest:
          allOf:
          - $ref: '#/components/schemas/AssetValue'
        minFee:
          description: minimum fee
          allOf:
          - $ref: '#/components/schemas/AssetValue'
        apr:
          description: annualized percentage rate
          type: string
          example: '12.50'
        collateralRating:
          deprecated: true
          description: collateral rating applied to this asset, a value of 100.00 indicates 100%. `Deprecated in favour of collateral bands`
          type: string
          example: '95.00'
        maxBorrow:
          description: maximum quantity that can be borrowed for this asset
          type: string
          example: '10.00000000'
        totalOfferedLoanQuantity:
          description: quantity of an asset that is across all loan offers on the exchange
          type: string
          example: '5.00000000'
        loanBorrowedQuantity:
          description: amount of loans that is currently being borrowed for the asset
          type: string
          example: '3.00000000'
        collateralBands:
          description: list of collateral bands for the asset. A collateral band holds the upper limit of the USD notional and the corresponding collateral percentage which applies to it. An asset's collateral value will be capped by the highest limit of the collateral bands, any remaining amount greater than this limit will have a collateral percentage of 0. If an asset has an empty list of CollateralBands, this signifies that the asset has a collateralValue of 0.
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/CollateralBand'
        underlyingAsset:
          description: underlying asset for the asset.
          allOf:
          - $ref: '#/components/schemas/UnderlyingAsset'
    VolGridConfiguration:
      type: object
      properties:
        assetId:
          description: underlying asset ID
          type: string
          example: '1'
        assetSymbol:
          description: underlying asset symbol
          type: string
          example: BTC
        effectiveFromDatetime:
          description: ISO 8601 datetime of when this vol grid configuration became effective
          type: string
          format: date-time
          example: '2026-05-29T08:00:00.000Z'
        volGrid:
          description: list of vol grid rows, one per days-to-expiry bucket
          type: array
          items:
            $ref: '#/components/schemas/VolGridData'
          example:
          - timeToExpiryDays: 0
            atmMax: '0.100754'
            atmMin: '-0.078081'
            skewMax: '0.083929'
            skewMin: '-0.103593'
          - timeToExpiryDays: 1
            atmMax: '0.100754'
            atmMin: '-0.078081'
            skewMax: '0.083929'
            skewMin: '-0.103593'
          - timeToExpiryDays: 7
            atmMax: '0.100754'
            atmMin: '-0.078081'
            skewMax: '0.063888'
            skewMin: '-0.073318'
          - timeToExpiryDays: 14
            atmMax: '0.100754'
            atmMin: '-0.078081'
            skewMax: '0.043847'
            skewMin: '-0.043043'
          - timeToExpiryDays: 30
            atmMax: '0.100754'
            atmMin: '-0.078081'
            skewMax: '0.034441'
            skewMin: '-0.034124'
          - timeToExpiryDays: 60
            atmMax: '0.100754'
            atmMin: '-0.078081'
            skewMax: '0.024271'
            skewMin: '-0.02397'
          - timeToExpiryDays: 90
            atmMax: '0.100754'
            atmMin: '-0.078081'
            skewMax: '0.024142'
            skewMin: '-0.024381'
          - timeToExpiryDays: 180
            atmMax: '0.100754'
            atmMin: '-0.078081'
            skewMax: '0.017566'
            skewMin: '-0.017433'
    AssetSymbol:
      type: string
      description: asset symbol as denoted in the world
      example: BTC
    VolGridData:
      type: object
      properties:
        timeToExpiryDays:
          description: days-to-expiry bucket this row applies to. supported buckets — [0, 1, 7, 14, 30, 60, 90, 180]
          type: integer
          example: 0
        atmMax:
          description: max upward ATM IV shift applied in BPM stress. supported range — [0, 1]
          type: string
          example: '0.100754'
        atmMin:
          description: max downward ATM IV shift. supported range — [-1, 0]
          type: string
          example: '-0.078081'
        skewMax:
          description: max upward skew shift. supported range — [0, 1]
          type: string
          example: '0.083929'
        skewMin:
          description: max downward skew shift. supported range [-1, 0]
          type: string
          example: '-0.103593'
    UnderlyingAsset:
      type: object
      properties:
        symbol:
          description: underlying asset symbol
          type: string
          example: BTC
        assetId:
          description: underlying asset ID
          type: string
          example: '1'
        bpmMinReturnStart:
          description: start of the 1/1000 biggest downward price movement of an underlying asset over 6 hours
          type: string
          example: '40.0000'
        bpmMinReturnEnd:
          description: end of the 1/1000 biggest downward price movement of an underlying asset over 6 hours
          type: string
          example: '20.0000'
        bpmMaxReturnStart:
          description: start of the 1/1000 biggest upward price movement of an underlying asset over 6 hours
          type: string
          example: '30.0000'
        bpmMaxReturnEnd:
          description: end of the 1/1000 biggest upward price movement of an underlying asset over 6 hours
          type: string
          example: '50.0000'
        marketRiskFloorPctStart:
          description: the percentage range of risk reduction allowed for a portfolio
          type: string
          example: '1.00'
        marketRiskFloorPctEnd:
          description: the percentage range of risk reduction allowed for a portfolio
          type: string
          example: '5.00'
        bpmTransitionDateTimeStart:
          description: the start datetime which the values linearly transition from `bpmMinReturnStart` to `bpmMinReturnEnd` for an underlying asset
          type: string
          example: '2024-08-02T12:00:00.000Z'
        bpmTransitionDateTimeEnd:
          description: the end datetime which the values linearly transition from `bpmMinReturnStart` to `bpmMinReturnEnd` for an underlying asset
          type: string
          example: '2024-08-02T18:00:00.000Z'
    CollateralBand:
      type: object
      properties:
        collateralPercentage:
          description: collateral percentage applied to the asset for this band - a value of 90.00 indicates 90% of the asset is eligible to be used as collateral
          type: string
          example: '95.00'
        bandLimitUSD:
          description: upper limit in USD for this band
          type: string
          example: '1000000.0000'
    AssetID:
      type: string
      description: unique asset ID
      example: '1'
    AssetName:
      type: string
      description: asset name
      example: Bitcoin
  securitySchemes:
    jwtTokenAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
x-tagGroups:
- name: Public Endpoints
  tags:
  - general
  - asset-data
  - market-data
  - market-history-data
  - index-price-data
  - derivatives-public
  - auction-public
- name: Private Endpoints
  tags:
  - session-management
  - trading-accounts
  - account-assets
  - orders
  - trades
  - amm-instructions
  - transfer
  - custody
  - derivatives
  - market-maker-protection
  - history
  - otc
  - idb
  - portfolio-margin-simulator