openapi: 3.0.1 references: page_query_param: &page_query_param in: query name: page schema: type: integer required: false description: Page number, starts at 1. Increment to paginate through results (until result is empty array) fields_query_param: &fields_query_param in: query name: fields schema: type: string required: false description: pare down the returned fields (comma `,` separated, drill down with a slash `/`) as_markdown_query_param: &as_markdown_query_param in: query name: as-markdown schema: type: bool required: false description: formatting (other than HTML links) is hidden. Use this query param to return content with markdown syntax assetKey_path_param: &assetKey_path_param in: path name: assetKey required: true schema: type: string description: This "key" can be the asset's ID (unique), slug (unique), or symbol (non-unique). We strongly recommend using ID or slug, as some relatively common symbols may produce unexpected results. In general, the oldest asset with a given symbol will be returned when symbol is used. marketKey_path_param: &marketKey_path_param in: path name: marketKey required: true schema: type: string description: This key can be the market's ID (unique), or a string in the form of exchangeSlug-baseAssetSymbol-quoteAssetSymbol example: binance-btc-usdt metricID_path_param: &metricID_path_param in: path name: metricID required: true schema: type: string description: The metricID is a unique identifier which determines which columns are returned by time-series endpoints. For a list of valid metric ids, check the API response at https://data.messari.io/api/v1/assets/metrics. example: price format_query_param: &format_query_param in: query name: format required: false schema: type: string enum: [csv, json] description: Specify format = csv to download data as CSV. timestamp_format_query_param: ×tamp_format_query_param in: query name: timestamp-format required: false schema: type: string enum: [unix-millisecond, unix-second, rfc3339] description: Specify timestamp-format=rfc3339 for timestamps in the format "2016-11-01T20:44:39Z" order_query_param: &order_query_param in: query name: order required: false schema: type: string enum: [asc, desc] description: Order controls whether points in the response are returned in ascending or descending order. start_query_param: &start_query_param in: query name: start required: false schema: type: string format: date-time description: The "start" query parameter can be used to set the date that points are returned after. example: 2020-01-01T01:00:00.000Z end_query_param: &end_query_param in: query name: end required: false schema: type: string format: date-time description: The "end" query parameter can be used to set the date after which no more points will be returned. interval_query_param: &interval_query_param in: query name: interval required: false schema: type: string enum: [1m, 5m, 15m, 30m, 1h, 1d, 1w] description: Defines what interval the resulting points will be returned in. columns_query_param: &columns_query_param in: query name: columns required: false schema: type: string description: A comma separated list of strings that controls which columns will be returned and in what order. example: open,close asset: &asset id: type: string description: Asset ID. Unique and will never change. example: 1e31218a-e44e-4285-820c-8282ee222035 symbol: type: string description: The commonly accepted "symbol" for an asset. Not unique, and can change. example: BTC name: type: string description: Name of asset example: Bitcoin slug: type: string description: Web URL friendly shorthand slug, alternative to ID. Unique, but can change. example: bitcoin error_responses: &error_responses 400: description: Bad Request content: application/json: schema: $ref: "#/components/schemas/HttpStatus400" 401: description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/HttpStatus401" 403: description: Forbidden content: application/json: schema: $ref: "#/components/schemas/HttpStatus403" 429: description: Too Many Requests content: application/json: schema: $ref: "#/components/schemas/HttpStatus429" 500: description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/HttpStatus500" error_responses_with_404: &error_responses_with_404 <<: *error_responses 404: description: NotFound content: application/json: schema: $ref: "#/components/schemas/HttpStatus404" info: title: |- Messari's Crypto Data API description: |-
Messari Logo
Messari provides a free API for crypto prices, market data metrics, on-chain metrics, and qualitative information (asset profile). This is the same API that powers the https://messari.io/ web app.
The Messari API does not include redistribution rights. Email us at support@messari.io if you're planning to re-sell Messari data. Websites using Messari data to display or share with third parties must receive a separate license from Messari. Please email support@messari.io for more information. Asset profiles are free to use with attribution and link to http://messari.io as per our [terms of service](https://messari.s3.amazonaws.com/termsofuse.html). Without an API key, requests are rate limited to 20 requests per minute and 1000 requests per day. Users that create an account will have slightly higher limits of 30 requests per minute and 2000 requests per day. PRO users have the highest limit at 60 requests per minute up to a maximum of 4000 requests per day. Contact us at support@messari.io if you need a higher limit. Sign up for an account at https://messari.io/ and navigate to https://messari.io/account/api to get an API key. Send the token as the `x-messari-api-key` HTTP header on all your API requests. **We cannot help you debug code**, but you'll know if this works if you see your most recent API requests show up here: https://messari.io/account/api ``` // This is node.js example code for making requests with an API key using the stdlib. require("https") .request( { host: "data.messari.io", path: "/api/v1/assets/btc", // replace YOUR-SECRET-KEY with your actual key // from https://messari.io/account/api (create messari account first) headers: { "x-messari-api-key": "YOUR-SECRET-KEY" }, }, function (response) { let str = ""; response.on("data", (chunk) => (str += chunk)); response.on("end", () => console.log(JSON.parse(str))); } ) .end(); ``` Important: treat your API key like you would a password, do not share with anyone, do not email to anyone, including Messari. Likewise, do not use your API key from a public JavaScript/HTML app (this would reveal it to any visitor) - in this scenario, you'd create your own HTTP proxy that would automatically add an API key to any requests made from your app. If your API key is leaked or compromised, you can generate a new one at https://messari.io/account/api **This API is self-service, there is no support at this time.** ### API Server URL The base URL is: `https://data.messari.io/api`, and the endpoints are versioned (v1, v2, etc.) whenever a breaking change is introduced. ### Errors The Messari API uses standard HTTP status codes to indicate success or failure. * 200 represents success * 4xx represents a user error (such as a problem with your key) * and 5xx represents a problem with our API. * There will also be a corresponding JSON payload with a data.error_message field ### JavaScript Examples #### Write current price to a HTML div ```javascript // assuming you have a
window .fetch("https://data.messari.io/api/v1/assets/btc/metrics/market-data") .then(res => res.json()) .then(messariRes => messariRes.data) .then( payload => (document.getElementById("current-btc-price").innerHTML = '$' + payload.market_data.price_usd.toLocaleString()) ); ``` #### Write current reported marketcap to a HTML div ```javascript // assuming you have a
window .fetch("https://data.messari.io/api/v1/assets/btc/metrics") .then(res => res.json()) .then(messariRes => messariRes.data) .then( payload => (document.getElementById("current-btc-marketcap").innerHTML = '$' + payload.marketcap.current_marketcap_usd.toLocaleString()) ); ``` termsOfService: https://messari.s3.amazonaws.com/termsofuse.html contact: email: support@messari.io version: 1.0.0 "x-tagGroups": - name: REST API tags: - Assets - Markets - Timeseries tags: - name: "HTTP REST API" description: |- an HTTP REST API in JSON, all responses will be gzipped (`content-encoding: gzip`) servers: - url: https://data.messari.io description: API Server paths: /api/v1/markets: get: tags: ["Markets"] operationId: Get all Markets description: Get the list of all exchanges and pairs that our WebSocket-based market real-time market data API supports. "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v1/markets - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v1/markets") .json() .then(response => { console.log(response); }); - lang: Python source: | from six.moves import urllib url = "https://data.messari.io/api/v1/markets" print(urllib.request.urlopen(url).read()) parameters: - *page_query_param - *fields_query_param responses: <<: *error_responses 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/GetAllMarketsResponse" /api/v1/assets: get: tags: ["Assets"] operationId: Get all Assets deprecated: true parameters: - *page_query_param - in: query name: sort schema: type: string required: false description: default sort is "marketcap desc", but the only valid value for this query param is "id" which translates to "id asc", which is useful for a stable sort while paginating - in: query name: limit schema: type: integer required: false description: default is 20, max is 500 - *fields_query_param - in: query name: with-metrics required: false description: existence of this query param filters assets to those with quantitative data - in: query name: with-profiles required: false description: existence of this query param filters assets to those with qualitative data description: | Get the paginated list of all assets *and* their metrics and profiles. Some example query param usage: * optionally use `?fields` query param to pare down the returned fields (because this endpoint returns a lot of data) * [`data.messari.io/api/v1/assets?fields=id,slug,symbol,metrics/market_data/price_usd`](https://data.messari.io/api/v1/assets?fields=id,slug,symbol,metrics/market_data/price_usd) * optionally use `?with-metrics` or `?with-profiles` query parameters to filter the list * [`data.messari.io/api/v1/assets?with-metrics`](https://data.messari.io/api/v1/assets?with-metrics) * [`data.messari.io/api/v1/assets?with-profiles`](https://data.messari.io/api/v1/assets?with-profiles) * [`data.messari.io/api/v1/assets?with-metrics&with-profiles`](https://data.messari.io/api/v1/assets?with-metrics&with-profiles) "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v1/assets curl --compressed https://data.messari.io/api/v1/assets?with-metrics curl --compressed https://data.messari.io/api/v1/assets?with-profiles curl --compressed https://data.messari.io/api/v1/assets?with-metrics&with-profiles - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v1/assets") .json() .then(response => { console.log(response); }); - lang: Python source: | from six.moves import urllib url = "https://data.messari.io/api/v1/assets" print(urllib.request.urlopen(url).read()) responses: <<: *error_responses 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/GetAllAssetsResponse" /api/v2/assets: get: tags: ["Assets"] operationId: Get all Assets V2 parameters: - *page_query_param - in: query name: sort schema: type: string required: false description: default sort is "marketcap desc", but the only valid value for this query param is "id" which translates to "id asc", which is useful for a stable sort while paginating - in: query name: limit schema: type: integer required: false description: default is 20, max is 500 - *fields_query_param - in: query name: with-metrics required: false description: existence of this query param filters assets to those with quantitative data - in: query name: with-profiles required: false description: existence of this query param filters assets to those with qualitative data description: | Get the paginated list of all assets *and* their metrics and profiles. Some example query param usage: * optionally use `?fields` query param to pare down the returned fields (because this endpoint returns a lot of data) * [`data.messari.io/api/v2/assets?fields=id,slug,symbol,metrics/market_data/price_usd`](https://data.messari.io/api/v2/assets?fields=id,slug,symbol,metrics/market_data/price_usd) * optionally use `?with-metrics` or `?with-profiles` query parameters to filter the list * [`data.messari.io/api/v2/assets?with-metrics`](https://data.messari.io/api/v2/assets?with-metrics) * [`data.messari.io/api/v2/assets?with-profiles`](https://data.messari.io/api/v2/assets?with-profiles) * [`data.messari.io/api/v2/assets?with-metrics&with-profiles`](https://data.messari.io/api/v2/assets?with-metrics&with-profiles) "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v2/assets curl --compressed https://data.messari.io/api/v2/assets?with-metrics curl --compressed https://data.messari.io/api/v2/assets?with-profiles curl --compressed https://data.messari.io/api/v2/assets?with-metrics&with-profiles - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v2/assets") .json() .then(response => { console.log(response); }); - lang: Python source: | from six.moves import urllib url = "https://data.messari.io/api/v2/assets" print(urllib.request.urlopen(url).read()) responses: <<: *error_responses 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/GetAllAssetsV2Response" "/api/v1/assets/{assetKey}": get: tags: ["Assets"] operationId: Get Asset description: Get basic metadata for an asset. parameters: - *assetKey_path_param - *fields_query_param "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v1/assets/btc - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v1/assets/btc") .json() .then(response => { console.log(response); }); - lang: Python source: | from six.moves import urllib url = "https://data.messari.io/api/v1/assets/btc" print(urllib.request.urlopen(url).read()) responses: <<: *error_responses_with_404 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/AssetResponse" "/api/v1/assets/{assetKey}/profile": get: tags: ["Assets"] operationId: Get Asset Profile V1 deprecated: true description: Get all of our qualitative information for an asset. parameters: - *assetKey_path_param - *fields_query_param "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v1/assets/btc/profile - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v1/assets/btc/profile") .json() .then(response => { console.log(response); }); - lang: Python source: | from six.moves import urllib url = "https://data.messari.io/api/v1/assets/btc/profile" print(urllib.request.urlopen(url).read()) responses: <<: *error_responses_with_404 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/AssetProfileResponse" "/api/v2/assets/{assetKey}/profile": get: tags: ["Assets"] operationId: Get Asset Profile V2 description: | Get all of our qualitative information for an asset. Some example query param usage: * optionally use `?fields` query param to pare down the returned fields * [`data.messari.io/api/v2/assets/eth/profile?fields=id,name,profile/general/overview/is_verified`](https://data.messari.io/api/v2/assets/eth/profile?fields=id,name,profile/general/overview/is_verified) * optionally use `?as-markdown` query param to get content in markdown format * [`data.messari.io/api/v2/assets/btc/profile?as-markdown`](https://data.messari.io/api/v2/assets/btc/profile?as-markdown) parameters: - *assetKey_path_param - *fields_query_param - *as_markdown_query_param "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v2/assets/btc/profile - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v2/assets/btc/profile") .json() .then(response => { console.log(response); }); - lang: Python source: | from six.moves import urllib url = "https://data.messari.io/api/v2/assets/btc/profile" print(urllib.request.urlopen(url).read()) responses: <<: *error_responses_with_404 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/AssetProfileV2Response" "/api/v1/assets/{assetKey}/metrics": get: tags: ["Assets"] operationId: Get Asset Metrics description: Get all of our quantitative metrics for an asset. parameters: - *assetKey_path_param - *fields_query_param "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v1/assets/btc/metrics - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v1/assets/btc/metrics") .then(response => { console.log(response.body); }); - lang: Python source: | from six.moves import urllib url = "https://data.messari.io/api/v1/assets/btc/metrics" print(urllib.request.urlopen(url).read()) responses: <<: *error_responses_with_404 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/AssetMetricsResponse" "/api/v1/assets/{assetKey}/metrics/market-data": get: tags: ["Assets"] operationId: Get Asset Market Data description: Get the latest market data for an asset. This data is also included in the metrics endpoint, but if all you need is market-data, use this. parameters: - *assetKey_path_param - *fields_query_param "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v1/assets/btc/metrics/market-data - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v1/assets/btc/metrics/market-data") .then(response => { console.log(response.body); }); - lang: Python source: | from six.moves import urllib url = "https://data.messari.io/api/v1/assets/btc/metrics/market-data" print(urllib.request.urlopen(url).read()) responses: <<: *error_responses_with_404 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/AssetMetricsMarketDataResponse" "/api/v1/assets/metrics": get: tags: ["Assets", "Timeseries"] operationId: List asset timeseries metric IDs description: | Lists all of the available timeseries metric IDs for assets. parameters: - lang: shell source: | curl --compressed https://data.messari.io/api/v1/assets/metrics - lang: JavaScript source: | // npm i got require("got") .get("https://data.messari.io/api/v1/assets/metrics") .then(response => { console.log(response.body); }); responses: 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/ListAssetMetricsResponse" "/api/v1/assets/{assetKey}/metrics/{metricID}/time-series": get: tags: ["Assets", "Timeseries"] operationId: Get Asset timeseries description: | Retrieve historical timeseries data for an asset. metricID specifies which timeseries will be returned. The list of supported metric ids can be found at https://data.messari.io/api/v1/assets/metrics. You can specify the range of what points will be returned using (begin, end, start, before, after) query parameters. All range parameters are inclusive of the specified date. Some examples: * Return data between 2019-01-01 to 2019-01-07: "?start=2020-01-01&end=2020-01-07" * Return data after 2020-01-01: "?after=2020-01-01" * Return data before 2020-01-01: "?before=2020" You can specify the interval that the points will be returned in using the "interval" query parameter. Supported intervals are ["5m", "15m", "30m", "1h", "1d", "1w"] for 5 minute, 15 minute, 30 minute. 1 hour, 1 day, and 1 week respectively. **Anything under 1 day requires an enterprise subscription, please email enterprise@messari.io.** A default start date, end date, and/or interval will be provided for you if not specified. For any given interval, at most 2016 points will be returned. For example, with interval=5m, the maximum range of the request is 2016 * 5 minutes = 7 days. With interval=1h, the maximum range is 2016 * 1 hour = 84 days. Exceeding the maximum range will result in an error, which can be solved by reducing the date range specified in the request. You can specify the sort order of data points in the response using the ?order query parameter. Supported values are "asc" and "desc". You can specify the format of the response using the "format" query parameter. Supported formats are "json" and "csv" parameters: - *assetKey_path_param - *metricID_path_param - *start_query_param - *end_query_param - *interval_query_param - *columns_query_param - *order_query_param - *format_query_param - *timestamp_format_query_param "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v1/assets/bitcoin/metrics/price/time-series?start=2020-01-01&end=2020-02-01&interval=1d - lang: shell source: | curl --compressed https://data.messari.io/api/v1/assets/ethereum/metrics/sply-circ/time-series?timestamp-format=rfc3339&start=2019-01-01&end=2020-04-01 responses: <<: *error_responses_with_404 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/GetAssetTimeseriesResponse" "/api/v1/markets/{marketKey}/metrics/{metricID}/time-series": get: tags: ["Markets", "Timeseries"] operationId: Get Market timeseries description: | Retrieve historical timeseries data for a market. metricID specifies which timeseries will be returned. Supported metric IDs are "price", "price-usd", and "real-vol". You can specify the range of what points will be returned using (begin, end, start, before, after) query parameters. All range parameters are inclusive of the specified date. Some examples: * Return data between 2019-01-01 to 2019-01-07: "?start=2020-01-01&end=2020-01-07" * Return data after 2020-01-01: "?after=2020-01-01" * Return data before 2020-01-01: "?before=2020" You can specify the interval that the points will be returned in using the "interval" query parameter. Supported intervals are ["5m", "15m", "30m", "1h", "1d", "1w"] for 5 minute, 15 minute, 30 minute. 1 hour, 1 day, and 1 week respectively. **Anything under 1 day requires an enterprise subscription, please email enterprise@messari.io.** A default start date, end date, and/or interval will be provided for you if not specified. For any given interval, at most 2016 points will be returned. For example, with interval=5m, the maximum range of the request is 2016 * 5 minutes = 7 days. With interval=1h, the maximum range is 2016 * 1 hour = 84 days. Exceeding the maximum range will result in an error, which can be solved by reducing the date range specified in the request. You can specify the columns returned in the response using the "columns" query parameter. Columns will be returned in the order specified. The first column is timestamp and it cannot be reordered. By default, all columns will be returned. Some examples: * Return "timestamp", "open", and "close" columns only: "?columns=open,close" * Return "timestamp" and "volume" column only: "?columns=volume" You can specify the sort order of data points in the response using the ?order query parameter. Supported values are "asc" and "desc". You can specify the format of the response using the "format" query parameter. Supported formats are "json" and "csv" parameters: - *marketKey_path_param - *metricID_path_param - *start_query_param - *end_query_param - *interval_query_param - *columns_query_param - *order_query_param - *format_query_param - *timestamp_format_query_param "x-code-samples": - lang: shell source: | curl --compressed https://data.messari.io/api/v1/markets/binance-btc-usdt/metrics/price/time-series?start=2020-01-01&end=2020-02-01&interval=1d responses: <<: *error_responses_with_404 200: description: Successful content: application/json: schema: $ref: "#/components/schemas/GetMarketTimeseriesResponse" components: schemas: HttpStatus400: type: object properties: timestamp: type: string format: date description: Current ISO 8601 timestamp on the server. example: 2018-06-02T22:51:28.209Z error_code: type: integer description: Internal error code generated or 400 if default. example: 400 default: 400 error_message: type: string description: a corresponding error message for the code example: invalid param value for field id elapsed: type: integer description: Number of milliseconds taken to generate this response example: 10 HttpStatus401: type: object properties: timestamp: type: string format: date description: Current ISO 8601 timestamp on the server. example: 2018-06-02T22:51:28.209Z error_code: type: integer description: Internal error code generated or 401 if default. example: 401 default: 401 error_message: type: string description: a corresponding error message for the code example: unauthorized (authentication) elapsed: type: integer description: Number of milliseconds taken to generate this response example: 10 HttpStatus403: type: object properties: timestamp: type: string format: date description: Current ISO 8601 timestamp on the server. example: 2018-06-02T22:51:28.209Z error_code: type: integer description: Internal error code generated or 403 if default. example: 403 default: 403 error_message: type: string description: a corresponding error message for the code example: forbidden (authorization) elapsed: type: integer description: Number of milliseconds taken to generate this response example: 10 HttpStatus404: type: object properties: timestamp: type: string format: date description: Current ISO 8601 timestamp on the server. example: 2018-06-02T22:51:28.209Z error_code: type: integer description: Internal error code generated or 404 if default. example: 404 default: 404 error_message: type: string description: a corresponding error message for the code example: not found elapsed: type: integer description: Number of milliseconds taken to generate this response example: 10 HttpStatus429: type: object properties: timestamp: type: string format: date description: Current ISO 8601 timestamp on the server. example: 2018-06-02T22:51:28.209Z error_code: type: integer description: Internal error code generated or 429 if default. example: 429 default: 429 error_message: type: string description: a corresponding error message for the code example: rate limited elapsed: type: integer description: Number of milliseconds taken to generate this response example: 10 HttpStatus500: type: object properties: timestamp: type: string format: date description: Current ISO 8601 timestamp on the server. example: 2018-06-02T22:51:28.209Z error_code: type: integer description: Internal error code matches HTTP Status code of 500. example: 500 default: 500 error_message: type: string description: a corresponding error message for the code example: An internal server error occurred elapsed: type: integer description: Number of milliseconds taken to generate this response example: 10 ApiStatus: type: object properties: timestamp: type: string format: date description: "Current timestamp (ISO 8601) on the server." example: "2018-06-02T22:51:28.209Z" elapsed: type: integer description: Number of milliseconds taken to generate this response example: 10 required: - timestamp - error_code - error_message - elapsted - credit_count GetAllMarketsResponse: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: type: array items: $ref: "#/components/schemas/Market" Market: type: object properties: id: type: string example: f73edd6b-d46c-4b42-b874-9d338b832707 description: Market ID. Unique and will never change. exchange_id: type: string example: 181f44f6-f9b7-4c11-9e44-7c7f803d808e description: Exchange ID base_asset_id: type: string example: 1e31218a-e44e-4285-820c-8282ee222035 description: Base Asset ID quote_asset_id: type: string example: 60dcd17b-00f3-49f8-907c-f390c2521c59 description: Quote Asset ID class: type: string example: spot description: Type of market (spot, future, etc.) excluded_from_price: type: boolean example: false description: Whether this market is excluded from Messari's VWAP methodology exchange_name: type: string example: Coinbase description: Name of the exhange exchange_slug: type: string example: coinbase description: Exchange slug base_asset_symbol: type: string example: BTC description: Base asset symbol quote_asset_symbol: type: string example: USD description: Quote asset symbol pair: type: string example: BTC-USD description: Concatenation of base asset and quote asset symbols price_usd: type: number format: double description: Market price in USD example: 7184.79746667989 volume_last_24_hours: type: number format: double description: 24h trading volume in USD example: 3686422132.4061913 deviation_from_vwap_percent: type: number format: double description: deviation from asset VWAP (volume weighted average price) example: 0.0628331306302777 last_trade_at: type: string format: date-time example: 2020-01-07T00:22:26.992Z description: The exact datetime of the last trade for this market GetAllAssetsResponse: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: type: array items: $ref: "#/components/schemas/AssetWithMetricsAndProfile" GetAllAssetsV2Response: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: type: array items: $ref: "#/components/schemas/AssetWithMetricsAndProfileV2" Asset: type: object properties: <<: *asset AssetResponse: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: $ref: "#/components/schemas/Asset" AssetProfileResponse: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: $ref: "#/components/schemas/AssetProfile" AssetProfileV2Response: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: $ref: "#/components/schemas/AssetProfileV2" AssetMetricsResponse: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: $ref: "#/components/schemas/AssetMetrics" AssetMetricsMarketDataResponse: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: $ref: "#/components/schemas/AssetMetricsMarketData" BlockchainMetricsResponse: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: $ref: "#/components/schemas/BlockchainStats" MarketData: type: object properties: price_usd: type: number format: double description: Market price in USD example: 7184.79746667989 price_btc: type: number format: double description: Market price in BTC example: 1 volume_last_24_hours: type: number format: double description: 24h trading volume in USD example: 3686422132.4061913 real_volume_last_24_hours: type: number format: double description: | 24h "real" trading volume in USD, read more here: https://messari.io/article/messari-methodology example: 213007404.88224277 volume_last_24_hours_overstatement_multiple: type: number format: double description: 24h trading volume in USD example: 17.23897417186806 percent_change_usd_last_24_hours: format: double description: 24h percent change of USD-denominated price. If the return value is 1.23, it means 1.23%. example: 0.7429609262723845 percent_change_btc_last_24_hours: format: double description: 24h percent change of BTC-denominated price. If the return value is 1.23, it means 1.23%. example: 0 ohlcv_last_1_hour: properties: open: type: number format: double description: Opening price this hour example: 7197.467535968304 high: type: number format: double description: Highest price this hour example: 7208.544343587009 low: type: number format: double description: Lowest price this hour example: 7179.140622464517 close: type: number format: double description: Latest price (same as price_usd in parent object) example: 7184.797466679892 volume: type: number format: double description: | "Real" volume this hour, read more here: https://messari.io/article/messari-methodology example: 9690910.565409226 ohlcv_last_24_hour: properties: open: type: number format: double description: Opening price 24 hours ago example: 7197.467535968304 high: type: number format: double description: Highest price in past 24 hours example: 7208.544343587009 low: type: number format: double description: Lowest price in past 24 hours example: 7179.140622464517 close: type: number format: double description: Latest price (same as price_usd in parent object) example: 7184.797466679892 volume: type: number format: double description: | "Real" volume past 24 hours, read more here: https://messari.io/article/messari-methodology example: 9690910.565409226 AssetSupply: type: object properties: y_2050: type: number format: double description: The expected supply on Jan 1 2050 example: 20983495.3984375 y_2050_percent_issued: type: number format: double description: The percentage of the Y2050 supply which has already been issued. example: 20 supply_yplus_10: type: number format: double description: The expected supply 10 years from now example: 8932344.3984375 y_plus10_issued_percent: type: number format: double description: Tthe percent of the Y+10 supply that's currently liquid on the market today. example: 40 liquid: type: number format: double description: Liquid Supply refers to tokens that exist on-chain, and which are not known to be encumbered by any contracts (programmatic or legal). Data is sourced by the Messari research team where available. example: 1982345 circulating: type: number format: double description: Circulating Supply refers to tokens that exist on-chain, and which are not known to be encumbered by any contracts (programmatic or legal). example: 17394725 stock_to_flow: type: number format: double description: Stock to Flow is calculated by taking the Liquid Supply today and dividing by the projected 12month increase in Liquid Supply. This is essentially the inverse of Current Inflation. The value is null for assets with fixed or decreasing Liquid Supply AssetAllTimeHigh: type: object properties: price: type: number format: decimal description: The highest hourly open of the asset in USD example: 20089 at: type: string format: timestamp description: ISO8601 timestamp of the date which the asset reached its all time high. example: 2018-06-02T22:51:28.209Z days_since: type: integer description: Days since the asset's recorded all time high example: 344 percent_down: type: number format: decimal description: Percent that the current example: 81.47285775644839 AssetDeveloperActivity: type: object properties: stars: type: integer nullable: true example: 34996 watchers: type: integer nullable: true example: 3513 commits_last_3_months: type: integer format: int64 example: 342 commits_last_1_year: type: integer format: int64 example: 1775 lines_added_last_3_months: type: integer format: int64 example: 14742 lines_added_last_1_year: type: integer format: int64 example: 117176 lines_deleted_last_3_months: type: integer format: int64 example: 11106 lines_deleted_last_1_year: type: integer format: int64 example: 73395 BlockchainStats24h: type: object properties: transaction_volume: type: double example: 2926664361.96 nvt: type: double example: 14.714094934462347 sum_of_fees: type: double example: 137652.65544754025 median_tx_value: type: double example: 210.933481976 median_tx_fee: type: double example: 0.09425302706400435 count_of_active_addresses: type: integer example: 639963 count_of_tx: type: integer example: 275136 count_of_payments: type: integer example: 388150 new_issuance: type: double example: 5815496.258292316 average_difficulty: type: double example: 6727225469720 kilobytes_added: type: double example: 126196.179 count_of_blocks_added: type: int example: 139 supply_moved_off_chain: type: double example: null BlockchainStats: type: object properties: transaction_volume: $ref: "#/components/schemas/ArrayOfDateDouble" nvt: $ref: "#/components/schemas/ArrayOfDateDouble" mean_and_median_tx_values: $ref: "#/components/schemas/ArrayOfDateMeanMedian" number_of_active_addresses: $ref: "#/components/schemas/ArrayOfDateInt" number_of_tx: $ref: "#/components/schemas/ArrayOfDateInt" number_of_payments: $ref: "#/components/schemas/ArrayOfDateInt" new_issuance: $ref: "#/components/schemas/ArrayOfDateDouble" fees: $ref: "#/components/schemas/ArrayOfDateDouble" average_difficulty: $ref: "#/components/schemas/ArrayOfDateDouble" kilobytes_added: $ref: "#/components/schemas/ArrayOfDateDouble" number_of_blocks_added: $ref: "#/components/schemas/ArrayOfDateInt" supply_moved_off_chain: $ref: "#/components/schemas/ArrayOfDateDouble" ArrayOfDateDouble: type: array items: properties: date: type: string format: date-time val: type: double example: 123.001 ArrayOfDateInt: type: array items: properties: date: type: string format: date-time val: type: integer example: 123 ArrayOfDateMeanMedian: type: array items: properties: date: type: string format: date-time mean: type: double example: 123.001 median: type: double example: 123.001 AssetWithMetricsAndProfile: type: object properties: <<: *asset profile: $ref: "#/components/schemas/AssetProfile" metrics: $ref: "#/components/schemas/AssetMetrics" AssetWithMetricsAndProfileV2: type: object properties: <<: *asset profile: $ref: "#/components/schemas/AssetProfileV2" metrics: $ref: "#/components/schemas/AssetMetrics" AssetProfileV2: type: object properties: profile: type: object properties: general: type: object description: General taxonomy (category & sector) and description of the asset, its background, issuing organization, milestones and regulatory details. properties: overview: type: object properties: is_verified: type: boolean description: Indicates if the asset is part of the Messari Registry, an open source disclosures database aiming to become a central repository for project information that can be freely accessed industry-wide example: false tagline: type: string description: One-Sentence summary of the asset's purpose. example: A decentralized computing platform category: type: string description: Indicates the primary use-case or application of a cryptoasset network example: Infrastructure sector: type: string description: Indicate the specific solution(s) provided by a cryptoasset network. example: Smart Contracts Platforms tags: type: string description: Tags allow to group cryptoassets that share some similarities that fall outside of the general classification model. These can be features, specifications, fun facts, memes etc. example: Privacy project_details: type: string description: Brief description of a few lines summarizing the project. example: Ethereum is a distributed blockchain computing platform for smart contracts and decentralized applications. official_links: $ref: "#/components/schemas/Link" background: type: object properties: background_details: type: string description: A longer description of one to two paragraphs summarizing the project, its goals, and its technology. example: "Ethereum is a blockchain designed to be a distributed computing platform for executing smart contracts and building decentralized applications (dapps). The Ethereum white paper was published in late 2013, and the project was formally announced at a Bitcoin conference in early 2014. Vitalik Butern, co-creator of Ethereum, started designing the protocol due to some limitations in Bitcoin’s protocol (i.e., Turing completeness) . Ethereum officially launched in mid-2015 with the informally stated goal of supporting “unstoppable applications.”The current Ethereum blockchain (ETH) split off of the original Ethereum Classic blockchain (ETC) in a hard fork on July 20, 2016 at block height 920000. The Ethereum fork was initiated after a bug in Ethereum’s Decentralized Autonomous Organization (DAO) smart contract that was exploited to siphon off 3,600,000 ethers.The Ethereum Foundation, created in 2014, is an Ethereum-focused non-profit organization dedicated to Ethereum’s research, core protocol development, and ecosystem growth. The Ethereum Foundation oversaw the original ether crowdsale in July 2014. " issuing_organizations: type: array items: $ref: "#/components/schemas/OrganizationLite" description: Organization(s) responsible(s) for the initial issuance of the asset roadmap: type: array items: type: object properties: title: type: string description: Name of the milstone. example: Serenity Phase 0 date: type: date-time description: Past or expected date of completion of the milestone. example: 2020-01-03T00:00:00Z type: type: string description: Type of Milestone example: Protocol Upgrade details: type: string description: Details of the changes implied by the completion of this milestone. example: Phase 0 of the transition to PoS Casper regulation: type: object properties: regulatory_details: type: string description: Details on the past regulatory events concerning the asset. example: The Securities and Exchange Commission announced in September 2019 that it settled charges against blockchain technology company Block.one for conducting an unregistered initial coin offering of digital tokens (ICO) that raised the equivalent of several billion dollars over approximately one year. The company agreed to settle the charges by paying a $24 million civil penalty. sfar_score: type: float description: The score reflects an independent analysis by the Crypto Rating Council, LLC and is intended as a tool to help members evaluate and weigh factors that may be relevant to the potential classification of a digital asset under federal securities laws. example: 4 sfar_summary: type: string description: Analysis underpinning each score based on a limited review of factual information publicly available or otherwise made available to the Crypto Rating Council. example: 1. Current functionality of the platform; 2. Absence of investment-like language or marketing; 3. Decentralized development and usage contributors: type: object description: People or organizations working on the development of the project. properties: individuals: type: array items: $ref: "#/components/schemas/PersonLite" organizations: type: array items: $ref: "#/components/schemas/OrganizationLite" advisors: type: object description: People or organizations advising the project. properties: individuals: type: array items: $ref: "#/components/schemas/PersonLite" organizations: type: array items: $ref: "#/components/schemas/OrganizationLite" investors: type: object description: Investors (organizations or business angels) that have invested into the asset. properties: individuals: type: array items: $ref: "#/components/schemas/PersonLite" organizations: type: array items: $ref: "#/components/schemas/OrganizationLite" ecosystem: type: object description: Third-party projects (assets or organizations) that are part of the ecosystem of the asset (wallets, scalability solutions ...) properties: assets: type: array items: $ref: "#/components/schemas/AssetLite" organizations: type: array items: $ref: "#/components/schemas/OrganizationLite" economics: type: object description: Details about the token economics, the launch, the fundraising rounds, the supply dynamics, the native treasury and the consensus mechanism of the asset. properties: token: type: object properties: token_name: type: string example: DAI token_type: type: string description: Indicates the standard or network on which a the asset operates. example: ERC-20 block_explorers: description: Main block explorers or token trackers allowing to visualize the ledger history, including transactions, blocks and addresses. $ref: "#/components/schemas/Link" multitoken: type: array description: Indicates if other token(s) used by the protocol to operate. items: $ref: "#/components/schemas/AssetLite" token_usage: type: string description: Indicates how the token can be used in its network. example: Payments token_usage_details_and_wallets: description: Qualitative outline of the token role in the network as well as the ways to store the token. type: string example: Ethereum network peers pay fees priced in gas to include transactions in blocks. Gas is priced in ethers, but Ethereum makes the distinction between ethers and gas to separate the exchange rate of the native currency and the network's computational cost. Gas fees increase and decrease as demand for block space increases and decreases. launch: type: object properties: general: type: object properties: launch_style: type: string description: Classification of how the initial supply was created and distributed. example: Fair Launch launch_details: type: string description: Brief description of the initial supply creation and distribution example: Ethereum’s original token distribution event, managed by the Ethereum Foundation, sold roughly 60 million ethers (80% of the initial 72 million ether supply) to the public. The 2015 crowdsale initially priced 2000 ethers at 1 bitcoin. The remaining 12 million (20% of the initial supply) were allocated to the Foundation and early Ethereum contributors. Of the ethers sent to the Foundation, 3 million were allocated to a long-term endowment, 6 million were distributed among 85 developers who contributed prior to the crowdsale, and 3 million were designed as a “developer purchase program” that gave Ethereum developers the rights to purchase ethers at crowdsale prices. fundraising: type: object description: Key information on the asset fundraising rounds, including token sales, if any. properties: sales_rounds: $ref: "#/components/schemas/FundraisingRound" sales_documents: $ref: "#/components/schemas/Link" sales_treasury_accounts: $ref: "#/components/schemas/Treasury" treasury_policies: $ref: "#/components/schemas/Link" projected_use_of_sales_proceeds: type: array items: type: object properties: category: type: string example: Marketing amount_in_percentage: type: float example: 75.8 initial_distribution: type: object description: Quantitative data on the initial supply creation and distribution. properties: initial_supply: type: float example: 72000000.53 initial_supply_repartition: type: object properties: allocated_to_investors_percentage: type: float example: 83.47 allocated_to_organization_or_founders_percentage: type: float example: 16.53 allocated_to_premined_rewards_or_airdrops_percentage: type: float example: 0 token_distribution_date: type: date-time example: 2015-07-30T00:00:00Z genesis_block_date: type: date_time example: 2015-07-30T00:00:00Z consensus_and_emission: type: object properties: supply: type: object properties: supply_curve_details: type: string description: In-depth details about the asset's Liquid Supply dynamics. example: New ethers are generated via block rewards, initially set a 5 ethers per block. Constantinople and St. Petersburg, two later forks, reduce block rewards from 3 to 2 ethers. general_emission_type: type: string description: This defines the general monetary policy ruling the issuance of new coins for a given cryptoasset. Therefore it's an indication of the future evolution of the Outstanding Supply (supply visible on-chain) for a given cryptoasset. example: Deflationary precise_emission_type: type: string description: This further defines the monetary policy ruling the issuance of new coins for a given cryptoasset. It gives a more precise picture of the future evolution of the Outstanding Supply for a given cryptoasset (supply visible on-Chain). example: Decreasing Inflation rate is_capped_supply: type: boolean description: Is the supply capped (maximum supply defined) or uncapped (no maximum supply). example: false max_supply: type: float description: If the supply is capped, it indicates the maximum supply that will ever exist on-chain based on the current specifications. example: 21000000 consensus: type: object properties: consensus_details: description: Details on the consensus mechanism such as difficulty adjustment mechanism for PoW assets, validation and delegation requirements for PoS & DPoS assets etc. type: string example: The consensus model in Tezos is defined as Liquid Proof of Stake (LPoS). LPoS enables stakeholders even with the smallest sum of holdings to participate in the baking & governance process, by delegating the coins to a Delegation Service of their choice. general_consensus_mechanism: description: General indication of the consensus type used by a given cryptoasset. type: string example: Proof-of-Stake precise_consensus_mechanism: description: More detailed information on the precise consensus algorithm of each asset type: string example: Liquid Proof-of-Stake targeted_block_time: description: Targeted time interval between each block as defined by the protocol specifications. type: float example: 15 block_reward: description: Rewards in native token granted by the protocol to produce a block. type: float example: 2 mining_algorithm: description: This is the mining algorithm used by a given Proof-of-Work cryptoasset type: string example: Cuckoo Cycle next_halving_date: description: Expected date for the next halving based on Messari proprietary supply data. type: date-time example: 2020-03-01T00:00:00Z is_victim_of_51_percent_attack: description: Details on previous 51% attacks, in the case the network experienced such an attack in the past. type: boolean example: true native_treasury: type: object properties: accounts: $ref: "#/components/schemas/NativeTreasury" treasury_usage_details: description: Details about the issuing organization's plan to distribue its remaining native token treasury. type: string example: The native treasury will be used to distribute rewards to developers on the platform. technology: type: object description: Details on the technology, client repositories, developer tools, past audits, as well as known exploits and vulnerabilities experienced by the protocol. properties: overview: type: object properties: technology_details: description: Overview of the technological specifications and properties of the protocol. type: string example: The Ethereum Virtual Machine (EVM) is an environment for executing smart contracts on the platform. Ethers are the native currency of the Ethereum blockchain. The EVM is a core component of Ethereum that allows developing smart contract-powered applications within the distributed network’s consensus. client_repositories: type: array items: type: object properties: name: type: string example: Example link: type: string example: example.com license_type: type: string example: MIT security: type: object properties: audits: description: List of past technological audits realized by professional auditors. type: array items: type: object properties: title: type: string example: Token Sale Contract Audit date: type: date-time example: 2019-03-01T00:00:00Z type: type: string example: Smart Contracts details: type: string example: The token sales smart contracts were audited prior to the sale. known_exploits_and_vulnerabilities: description: List of known security exploits and vulnerabilities experiences by the project. type: array items: type: object properties: title: type: string example: Counterfeit vulnerability date: type: date-time example: 2017-10-25T00:00:00Z type: type: string example: Vulnerability details: type: string example: A counterfeiting vulnerability was discovered by a cryptographer. It was not reported publicly at the time in order to protect against it being exploited prior to its remediation, and to provide information and remediated code to other projects that were also vulnerable governance: type: object description: Details on the off-chain and on-chain governance specifications of the asset, as well as the grant programs led by the issuing organization(s). properties: governance_details: type: string example: There is no mechanism in Ethereum to upgrade or otherwise change the protocol without a hard fork. Every time a proposal makes it through the EIP process, becomes finalized, and gets implemented in the various clients, it must subsequently be scheduled for inclusion in an upcoming hard fork. The Ethereum core developers have historically scheduled periodic hard forks to include various protocol upgrades and improvements (Byzantine Hard Fork, Constantinople hard fork). onchain_governance: description: Details on the on-chain governance model, if any. type: object properties: onchain_governance_type: description: This classifies the mechanisms through which governance happens on-chain for a given cryptoasset. This classification was inspired by Odysseas Sclavounis and Nic Carter's Overview of Governance in Blockchains. type: string example: Delegative on-chain vote onchain_governance_details: type: string example: Miners have the ability to modify the per-block gas limit in either direction by a factor of 1/1024 per block produced. In December 2017, following a sudden increase in network utilization, miners coordinated to move the gas limit from 6.7M gas per block to 8M gas per block without a hard fork and without intervention on the part of the core developer, All Core Devs, or any of the other governance mechanisms. is_treasury_decentralized: description: This indicates if the cryptoasset incorporates a decentralized treasury where a group of token holders can allocate funds through On-Chain Governance. type: boolean example: false grants: description: Details on the Grant Programs, if any. type: array items: type: object properties: funding_organizations: type: array items: $ref: "#/components/schemas/OrganizationLite" grant_program_details: type: string example: The Ethereum Foundation invites applications for funding for building a useful product or experience. It provides Ethereum teams with more runway, advice and resources to focus simply on building useful products and experiences. Grantees receive Non-dilutive funding, Technical advisory, Connection to more users and a Platform to share their work. So far the Ethereum Foundation led 5 rounds of grants. AssetProfile: type: object properties: <<: *asset tagline: type: string example: Peer-to-peer electronic cash overview: type: string example: Bitcoin is the first successfully distributed consensus-based, censorship-resistant, peer-to-peer payment settlement network with a provably scarce, programmable, native currency. background: type: string example: Bitcoin borrows from nearly three decades of research by academics, cypherpunk practitioners, and hobbyists who tried to create protocols for decentralized peer-to-peer payment networks with native currencies. Some of the most prominent projects that preceded Bitcoin include Digicash, b-money, Hashcash, and e-gold. Bitcoin is often associated with Austrian economic theories, anarcho-capitalist principles, and general libertarian politicking by virtue of the exclusive developer community to whom Nakamoto first released their white paper, certain protocol design characteristics, and the central tendency of political affiliations among early Bitcoin investors. A now-famous The Times headline included by Nakamoto in the genesis block’s coinbase signals Bitcoin’s wider potential utility, namely as a tool for anyone seeking alternatives to legacy financial services and sovereign monies. technology: type: string example: \"Bitcoin\" is a label used for a protocol and a currency. Bitcoin, the protocol, is a distributed, time-stamped ledger of unspent transaction output (UTXO) transfers stored in an append-only chain of 1MB data blocks. A network of mining and economic nodes maintains this blockchain by validating, propagating, and fighting to include mempool transactions in new blocks. Economic nodes (aka \"full nodes\") receive transactions from other network participants, validate them against network consensus rules and double-spend vectors, and propagate the transactions to other full nodes that also validate and propagate. Valid transactions are sent to the network's mempool waiting for mining nodes to confirm them via inclusion in the next block.\n\nMining nodes work to empty the mempool usually in a highest-to-lowest fee order by picking transactions to include in the next block and racing against each other to generate a hash less than the target number set by Bitcoin's difficulty adjustment algorithm. Proof of work (PoW) is the name for this cryptographic construct that incentives honesty among network participants and allows other mining nodes to costlessly verify the solved hash. Mining difficulty regularly adjusts to maintain Bitcoin's average ten-minute block schedule. Mining nodes add new blocks to whatever chain has the largest accumulated proof of work maintained by a network of economic nodes with downloaded copes if the same chain. Mining blocks is the only way to mint new bitcoins. \n\nBitcoin, the currency, is bits of data usable outside the limitations of the protocol a la scaling solutions like Lightning Network payment channels. A hard supply cap of 21 million bitcoins was introduced in Nakamoto's original source code and reinforced by Pieter Wuille's BIP42, which patched a small supply cap bug. token_distribution: type: object properties: description: type: string example: On January 3, 2009, two months after publishing their white paper, Satoshi created the first bitcoins by mining the genesis block, but the block reward (50 BTC) is unspendable due to the original client's block database and transaction database configuration. Block rewards (initially 50 BTC + transaction fees) are claimed every 10 minutes, on average. Block rewards are halved every 210,000 blocks (approximately 4 years). sale_start: type: string format: date example: 2009-01-03 sale_end: type: string format: date example: 2009-01-03 initial_distribution: type: number format: double example: 50 current_supply: type: number format: double example: 17350000 max_supply: type: number format: double example: 21000000 organizations: type: array items: $ref: "#/components/schemas/Organization" people: type: array items: type: object properties: founding_team: type: array items: $ref: "#/components/schemas/Person" contributors: type: array items: $ref: "#/components/schemas/Person" investors: type: array items: $ref: "#/components/schemas/Person" advisors: type: array items: $ref: "#/components/schemas/Person" relevant_resources: type: array items: type: object properties: name: type: string example: Whitepaper url: type: string example: https://nakamotoinstitute.org/bitcoin/ Organization: type: object properties: name: type: string example: Hypothetical Bitcoin Foundation founded_date: type: string format: datetime example: 2014-07-06T00:00:00Z governance: type: string example: null legal_structure: type: string example: Foundation jurisdiction: type: string format: datetime example: Switzerland, Europe org_charter: type: string example: null description: type: string example: null people_count_estimate: type: string example: "100" Person: type: object properties: first_name: type: string example: Satoshi last_name: type: string example: Nakamoto description: type: string example: Person(s) who created Bitcoin, whose identity remains unknown despite a plethora of demonstrably false claims to the contrary. github: type: string example: null linkedin: type: string example: null medium: type: string example: null twitter: type: string example: null AssetRoiStats: type: object properties: percent_change_last_1_week: type: number format: double example: -0.28963853172695914 percent_change_last_1_month: type: number format: double example: -0.41911389139537464 percent_change_last_3_months: type: number format: double example: -0.4671650746253208 percent_change_last_1_year: type: number format: double example: -0.5908177605434218 AssetMisc: type: object properties: asset_age_days: type: integer example: 3613 vladimir_club_cost: type: number format: double example: 7862341.302686478 categories: type: array items: type: string example: - Currency sector: type: array items: type: string example: - Currency AssetMetrics: type: object properties: <<: *asset market_data: $ref: "#/components/schemas/MarketData" supply: $ref: "#/components/schemas/AssetSupply" blockchain_stats_24_hours: $ref: "#/components/schemas/BlockchainStats24h" all_time_high: $ref: "#/components/schemas/AssetAllTimeHigh" developer_activity: $ref: "#/components/schemas/AssetDeveloperActivity" roi_data: $ref: "#/components/schemas/AssetRoiStats" misc_data: $ref: "#/components/schemas/AssetMisc" AssetMetricsMarketData: type: object properties: <<: *asset market_data: $ref: "#/components/schemas/MarketData" AssetLite: type: object properties: id: type: string example: 6104fc11-c09f-467b-bb70-f5017483f864 name: type: string example: Loom Network FundraisingRound: type: array items: type: object properties: title: type: string example: Crowdsale start_date: type: date-time example: 2016-07-22T00:00:00Z type: type: string example: Public Sale details: type: string example: The crowdsale was completed in less than 6 hours with over 12,000 participants. end_date: type: date-time example: 2016-07-23T00:00:00Z native_tokens_allocated: type: float example: 5000000 asset_collected: type: string example: ETH price_per_token_in_asset: type: float example: 0.0005 equivalent_price_per_token_in_USD: type: float example: 1.05 amount_collected_in_asset: type: float example: 2500 amount_collected_in_USD: type: float example: 5250000 is_kyc_required: type: boolean example: true restricted_jurisdictions: type: array items: type: string example: France Link: type: array items: type: object properties: name: type: string example: Example link: type: string example: example.com OrganizationLite: type: object properties: slug: type: string example: ethereum-foundation name: type: string example: Ethereum Foundation logo: type: string example: https://messari.s3.amazonaws.com/images/agora-images/DOnqq1OM_400x400.jpg description: type: string example: Ethereum is a decentralized platform that runs smart contracts, applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third-party interference. PersonLite: type: object properties: slug: type: string example: anthony-di-iorio first_name: type: string example: Vitalik last_name: type: string example: Buterin title: type: string example: Co-Founder of Ethereum description: type: string example: Vitalik is the creator of Ethereum. He first discovered blockchain and cryptocurrency technologies through Bitcoin in 2011, and was immediately excited by the technology and its potential. He cofounded Bitcoin Magazine in September 2011, and after two and a half years looking at what the existing blockchain technology and applications had to offer, wrote the Ethereum white paper in November 2013. He now leads Ethereum's research team, working on future versions of the Ethereum protocol. avatar_url: type: string example: https://pbs.twimg.com/profile_images/977496875887558661/L86xyLF4_400x400.jpg NativeTreasury: type: array items: type: object properties: account_type: type: string example: Crowdsale Wallet addresses: $ref: "#/components/schemas/Link" Treasury: type: array items: type: object properties: account_type: type: string example: Crowdsale Wallet asset_held: $ref: "#/components/schemas/AssetLite" addresses: $ref: "#/components/schemas/Link" security: type: string example: Multisig wallet ListAssetMetricsResponse: type: object properties: status: $ref: "#/components/schemas/ApiStatus" data: type: array items: type: string AssetTimeseriesParameters: type: object properties: assetKey: type: string example: "btc" assetID: type: string example: "ee9da78b-b500-4be1-88c3-9d412cfe9f48" start: type: string end: type: string interval: type: string example: "1d" order: type: string example: "asc" format: type: string example: "json" MarketTimeseriesParameters: type: object properties: marketKey: type: string example: "binance-btc-usdt" marketID: type: string example: "ee9da78b-b500-4be1-88c3-9d412cfe9f48" start: type: string end: type: string interval: type: string example: "1d" order: type: string example: "asc" format: type: string example: "json" TimeseriesSchema: type: object properties: metric_id: type: string example: "price" description: type: string example: "Market price represents the open, high, low, close and volume of the asset traded in the specified interval" category: type: string example: "Market Data" values_schema: $ref: "#/components/schemas/TimeseriesValuesSchema" minimum_interval: type: string example: "5m" first_available: type: date-time example: 2016-07-23T00:00:00Z last_available: type: date-time example: 2018-01-01T00:00:00Z TimeseriesValuesSchema: type: array items: type: object properties: name: type: string description: The name of the column example: open description: type: string description: A description of the column. example: The price of the asset at the beginning of each interval TimeseriesValues: type: array items: type: array items: type: float GetAssetTimeseriesResponse: type: object properties: parameters: $ref: "#/components/schemas/AssetTimeseriesParameters" schema: $ref: "#/components/schemas/TimeseriesSchema" values: $ref: "#/components/schemas/TimeseriesValues" GetMarketTimeseriesResponse: type: object properties: parameters: $ref: "#/components/schemas/MarketTimeseriesParameters" schema: $ref: "#/components/schemas/TimeseriesSchema" values: $ref: "#/components/schemas/TimeseriesValues" Reference: type: object properties: name: type: string example: KPMG url: type: string example: https://assets.kpmg.com/content/dam/kpmg/us/pdf/2018/11/institutionalization-cryptoassets.pdf