curl --request GET \
--url https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate \
--header 'apikey: <api-key>'import requests
url = "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate"
headers = {"apikey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {apikey: '<api-key>'}};
fetch('https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate', 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://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"apikey: <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://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("apikey", "<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://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate")
.header("apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["apikey"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"trade_date": "2023-12-25",
"curve": "<string>",
"business_days": 123,
"calendar_days": 123,
"rate_pct": 123
}
]{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}reference_rate
B3 reference-rate curves per session and vertex (b3_reference_rate, TaxaSwap.txt, from 2008-01-02), fixed and moving vertices together. rate_pct is as B3 publishes it, and its basis differs by curve: PRE and DPL are % a.a. on 252 business days, DOC is % a.a. linear on 360 calendar days (api.curve carries rate_basis on every row). The ingest holds PRE, DOC and DPL only. Long vertices are B3’s extrapolation. A GET returns at most 1000 rows, the OLDEST first: filter on curve and trade_date and read Content-Range.
Paging. A GET view pages normally with limit/offset (and Range). Every response is cut at 1000 rows server-side regardless of tier; read Content-Range to detect it (0-999/* is a truncated page, and Prefer: count=exact turns the * into the total).
curl --request GET \
--url https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate \
--header 'apikey: <api-key>'import requests
url = "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate"
headers = {"apikey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {apikey: '<api-key>'}};
fetch('https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate', 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://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"apikey: <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://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("apikey", "<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://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate")
.header("apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/reference_rate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["apikey"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"trade_date": "2023-12-25",
"curve": "<string>",
"business_days": 123,
"calendar_days": 123,
"rate_pct": 123
}
]{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}Authorizations
The publishable key (sb_publishable_…), on every request. It is NOT a JWT — sending it as Authorization: Bearer is rejected as an invalid JWT. It identifies the project, not you, and maps to the Postgres anon role.
Query Parameters
Columns to return, comma separated. Omit for all of them.
Sort, e.g. trade_date.desc. Always order a paged read, or limit/offset walk an undefined sequence.
Rows to return. The server cuts every response at 1000 whatever you ask for.
x <= 1000Rows to skip. Pairs with limit and order to page.
PostgREST filter on trade_date — eq., neq., gt., gte., lt., lte., in., is. (e.g. trade_date=eq.<value>).
PostgREST filter on curve — eq., neq., gt., gte., lt., lte., in., is. (e.g. curve=eq.<value>).
PostgREST filter on business_days — eq., neq., gt., gte., lt., lte., in., is. (e.g. business_days=eq.<value>).
PostgREST filter on calendar_days — eq., neq., gt., gte., lt., lte., in., is. (e.g. calendar_days=eq.<value>).
PostgREST filter on rate_pct — eq., neq., gt., gte., lt., lte., in., is. (e.g. rate_pct=eq.<value>).
Was this page helpful?