Get earn offer by ID
curl --request GET \
--url https://criffy.com/api/v1/earn/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://criffy.com/api/v1/earn/{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/earn/{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/earn/{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/earn/{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/earn/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://criffy.com/api/v1/earn/{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": 101,
"compositeKey": "binance:eth:flexible",
"platform": {
"type": "exchange",
"slug": "binance",
"name": "Binance"
},
"chain": {
"slug": "ethereum",
"symbol": "ETH",
"name": "Ethereum"
},
"asset": {
"slug": "ethereum",
"symbol": "ETH",
"name": "Ethereum"
},
"reward_assets": [],
"product_type": "savings",
"product_name": "Flexible ETH Savings",
"duration_days": null,
"apy": "3.25",
"estimated_apy": "3.10",
"estimated_apy_updated_at": "2026-04-23T09:55:00.000Z",
"tvl": "4200000.00",
"min_amount": "0.01",
"max_amount": null,
"available": true,
"available_updated_at": "2026-04-23T09:55:00.000Z",
"link": "https://www.binance.com/en/earn",
"updated_at": "2026-04-23T10:00:00.000Z"
}Offers
Get earn offer by ID
GET
/
api
/
v1
/
earn
/
{id}
Get earn offer by ID
curl --request GET \
--url https://criffy.com/api/v1/earn/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://criffy.com/api/v1/earn/{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/earn/{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/earn/{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/earn/{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/earn/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://criffy.com/api/v1/earn/{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": 101,
"compositeKey": "binance:eth:flexible",
"platform": {
"type": "exchange",
"slug": "binance",
"name": "Binance"
},
"chain": {
"slug": "ethereum",
"symbol": "ETH",
"name": "Ethereum"
},
"asset": {
"slug": "ethereum",
"symbol": "ETH",
"name": "Ethereum"
},
"reward_assets": [],
"product_type": "savings",
"product_name": "Flexible ETH Savings",
"duration_days": null,
"apy": "3.25",
"estimated_apy": "3.10",
"estimated_apy_updated_at": "2026-04-23T09:55:00.000Z",
"tvl": "4200000.00",
"min_amount": "0.01",
"max_amount": null,
"available": true,
"available_updated_at": "2026-04-23T09:55:00.000Z",
"link": "https://www.binance.com/en/earn",
"updated_at": "2026-04-23T10:00:00.000Z"
}Authorizations
Bearer API key for authenticated /api/v1/* access.
Path Parameters
Numeric offer identifier.
Response
Earn offer.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
APY percentage serialized as a decimal string. For example, 4.25 means 4.25%.
Provider-estimated APY percentage serialized as a decimal string.
Total value locked in USD when available, serialized as a decimal string.
Runtime availability status for the earn offer. Published offers can be returned when this is false.
When the earn offer availability status was last refreshed.

