curl --request GET \
--url https://api.blockworks.com/query/tabular/lending-market-balances \
--header 'X-Blockworks-API-Key: <api-key>'import requests
url = "https://api.blockworks.com/query/tabular/lending-market-balances"
headers = {"X-Blockworks-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Blockworks-API-Key': '<api-key>'}};
fetch('https://api.blockworks.com/query/tabular/lending-market-balances', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.blockworks.com/query/tabular/lending-market-balances",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Blockworks-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.blockworks.com/query/tabular/lending-market-balances"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Blockworks-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.blockworks.com/query/tabular/lending-market-balances")
.header("X-Blockworks-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockworks.com/query/tabular/lending-market-balances")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Blockworks-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"balanceSubtype": "<balanceSubtype>",
"balanceType": "<balanceType>",
"chain": "<chain>",
"id": "<id>",
"marketID": "<marketID>",
"marketName": "<marketName>",
"marketType": "<marketType>",
"name": "<name>",
"networkID": "<networkID>",
"parentSlug": "<parentSlug>",
"productSlug": "<productSlug>",
"projectID": "<projectID>",
"protocolName": "<protocolName>",
"protocolSlug": "<protocolSlug>",
"slug": "<slug>",
"tokenAddress": "<tokenAddress>",
"tokenSymbol": "<tokenSymbol>"
}
],
"error": null,
"metadata": {
"totalPages": 1,
"totalRows": 1
}
}{
"data": null,
"error": "unknown query parameter \"id\""
}{
"data": null,
"error": "this model requires authentication"
}{
"data": null,
"error": "this model requires the \"lending-protocols-dataset\" permission; see https://app.blockworks.com/account/api for the public API permissions you hold"
}{
"data": null,
"error": "tabular model \"unknown-model\" not found"
}List Lending Market Balances
One row per lending market balance, the finest grain of the lending data, keyed by protocol, product, chain, market, token, balance type and balance subtype: the market and token, the parent protocol and product, chain and the mapped protocol, project and network records. The id is the series key of the lending-market-balances timeseries model.
curl --request GET \
--url https://api.blockworks.com/query/tabular/lending-market-balances \
--header 'X-Blockworks-API-Key: <api-key>'import requests
url = "https://api.blockworks.com/query/tabular/lending-market-balances"
headers = {"X-Blockworks-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Blockworks-API-Key': '<api-key>'}};
fetch('https://api.blockworks.com/query/tabular/lending-market-balances', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.blockworks.com/query/tabular/lending-market-balances",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Blockworks-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.blockworks.com/query/tabular/lending-market-balances"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Blockworks-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.blockworks.com/query/tabular/lending-market-balances")
.header("X-Blockworks-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockworks.com/query/tabular/lending-market-balances")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Blockworks-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"balanceSubtype": "<balanceSubtype>",
"balanceType": "<balanceType>",
"chain": "<chain>",
"id": "<id>",
"marketID": "<marketID>",
"marketName": "<marketName>",
"marketType": "<marketType>",
"name": "<name>",
"networkID": "<networkID>",
"parentSlug": "<parentSlug>",
"productSlug": "<productSlug>",
"projectID": "<projectID>",
"protocolName": "<protocolName>",
"protocolSlug": "<protocolSlug>",
"slug": "<slug>",
"tokenAddress": "<tokenAddress>",
"tokenSymbol": "<tokenSymbol>"
}
],
"error": null,
"metadata": {
"totalPages": 1,
"totalRows": 1
}
}{
"data": null,
"error": "unknown query parameter \"id\""
}{
"data": null,
"error": "this model requires authentication"
}{
"data": null,
"error": "this model requires the \"lending-protocols-dataset\" permission; see https://app.blockworks.com/account/api for the public API permissions you hold"
}{
"data": null,
"error": "tabular model \"unknown-model\" not found"
}Authorizations
API key sent in the X-Blockworks-API-Key header; x-messari-api-key is accepted for existing integrations. The catalog endpoints and models open to everyone need no key.
Query Parameters
Lending Market Balance ID equals.
Lending Market Balance ID is one of (comma-separated).
Name equals.
Name is one of (comma-separated).
Name contains (case-insensitive substring).
Slug equals.
Slug is one of (comma-separated).
Parent Slug equals.
Parent Slug is one of (comma-separated).
Product Slug equals.
Product Slug is one of (comma-separated).
Chain equals.
Chain is one of (comma-separated).
Market ID equals.
Market ID is one of (comma-separated).
Market Name equals.
Market Name is one of (comma-separated).
Market Name contains (case-insensitive substring).
Market Type equals.
Market Type is one of (comma-separated).
Token Address equals.
Token Address is one of (comma-separated).
Token Symbol equals.
Token Symbol is one of (comma-separated).
Token Symbol contains (case-insensitive substring).
Balance Type equals.
Balance Type is one of (comma-separated).
Balance Subtype equals.
Balance Subtype is one of (comma-separated).
Protocol Slug equals.
Protocol Slug is one of (comma-separated).
Protocol Name equals.
Protocol Name is one of (comma-separated).
Project ID equals.
Project ID is one of (comma-separated).
Network ID equals.
Network ID is one of (comma-separated).
Field to sort by; defaults to the model's default sort column.
name, slug, parentSlug, tokenSymbol Sort direction.
asc, desc 1-based page number.
Rows per page (max 1000, default 100).
Comma-separated fields to return; defaults to all fields.
id, name, slug, parentSlug, productSlug, chain, marketID, marketName, marketType, tokenAddress, tokenSymbol, balanceType, balanceSubtype, protocolSlug, protocolName, projectID, networkID Response format, overriding the Accept header: json (default), csv, or jsonl (NDJSON). csv and jsonl return the rows as a downloadable file.
json, csv, jsonl