curl --request GET \
--url https://api.blockworks.com/query/tabular/lending-protocol-product-markets \
--header 'X-Blockworks-API-Key: <api-key>'import requests
url = "https://api.blockworks.com/query/tabular/lending-protocol-product-markets"
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-protocol-product-markets', 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-protocol-product-markets",
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-protocol-product-markets"
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-protocol-product-markets")
.header("X-Blockworks-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockworks.com/query/tabular/lending-protocol-product-markets")
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": [
{
"chain": "<string>",
"id": "<string>",
"marketName": "<string>",
"marketType": "<string>",
"name": "<string>",
"parentSlug": "<string>",
"productSlug": "<string>",
"projectID": "<string>",
"protocolName": "<string>",
"protocolSlug": "<string>",
"slug": "<string>"
}
],
"metadata": {
"totalPages": 123,
"totalRows": 123
},
"error": "<string>"
}{
"data": null,
"error": "unknown query parameter \"id\""
}{
"data": null,
"error": "this model requires authentication"
}{
"data": null,
"error": "this model requires the \"projects_protocols_unified\" permission"
}{
"data": null,
"error": "tabular model \"unknown-model\" not found"
}List Lending Protocol Product Markets
One row per lending market, the finest grain of the lending data, keyed by protocol, product, chain and market key: market name and type, the parent protocol and product, chain and the mapped protocol record. The id is the series key of the lending-protocols-by-product-market timeseries model.
curl --request GET \
--url https://api.blockworks.com/query/tabular/lending-protocol-product-markets \
--header 'X-Blockworks-API-Key: <api-key>'import requests
url = "https://api.blockworks.com/query/tabular/lending-protocol-product-markets"
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-protocol-product-markets', 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-protocol-product-markets",
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-protocol-product-markets"
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-protocol-product-markets")
.header("X-Blockworks-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockworks.com/query/tabular/lending-protocol-product-markets")
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": [
{
"chain": "<string>",
"id": "<string>",
"marketName": "<string>",
"marketType": "<string>",
"name": "<string>",
"parentSlug": "<string>",
"productSlug": "<string>",
"projectID": "<string>",
"protocolName": "<string>",
"protocolSlug": "<string>",
"slug": "<string>"
}
],
"metadata": {
"totalPages": 123,
"totalRows": 123
},
"error": "<string>"
}{
"data": null,
"error": "unknown query parameter \"id\""
}{
"data": null,
"error": "this model requires authentication"
}{
"data": null,
"error": "this model requires the \"projects_protocols_unified\" permission"
}{
"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 on the public access tier need no key.
Query Parameters
Lending Protocol Product Market ID equals.
Lending Protocol Product Market 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 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).
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).
Field to sort by; defaults to the model's default sort column.
name, slug, parentSlug 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, marketName, marketType, protocolSlug, protocolName, projectID 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