curl --request POST \
--url https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"p_min_silent_months": 3,
"p_max_silent_months": 24,
"p_family": null
}
'import requests
url = "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers"
payload = {
"p_min_silent_months": 3,
"p_max_silent_months": 24,
"p_family": None
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({p_min_silent_months: 3, p_max_silent_months: 24, p_family: null})
};
fetch('https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers', 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/rpc/screen_silent_filers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'p_min_silent_months' => 3,
'p_max_silent_months' => 24,
'p_family' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers"
payload := strings.NewReader("{\n \"p_min_silent_months\": 3,\n \"p_max_silent_months\": 24,\n \"p_family\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"p_min_silent_months\": 3,\n \"p_max_silent_months\": 24,\n \"p_family\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"p_min_silent_months\": 3,\n \"p_max_silent_months\": 24,\n \"p_family\": null\n}"
response = http.request(request)
puts response.read_body[
{
"cnpj": "<string>",
"fund_family": "<string>",
"fund_name": "<string>",
"registry_status": "<string>",
"last_filed_period": "2023-12-25",
"complete_through": "2023-12-25",
"months_silent": 123,
"reports_filed": 123,
"registry_nav": 123,
"registry_nav_date": "2023-12-25",
"fnet_last_delivered_at": "2023-11-07T05:31:56Z",
"screen": "<string>",
"params": {}
}
]{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}screen_silent_filers
SIGNAL, NOT A VERDICT. Funds that CVM’s registry (cvm_fund_registry) still lists as active (is_active, derived from the filed status; registry_status is served as filed) whose last periodic informe in CVM’s own dataset — the informe diário for FI, the monthly informe for FIDC, FII and FIAGRO (dim_fund) — is between p_min_silent_months and p_max_silent_months COMPLETE months behind the family’s latest complete period (latest_complete_period, never today), so an unpublished month never reads as silence. reports_filed is the fund’s filed periods; registry_nav / registry_nav_date are the NAV the registry itself carries, with its own date; fnet_last_delivered_at is the newest B3 Fundos.NET document linked to the CNPJ (FII / FIDC only; NULL = none linked) — a fund silent at CVM but still delivering to FNET is the “still filing elsewhere” case. The same row comes from a fund merged, incorporated or liquidated whose registry status CVM has not updated yet; a resolution-175 adaptation that moved reporting to a class CNPJ other than the fund’s; CVM’s dataset lagging the filing itself; or a SILO ingest gap (check coverage() landed_at before reading a family-wide silence). FIP files annually and is not screened. Defaults 3..24 months, every family. Every row carries screen and params. More than 1000 rows RAISES 22023 (never trimmed): pin p_family or narrow p_min_silent_months / p_max_silent_months.
Row cap. A window producing more than 1000 rows raises SQLSTATE 22023 naming this function. Nothing is trimmed to fit — PostgREST would silently cut the response at 1000 and a cut-short series is indistinguishable from one that simply ends. This function does not page — narrow the window instead.
curl --request POST \
--url https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"p_min_silent_months": 3,
"p_max_silent_months": 24,
"p_family": null
}
'import requests
url = "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers"
payload = {
"p_min_silent_months": 3,
"p_max_silent_months": 24,
"p_family": None
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({p_min_silent_months: 3, p_max_silent_months: 24, p_family: null})
};
fetch('https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers', 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/rpc/screen_silent_filers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'p_min_silent_months' => 3,
'p_max_silent_months' => 24,
'p_family' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers"
payload := strings.NewReader("{\n \"p_min_silent_months\": 3,\n \"p_max_silent_months\": 24,\n \"p_family\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"p_min_silent_months\": 3,\n \"p_max_silent_months\": 24,\n \"p_family\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_silent_filers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"p_min_silent_months\": 3,\n \"p_max_silent_months\": 24,\n \"p_family\": null\n}"
response = http.request(request)
puts response.read_body[
{
"cnpj": "<string>",
"fund_family": "<string>",
"fund_name": "<string>",
"registry_status": "<string>",
"last_filed_period": "2023-12-25",
"complete_through": "2023-12-25",
"months_silent": 123,
"reports_filed": 123,
"registry_nav": 123,
"registry_nav_date": "2023-12-25",
"fnet_last_delivered_at": "2023-11-07T05:31:56Z",
"screen": "<string>",
"params": {}
}
]{
"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.
Body
Response
The result set, oldest first. An unknown id is an empty array, not a 404 and never a guessed value.
Was this page helpful?