{
  "openrpc": "1.3.2",
  "info": {
    "title": "Blocksize Market Data API OpenRPC",
    "version": "1.0.0",
    "description": "Generated from the Blocksize machine-readable API documentation. The API uses JSON-RPC 2.0 over WebSocket and selected HTTP POST methods."
  },
  "externalDocs": {
    "description": "Human-readable Blocksize API documentation",
    "url": "https://matrix.blocksize.capital/api-docs"
  },
  "servers": [
    {
      "name": "production-websocket",
      "url": "wss://data.blocksize.capital/marketdata/v1/ws"
    },
    {
      "name": "production-http",
      "url": "https://data.blocksize.capital/marketdata/v1/api"
    }
  ],
  "methods": [
    {
      "name": "authentication_logon",
      "summary": "authentication_logon",
      "description": "The Authentication service authenticates a websocket session with an API key.\n\nThis method authenticates the current session.\n\nThis is a prerequisite for most market data methods.\n\nWebsocket connection limits are enforced during logon per user and IP address, plus per API key when you authenticate with an API key.\n\nAvailable over WebSocket JSON-RPC.",
      "tags": [
        {
          "name": "Authentication"
        }
      ],
      "params": [
        {
          "name": "api_key",
          "required": true,
          "description": "Your generated API key",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "token",
          "required": true,
          "description": "An optional API Token",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for authentication_logon.",
        "schema": {
          "type": "object",
          "properties": {
            "user_id": {
              "type": "string",
              "description": "If authentication was successful, this will contain the user ID of the logged in user."
            }
          },
          "required": [
            "user_id"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "authentication_logon example 1",
          "params": {
            "api_key": "",
            "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
          },
          "result": {
            "name": "result",
            "value": {
              "user_id": "OjSYjQdxBC"
            }
          }
        }
      ]
    },
    {
      "name": "authentication_logoff",
      "summary": "authentication_logoff",
      "description": "The Authentication service authenticates a websocket session with an API key.\n\nThis method logs the user out of the current session.\n\nLogging off clears the current session's active subscriptions. Logging in again starts a fresh authenticated session.\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Authentication"
        }
      ],
      "params": [],
      "result": {
        "name": "result",
        "description": "Successful result for authentication_logoff.",
        "schema": {
          "type": "object",
          "properties": {
            "user_id": {
              "type": "string",
              "description": "If the logout was successful this field will be empty."
            }
          },
          "required": [
            "user_id"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "authentication_logoff example 1",
          "result": {
            "name": "result",
            "value": {
              "user_id": ""
            }
          }
        }
      ]
    },
    {
      "name": "vwap_subscribe",
      "summary": "vwap_subscribe",
      "description": "\nThis method subscribes to one or multiple instruments.\n\nThe server will respond to a subscription with a response containing the latest known prices for all successful pairs.\n\nAfter a successful subscription, notification messages will be sent by the server to the client with the method `vwap`\n\nUpdates will be sent in 250 millisecond batches.\n\nUpdates will immediately be sent when the price of an asset has changed and re-sent if the price has remained unchanged for 60 consecutive seconds.\n\nWildcard subscriptions, non-crypto instruments, and new tickers are controlled by your subscription plan. New tickers count toward the active feed limit.\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Real-Time VWAP"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for vwap_subscribe.",
        "schema": {
          "type": "object",
          "properties": {
            "snapshot": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ticker": {
                    "type": "string",
                    "description": "The ticker of the instrument"
                  },
                  "price": {
                    "type": "number",
                    "format": "double",
                    "description": "The VWAP of the instrument"
                  },
                  "size": {
                    "type": "number",
                    "format": "double",
                    "description": "Total size"
                  },
                  "volume": {
                    "type": "number",
                    "format": "double",
                    "description": "Total volume"
                  },
                  "market_cap": {
                    "type": "number",
                    "format": "double",
                    "description": "Circulating supply of the base token times the price"
                  },
                  "ts": {
                    "type": "integer",
                    "format": "int64",
                    "description": "Timestamp of VWAP in milliseconds. Indicates last timestamp (exchange provided) of the last trade used for calculation"
                  }
                },
                "required": [
                  "ticker",
                  "price",
                  "size",
                  "volume",
                  "ts"
                ],
                "additionalProperties": false
              },
              "description": "This will contain a list of the latest prices for all the requested tickers"
            }
          },
          "required": [
            "snapshot"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "vwap_subscribe example 1",
          "params": {
            "tickers": [
              "BTCEUR",
              "ETHEUR"
            ]
          },
          "result": {
            "name": "result",
            "value": {
              "snapshot": [
                {
                  "ticker": "ETHEUR",
                  "price": 2864.42,
                  "size": 42.1385,
                  "volume": 120745.66,
                  "ts": 1746705600000
                },
                {
                  "ticker": "BTCEUR",
                  "price": 58842.17,
                  "size": 1.3842,
                  "volume": 814023.45,
                  "ts": 1746705600000
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "vwap_unsubscribe",
      "summary": "vwap_unsubscribe",
      "description": "\nThis method unsubscribes from one or multiple instruments.\n\t\t\t\t\nAfter a successful unsubscription, no more notifications will be sent for the instruments.\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Real-Time VWAP"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for vwap_unsubscribe.",
        "schema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "vwap_unsubscribe example 1",
          "params": {
            "tickers": [
              "BTCEUR"
            ]
          },
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "vwap_instruments",
      "summary": "vwap_instruments",
      "description": "This method returns all currently available pairs.\n\nThis method is available over websocket or authenticated HTTP.\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Real-Time VWAP"
        }
      ],
      "params": [],
      "result": {
        "name": "result",
        "description": "Successful result for vwap_instruments.",
        "schema": {
          "type": "object",
          "properties": {
            "instruments": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ticker": {
                    "type": "string",
                    "description": "The instrument's ticker"
                  },
                  "base_currency": {
                    "type": "string",
                    "description": "The instrument's base currency"
                  },
                  "quote_currency": {
                    "type": "string",
                    "description": "The instrument's quote currency"
                  },
                  "exchanges": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "A list of exchanges which are currently used to calculate the price"
                  }
                },
                "required": [
                  "ticker",
                  "base_currency",
                  "quote_currency",
                  "exchanges"
                ],
                "additionalProperties": false
              },
              "description": "A list of all pairs that can be subscribed to"
            }
          },
          "required": [
            "instruments"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "vwap_instruments example 1",
          "result": {
            "name": "result",
            "value": {
              "instruments": [
                {
                  "ticker": "BTCEUR",
                  "base_currency": "BTC",
                  "quote_currency": "EUR",
                  "exchanges": [
                    "BINANCE",
                    "COINBASE",
                    "KRAKEN",
                    "MEXC",
                    "OKCOIN",
                    "POLONIEX"
                  ]
                },
                {
                  "ticker": "ETHEUR",
                  "base_currency": "ETH",
                  "quote_currency": "EUR",
                  "exchanges": [
                    "BINANCE",
                    "COINBASE",
                    "KRAKEN"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "vwap_latest",
      "summary": "vwap_latest",
      "description": "This method returns the latest known VWAP for the given ticker.\n\nThis method is available over websocket or authenticated HTTP.\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Real-Time VWAP"
        }
      ],
      "params": [
        {
          "name": "ticker",
          "required": true,
          "description": "The ticker of the instrument",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for vwap_latest.",
        "schema": {
          "type": "object",
          "properties": {
            "vwap": {
              "type": "object",
              "properties": {
                "ticker": {
                  "type": "string",
                  "description": "The ticker of the instrument"
                },
                "price": {
                  "type": "number",
                  "format": "double",
                  "description": "The VWAP of the instrument"
                },
                "size": {
                  "type": "number",
                  "format": "double",
                  "description": "Total size"
                },
                "volume": {
                  "type": "number",
                  "format": "double",
                  "description": "Total volume"
                },
                "market_cap": {
                  "type": "number",
                  "format": "double",
                  "description": "Circulating supply of the base token times the price"
                },
                "ts": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Timestamp of VWAP in milliseconds. Indicates last timestamp (exchange provided) of the last trade used for calculation"
                }
              },
              "required": [
                "ticker",
                "price",
                "size",
                "volume",
                "ts"
              ],
              "additionalProperties": false,
              "description": "The latest known VWAP for the given ticker"
            }
          },
          "required": [
            "vwap"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "vwap_latest example 1",
          "params": {
            "ticker": "BTCEUR"
          },
          "result": {
            "name": "result",
            "value": {
              "vwap": {
                "ticker": "BTCEUR",
                "price": 58855.84,
                "size": 0.2458,
                "volume": 14467.38,
                "ts": 1746705600250
              }
            }
          }
        }
      ]
    },
    {
      "name": "fixedvwap_subscribe",
      "summary": "fixedvwap_subscribe",
      "description": "\nThis method subscribes for fixed window VWAP (currently only 24h) to one or multiple instruments.\n\t\t\t\t\nThe server will respond to a subscription with a response containing the latest known prices for all successful pairs.\n\t\t\t\t\nAfter a successful subscription, notification messages will be sent by the server to the client with the method `fixedvwap`Updates will be sent every midnight UTC.\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "24-Hour VWAP"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for fixedvwap_subscribe.",
        "schema": {
          "type": "object",
          "properties": {
            "snapshot": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ticker": {
                    "type": "string",
                    "description": "The ticker of the instrument"
                  },
                  "price": {
                    "type": "number",
                    "format": "double",
                    "description": "The VWAP of the instrument"
                  },
                  "size": {
                    "type": "number",
                    "format": "double",
                    "description": "Total size"
                  },
                  "volume": {
                    "type": "number",
                    "format": "double",
                    "description": "Total volume"
                  },
                  "market_cap": {
                    "type": "number",
                    "format": "double",
                    "description": "Circulating supply of the base token times the price"
                  },
                  "ts": {
                    "type": "integer",
                    "format": "int64",
                    "description": "Timestamp of VWAP in milliseconds. Indicates last timestamp (exchange provided) of the last trade used for calculation"
                  }
                },
                "required": [
                  "ticker",
                  "price",
                  "size",
                  "volume",
                  "ts"
                ],
                "additionalProperties": false
              },
              "description": "This will contain a list of the latest prices for all the requested tickers"
            }
          },
          "required": [
            "snapshot"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "fixedvwap_subscribe example 1",
          "params": {
            "tickers": [
              "BTCEUR",
              "ETHEUR"
            ]
          },
          "result": {
            "name": "result",
            "value": {
              "snapshot": [
                {
                  "ticker": "ETHEUR",
                  "price": 2849.73,
                  "size": 3124.57,
                  "volume": 8901243.12,
                  "ts": 1746662400000
                },
                {
                  "ticker": "BTCEUR",
                  "price": 58592.44,
                  "size": 124.385,
                  "volume": 72811455.31,
                  "ts": 1746662400000
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "fixedvwap_unsubscribe",
      "summary": "fixedvwap_unsubscribe",
      "description": "\nThis method unsubscribes from one or multiple instruments.\n\t\t\t\t\nAfter a successful unsubscription, no more notifications will be sent for the instruments.\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "24-Hour VWAP"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for fixedvwap_unsubscribe.",
        "schema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "fixedvwap_unsubscribe example 1",
          "params": {
            "tickers": [
              "BTCEUR"
            ]
          },
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "closingprice_list",
      "summary": "closingprice_list",
      "description": "The 30-Minute VWAP service allows to get the closing price in a given timeframe for all available pairs\n\nThis method returns the volume-weighted closing price for all available pairs at the requested point in time.\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "30-Minute VWAP"
        }
      ],
      "params": [
        {
          "name": "ts",
          "required": true,
          "description": "The Unix timestamp in milliseconds.",
          "schema": {
            "type": "integer",
            "format": "int64"
          }
        },
        {
          "name": "quote",
          "required": true,
          "description": "An optional quote currency to report prices in. If EUR or USD are specified, synthetic prices will be calculated.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for closingprice_list.",
        "schema": {
          "type": "object",
          "properties": {
            "conversion_rates": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "from": {
                    "type": "string",
                    "description": "The currency this conversion rate is being applied to"
                  },
                  "to": {
                    "type": "string",
                    "description": "The currency this conversion rate will result in"
                  },
                  "rate": {
                    "type": "string",
                    "description": "The conversion rate"
                  },
                  "ts": {
                    "type": "integer",
                    "format": "int64",
                    "description": "The Unix timestamp in milliseconds."
                  },
                  "datetime": {
                    "type": "string",
                    "description": "The timestamp in RFC3339 format."
                  }
                },
                "required": [
                  "from",
                  "to",
                  "rate",
                  "ts",
                  "datetime"
                ],
                "additionalProperties": false
              },
              "description": "The conversion rates applied to calculate synthetic prices."
            },
            "prices": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "base": {
                    "type": "string",
                    "description": "The base currency"
                  },
                  "quote": {
                    "type": "string",
                    "description": "The quote currency"
                  },
                  "price": {
                    "type": "string",
                    "description": "The closing price"
                  },
                  "ts": {
                    "type": "integer",
                    "format": "int64",
                    "description": "The Unix timestamp in milliseconds."
                  },
                  "datetime": {
                    "type": "string",
                    "description": "The timestamp in RFC3339 format."
                  },
                  "original_quote": {
                    "type": "string",
                    "description": "For those pairs that were calculated using conversion"
                  }
                },
                "required": [
                  "base",
                  "quote",
                  "price",
                  "ts",
                  "datetime"
                ],
                "additionalProperties": false
              },
              "description": "A list of closing prices"
            }
          },
          "required": [
            "prices"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "closingprice_list example 1",
          "params": {
            "ts": 1746576000000,
            "quote": "EUR"
          },
          "result": {
            "name": "result",
            "value": {
              "conversion_rates": [
                {
                  "from": "USD",
                  "to": "EUR",
                  "rate": "0.92641",
                  "ts": 1746576000000,
                  "datetime": "2025-05-07T00:00:00Z"
                }
              ],
              "prices": [
                {
                  "base": "BTC",
                  "quote": "EUR",
                  "price": "58742.19",
                  "ts": 1746576000000,
                  "datetime": "2025-05-07T00:00:00Z"
                },
                {
                  "base": "ETH",
                  "quote": "EUR",
                  "price": "2861.42",
                  "ts": 1746576000000,
                  "datetime": "2025-05-07T00:00:00Z"
                },
                {
                  "base": "STETH",
                  "quote": "EUR",
                  "price": "2834.91",
                  "ts": 1746576000000,
                  "datetime": "2025-05-07T00:00:00Z",
                  "original_quote": "USD"
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "closingprice_trades",
      "summary": "closingprice_trades",
      "description": "The 30-Minute VWAP service allows to get the closing price in a given timeframe for all available pairs\n\nThis method returns the trades used for calculation of closing price\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "30-Minute VWAP"
        }
      ],
      "params": [
        {
          "name": "base",
          "required": true,
          "description": "The base currency",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "quote",
          "required": true,
          "description": "The quote currency",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "ts",
          "required": true,
          "description": "The UTC timestamp in milliseconds.",
          "schema": {
            "type": "integer",
            "format": "int64"
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for closingprice_trades.",
        "schema": {
          "type": "object",
          "properties": {
            "prices": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "base": {
                    "type": "string",
                    "description": "The base currency"
                  },
                  "quote": {
                    "type": "string",
                    "description": "The quote currency"
                  },
                  "exchange": {
                    "type": "string",
                    "description": "The trade exchange"
                  },
                  "price": {
                    "type": "string",
                    "description": "The trade price"
                  },
                  "size": {
                    "type": "string",
                    "description": "Size of the trade in base currency"
                  },
                  "ts": {
                    "type": "integer",
                    "format": "int64",
                    "description": "The UTC timestamp in milliseconds."
                  }
                },
                "required": [
                  "base",
                  "quote",
                  "exchange",
                  "price",
                  "size",
                  "ts"
                ],
                "additionalProperties": false
              },
              "description": "A list of trades"
            }
          },
          "required": [
            "prices"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "closingprice_trades example 1",
          "params": {
            "base": "BTC",
            "quote": "EUR",
            "ts": 1746576000000
          },
          "result": {
            "name": "result",
            "value": {
              "prices": [
                {
                  "base": "BTC",
                  "quote": "EUR",
                  "exchange": "COINBASE",
                  "price": "58750.10",
                  "size": "0.2456",
                  "ts": 1746575982000
                },
                {
                  "base": "BTC",
                  "quote": "EUR",
                  "exchange": "BITSTAMP",
                  "price": "58741.32",
                  "size": "0.1180",
                  "ts": 1746575957000
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "bidask_subscribe",
      "summary": "bidask_subscribe",
      "description": "The Bid/Ask service allows to subscribe to aggregated bid and ask prices for one or multiple instruments.\n\n\nThis method subscribes the session to one or multiple Bid/Ask prices.\n\t\t\t\t\nThe server will respond with the latest known prices for all successful pairs.\n\t\t\t\t\nAfter a successful subscription, notification messages will be sent by the server to the client with the method `bidask`\n\t\t\t\t\nUpdates will be sent in 250 millisecond batches.\n\t\t\t\t\nUpdates will immediately be sent when the price of an asset has changed and re-sent if the price has remained unchanged for 60 consecutive seconds.\n\t\t\t\t\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Real-Time Bid/Ask"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for bidask_subscribe.",
        "schema": {
          "type": "object",
          "properties": {
            "snapshot": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ticker": {
                    "type": "string",
                    "description": "The ticker of the instrument"
                  },
                  "agg_bid_price": {
                    "type": "string",
                    "description": "The aggregated bid price of the instrument"
                  },
                  "agg_bid_size": {
                    "type": "string",
                    "description": "The aggregated bid size of the instrument"
                  },
                  "agg_ask_price": {
                    "type": "string",
                    "description": "The aggregated ask price of the instrument"
                  },
                  "agg_ask_size": {
                    "type": "string",
                    "description": "The aggregated ask size of the instrument"
                  },
                  "agg_mid_price": {
                    "type": "string",
                    "description": "The aggregated mid price of the instrument"
                  },
                  "ts": {
                    "type": "integer",
                    "format": "int64",
                    "description": "The UTC timestamp in microseconds."
                  },
                  "market_cap": {
                    "type": "number",
                    "format": "double",
                    "description": "Circulating supply of the base token times mid price"
                  }
                },
                "required": [
                  "ticker",
                  "agg_bid_price",
                  "agg_bid_size",
                  "agg_ask_price",
                  "agg_ask_size",
                  "agg_mid_price",
                  "ts"
                ],
                "additionalProperties": false
              },
              "description": "This will contain price updates for all the requested tickers"
            }
          },
          "required": [
            "snapshot"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "bidask_subscribe example 1",
          "params": {
            "tickers": [
              "BTCEUR",
              "ETHEUR"
            ]
          },
          "result": {
            "name": "result",
            "value": {
              "snapshot": [
                {
                  "ticker": "BTCEUR",
                  "agg_bid_price": "58840.51",
                  "agg_bid_size": "0.9342",
                  "agg_ask_price": "58845.66",
                  "agg_ask_size": "1.2874",
                  "agg_mid_price": "58843.085",
                  "ts": 1746691200123456
                },
                {
                  "ticker": "ETHEUR",
                  "agg_bid_price": "2863.74",
                  "agg_bid_size": "18.4421",
                  "agg_ask_price": "2864.22",
                  "agg_ask_size": "11.3084",
                  "agg_mid_price": "2863.98",
                  "ts": 1746691200123491
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "bidask_unsubscribe",
      "summary": "bidask_unsubscribe",
      "description": "The Bid/Ask service allows to subscribe to aggregated bid and ask prices for one or multiple instruments.\n\n\nThis method unsubscribes from one or multiple instruments.\n\t\t\t\t\nAfter a successful unsubscription, no more notifications will be sent for the instruments.\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Real-Time Bid/Ask"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for bidask_unsubscribe.",
        "schema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "bidask_unsubscribe example 1",
          "params": {
            "tickers": [
              "BTCEUR"
            ]
          },
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "bidask_instruments",
      "summary": "bidask_instruments",
      "description": "The Bid/Ask service allows to subscribe to aggregated bid and ask prices for one or multiple instruments.\n\nThis method returns all available pairs.\n\nThis method is available over websocket or authenticated HTTP.\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Real-Time Bid/Ask"
        }
      ],
      "params": [],
      "result": {
        "name": "result",
        "description": "Successful result for bidask_instruments.",
        "schema": {
          "type": "object",
          "properties": {
            "instruments": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ticker": {
                    "type": "string",
                    "description": "The instrument's ticker"
                  },
                  "base_currency": {
                    "type": "string",
                    "description": "The instrument's base currency"
                  },
                  "quote_currency": {
                    "type": "string",
                    "description": "The instrument's quote currency"
                  },
                  "exchanges": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "A list of exchanges which are currently used to calculate the price"
                  }
                },
                "required": [
                  "ticker",
                  "base_currency",
                  "quote_currency",
                  "exchanges"
                ],
                "additionalProperties": false
              },
              "description": "A list of all pairs that can be subscribed to"
            }
          },
          "required": [
            "instruments"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "bidask_instruments example 1",
          "result": {
            "name": "result",
            "value": {
              "instruments": [
                {
                  "ticker": "BTCEUR",
                  "base_currency": "BTC",
                  "quote_currency": "EUR",
                  "exchanges": [
                    "BINANCE",
                    "COINBASE",
                    "KRAKEN",
                    "MEXC",
                    "OKCOIN",
                    "POLONIEX"
                  ]
                },
                {
                  "ticker": "ETHEUR",
                  "base_currency": "ETH",
                  "quote_currency": "EUR",
                  "exchanges": [
                    "BINANCE",
                    "COINBASE",
                    "KRAKEN"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "bidask_getSnapshot",
      "summary": "bidask_getSnapshot",
      "description": "The Bid/Ask service allows to subscribe to aggregated bid and ask prices for one or multiple instruments.\n\nReturns a snapshot of the latest bid/ask for all instruments over the last 24h. If no data exists yet, returns an empty snapshot.\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Real-Time Bid/Ask"
        }
      ],
      "params": [],
      "result": {
        "name": "result",
        "description": "Successful result for bidask_getSnapshot.",
        "schema": {
          "type": "object",
          "properties": {
            "snapshot": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ticker": {
                    "type": "string",
                    "description": "The ticker of the instrument"
                  },
                  "agg_bid_price": {
                    "type": "string",
                    "description": "The aggregated bid price of the instrument"
                  },
                  "agg_bid_size": {
                    "type": "string",
                    "description": "The aggregated bid size of the instrument"
                  },
                  "agg_ask_price": {
                    "type": "string",
                    "description": "The aggregated ask price of the instrument"
                  },
                  "agg_ask_size": {
                    "type": "string",
                    "description": "The aggregated ask size of the instrument"
                  },
                  "agg_mid_price": {
                    "type": "string",
                    "description": "The aggregated mid price of the instrument"
                  },
                  "ts": {
                    "type": "integer",
                    "format": "int64",
                    "description": "The UTC timestamp in microseconds."
                  },
                  "market_cap": {
                    "type": "number",
                    "format": "double",
                    "description": "Circulating supply of the base token times mid price"
                  }
                },
                "required": [
                  "ticker",
                  "agg_bid_price",
                  "agg_bid_size",
                  "agg_ask_price",
                  "agg_ask_size",
                  "agg_mid_price",
                  "ts"
                ],
                "additionalProperties": false
              },
              "description": "This will contain price updates for all the requested tickers"
            }
          },
          "required": [
            "snapshot"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "bidask_getSnapshot example 1",
          "params": {},
          "result": {
            "name": "result",
            "value": {
              "snapshot": [
                {
                  "ticker": "BTCEUR",
                  "agg_bid_price": "58840.51",
                  "agg_bid_size": "0.9342",
                  "agg_ask_price": "58845.66",
                  "agg_ask_size": "1.2874",
                  "agg_mid_price": "58843.085",
                  "ts": 1746691200123456
                },
                {
                  "ticker": "ETHEUR",
                  "agg_bid_price": "2863.74",
                  "agg_bid_size": "18.4421",
                  "agg_ask_price": "2864.22",
                  "agg_ask_size": "11.3084",
                  "agg_mid_price": "2863.98",
                  "ts": 1746691200123491
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "state_subscribe",
      "summary": "state_subscribe",
      "description": "The AMM State Price service allows clients to subscribe to AMM state for one or multiple instruments. Streaming subscriptions are websocket-only.\n\n\nThis method subscribes to one or multiple instruments.\n\nAfter a successful subscription, notification messages will be sent by the server to the client with the method `state`\n\nThe server will respond to a subscription with a response containing the latest known state for all successful pairs.\n\nUpdates will immediately be sent when the state of an asset has changed and re-sent if the state has remained unchanged for 60 consecutive seconds.\n\n\t\t\t\t\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "AMM State Price"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for state_subscribe.",
        "schema": {
          "type": "object",
          "properties": {
            "snapshot": {
              "type": "array",
              "items": {},
              "description": "This will contain the current aggregated data of all the requested tickers"
            }
          },
          "required": [
            "snapshot"
          ],
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "state_subscribe example 1",
          "params": {
            "tickers": [
              "WSTETHETH"
            ]
          },
          "result": {
            "name": "result",
            "value": {
              "snapshot": [
                {
                  "timestamp": 1746705600,
                  "base_symbol": "WSTETH",
                  "quote_symbol": "ETH",
                  "aggregated_state_price": "1.173842",
                  "aggregated_plus_1_percent_usd_market_depth": "1265438.22",
                  "aggregated_minus_1_percent_usd_market_depth": "1189044.57",
                  "aggregated_7d_usd_trading_volume": "28456291.34"
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "state_unsubscribe",
      "summary": "state_unsubscribe",
      "description": "The AMM State Price service allows clients to subscribe to AMM state for one or multiple instruments. Streaming subscriptions are websocket-only.\n\n\nThis method unsubscribes from one or multiple instruments.\n\t\t\t\t\nAfter a successful unsubscription, no more notifications will be sent for the instruments.\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "AMM State Price"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for state_unsubscribe.",
        "schema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "state_unsubscribe example 1",
          "params": {
            "tickers": [
              "WSTETHETH"
            ]
          },
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "state_pool",
      "summary": "state_pool",
      "description": "The AMM State Price service allows clients to subscribe to AMM state for one or multiple instruments. Streaming subscriptions are websocket-only.\n\nThis method returns the state price of a given pool.\n\nThis method is available over authenticated HTTP.\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "AMM State Price"
        }
      ],
      "params": [
        {
          "name": "symbol",
          "required": false,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "block",
          "required": false,
          "schema": {
            "type": "integer",
            "format": "int64"
          }
        },
        {
          "name": "block_time",
          "required": false,
          "schema": {
            "type": "integer",
            "format": "int64"
          }
        },
        {
          "name": "network",
          "required": false,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "pool",
          "required": false,
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for state_pool.",
        "schema": {
          "type": "object",
          "properties": {
            "state": {}
          },
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "state_pool example 1",
          "params": {
            "network": "ethereum",
            "pool": "0xDC24316b9AE028F1497c275EB9192a3Ea0f67022"
          },
          "result": {
            "name": "result",
            "value": {
              "state": {
                "blockchain": "ethereum",
                "block_number": 19876543,
                "block_time": 1746691187,
                "pool": "0xDC24316b9AE028F1497c275EB9192a3Ea0f67022",
                "state": "1.001842",
                "plus_1_percent_market_depth": "418.32",
                "minus_1_percent_market_depth": "405.11",
                "plus_1_percent_usd_market_depth": "1265438.22",
                "minus_1_percent_usd_market_depth": "1226113.47",
                "trading_volume_usd": "28456291.34",
                "weight": "0.500000000000000000",
                "base_symbol": "STETH",
                "quote_symbol": "ETH",
                "quote_price_usd": "3031.42",
                "state_price_usd": "3037.00"
              }
            }
          }
        }
      ]
    },
    {
      "name": "state_instruments",
      "summary": "state_instruments",
      "description": "The AMM State Price service allows clients to subscribe to AMM state for one or multiple instruments. Streaming subscriptions are websocket-only.\n\nThis method returns the supported instruments.\n\nThis method is available over authenticated HTTP.\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "AMM State Price"
        }
      ],
      "params": [],
      "result": {
        "name": "result",
        "description": "Successful result for state_instruments.",
        "schema": {
          "type": "object",
          "properties": {
            "instruments": {
              "type": "array",
              "items": {}
            }
          },
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "state_instruments example 1",
          "result": {
            "name": "result",
            "value": {
              "instruments": [
                {
                  "symbol": "STETHETH",
                  "pools": [
                    {
                      "address": "0xDC24316b9AE028F1497c275EB9192a3Ea0f67022",
                      "network": "ethereum"
                    },
                    {
                      "address": "0x21E27A5E5513D6E65C4F830167390997AA84843A",
                      "network": "ethereum"
                    }
                  ]
                },
                {
                  "symbol": "WBTCUSDC",
                  "pools": [
                    {
                      "address": "0x99AC8CA7087F369FC435ACB5C9ACDACBDA1D3DFF",
                      "network": "arbitrum"
                    }
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "trade_subscribe",
      "summary": "trade_subscribe",
      "description": "\nThis method subscribes to the trades for one or multiple instruments.\n\t\t\t\t\nThe server will always respond with an empty response.\n\t\t\t\t\nAfter a successful subscription, notification messages will be sent by the server to the client with the method `trade`\n\t\t\t\t\nUpdate notifications will be send in 250 millisecond batches. Updates will only be sent if a trade occurred.\n\t\t\t\t\nTo subscribe to all trades, use a special wildcard ticker `*`.\n\nDepending on your subscription plan, you may need to subscribe to explicit tickers instead of using the wildcard subscription. Non-crypto instruments and additional tickers also remain subject to your plan's asset scope and active feed limits.\n\nExample wildcard subscription:\n\t\t\t\t\n`\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 0,\n  \"method\": \"trade_subscribe\",\n  \"params\": {\n    \"tickers\": [\n      \"*\"\n    ]\n  }\n}\t\t\t\t\n`\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Events"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        {
          "name": "filters",
          "required": false,
          "description": "A list of exchanges or tags to filter the trades by",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for trade_subscribe.",
        "schema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "trade_subscribe example 1",
          "params": {
            "tickers": [
              "WETHUSDC",
              "WBTCUSDC"
            ],
            "filters": [
              "UNISWAPV3_ETHEREUM"
            ]
          },
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "trade_unsubscribe",
      "summary": "trade_unsubscribe",
      "description": "\nThis method unsubscribes from one or multiple instruments.\n\t\t\t\t\nAfter a successful unsubscription, no more notifications will be sent for the instruments.\n\t\t\t\t\nIf subscribed using the wildcard character `*`, the unsubscription has to be done with the same.\n\nAvailable over WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Events"
        }
      ],
      "params": [
        {
          "name": "tickers",
          "required": true,
          "description": "A list of tickers",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "description": "Successful result for trade_unsubscribe.",
        "schema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "trade_unsubscribe example 1",
          "params": {
            "tickers": [
              "WETHUSDC"
            ]
          },
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "time_now",
      "summary": "time_now",
      "description": "This method can be used to get the current time of the server or to test if the connection is still alive.\n\nAvailable over HTTP JSON-RPC POST and WebSocket JSON-RPC.\n\nRequires authentication.",
      "tags": [
        {
          "name": "Time"
        }
      ],
      "params": [],
      "result": {
        "name": "result",
        "description": "Successful result for time_now.",
        "schema": {
          "type": "object",
          "properties": {
            "timestamp": {
              "type": "integer",
              "format": "int64",
              "description": "The server time in seconds (Unix)."
            }
          },
          "additionalProperties": false
        }
      },
      "errors": [
        {
          "code": -32600,
          "message": "invalid request",
          "data": "The request made was invalid. Check data for more details."
        },
        {
          "code": -32601,
          "message": "method not found",
          "data": "The requested method or service could not be found."
        },
        {
          "code": -32602,
          "message": "invalid params",
          "data": "The requested method expects a different parameter format."
        },
        {
          "code": -32603,
          "message": "internal error",
          "data": "An internal error occurred. Check data for more details."
        },
        {
          "code": -32700,
          "message": "parse error",
          "data": "An invalid JSON message was received."
        },
        {
          "code": 4000,
          "message": "unauthenticated",
          "data": "A method that requires authentication was called from an unauthenticated session."
        },
        {
          "code": 4001,
          "message": "invalid API key",
          "data": "The API key that was tried to authenticate with is invalid."
        },
        {
          "code": 4002,
          "message": "invalid API token",
          "data": "The API token that was tried to authenticate with is invalid."
        },
        {
          "code": 4003,
          "message": "payment required",
          "data": "Your subscription plan does not allow the requested method. Access can depend on your plan, access method, instrument scope, and remaining plan limits."
        }
      ],
      "examples": [
        {
          "name": "time_now example 1",
          "result": {
            "name": "result",
            "value": {
              "timestamp": 1746705600
            }
          }
        }
      ]
    }
  ],
  "components": {
    "schemas": {
      "JsonRpcId": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "integer"
          }
        ]
      },
      "JsonRpcError": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "enum": [
              -32600,
              -32601,
              -32602,
              -32603,
              -32700,
              4000,
              4001,
              4002,
              4003
            ]
          },
          "message": {
            "type": "string"
          },
          "data": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  }
}
