Get borrow offer by ID
curl --request GET \
--url https://criffy.com/api/v1/borrow/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://criffy.com/api/v1/borrow/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://criffy.com/api/v1/borrow/{id}', 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://criffy.com/api/v1/borrow/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://criffy.com/api/v1/borrow/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://criffy.com/api/v1/borrow/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://criffy.com/api/v1/borrow/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 501,
"compositeKey": "aave:ethereum:usdc",
"platform": {
"type": "protocol",
"slug": "aave",
"name": "Aave"
},
"chain": {
"slug": "ethereum",
"symbol": "ETH",
"name": "Ethereum"
},
"asset": {
"slug": "usd-coin",
"symbol": "USDC",
"name": "USDC"
},
"platform_type": "protocol",
"term_days": null,
"borrow_apy": "4.10",
"supply_apy": "2.25",
"net_borrow_apy": "1.85",
"real_net_borrow_apy": "1.85",
"total_supply_usd": "125000000.00",
"total_borrow_usd": "82000000.00",
"available_liquidity_usd": "43000000.00",
"is_active": true,
"link": "https://app.aave.com",
"synced_at": "2026-04-23T09:58:00.000Z",
"updated_at": "2026-04-23T10:00:00.000Z"
}Offers
Get borrow offer by ID
GET
/
api
/
v1
/
borrow
/
{id}
Get borrow offer by ID
curl --request GET \
--url https://criffy.com/api/v1/borrow/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://criffy.com/api/v1/borrow/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://criffy.com/api/v1/borrow/{id}', 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://criffy.com/api/v1/borrow/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://criffy.com/api/v1/borrow/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://criffy.com/api/v1/borrow/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://criffy.com/api/v1/borrow/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 501,
"compositeKey": "aave:ethereum:usdc",
"platform": {
"type": "protocol",
"slug": "aave",
"name": "Aave"
},
"chain": {
"slug": "ethereum",
"symbol": "ETH",
"name": "Ethereum"
},
"asset": {
"slug": "usd-coin",
"symbol": "USDC",
"name": "USDC"
},
"platform_type": "protocol",
"term_days": null,
"borrow_apy": "4.10",
"supply_apy": "2.25",
"net_borrow_apy": "1.85",
"real_net_borrow_apy": "1.85",
"total_supply_usd": "125000000.00",
"total_borrow_usd": "82000000.00",
"available_liquidity_usd": "43000000.00",
"is_active": true,
"link": "https://app.aave.com",
"synced_at": "2026-04-23T09:58:00.000Z",
"updated_at": "2026-04-23T10:00:00.000Z"
}Authorizations
Bearer API key for authenticated /api/v1/* access.
Path Parameters
Numeric offer identifier.
Response
Borrow offer.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Borrow APY percentage serialized as a decimal string.
Supply APY percentage serialized as a decimal string.
Net borrow APY percentage serialized as a decimal string.
Criffy-normalized net borrow APY percentage serialized as a decimal string.
Runtime activity status for the borrow offer. Published offers can be returned when this is false.

