Skip to main content

What this is

SILO is a read API over Brazilian public financial data, ingested daily into Supabase Postgres so a claim can be checked against what was actually filed.
  • Funds: CVM disclosures for FI, FIDC, FII, FIP, FIAGRO and securitisation vehicles.
  • Listed companies: ITR/DFP statements, events, the published ticker map.
  • Markets: the B3 COTAHIST tape, securities lending, investor-type flows, BACEN macro series.
Schema api over PostgREST, one shared publishable key. Anonymous access is free and small; signing in raises the ceilings (Conventions & limits, or catalog().limits). An endpoint that cannot answer refuses with a code and never returns a plausible substitute. Built for software too: catalog() returns every endpoint, argument, limit and refusal code as JSON, llms.txt indexes this site, and skill.md is a drop-in agent skill. Dashboard: silo-bz-deloslabs.vercel.app. Code: PedroDnT/SILO-BZ.

Quickstart

Get the publishable key and make your first call in under a minute.

For agents

How an agent reads this site. You cannot generate an API key.

Base URL

Views are GET /<view>; functions are POST /rpc/<function>. Send the publishable key on apikey only, not as Authorization: Bearer.
panel is the core endpoint: one row is (id, date, metric, value), so one call can mix equity closes and fund fundamentals.

What is exposed

Landing tables (cvm_*, b3_cotahist, cvm_ingest_log) are not exposed. Schema api is the boundary: English column names, ticker/CNPJ keys, an explicit adjusted = false flag.

Rules the data follows

  • Nothing is fabricated. No row for a ticker means no row, never a plausible last close.
  • Missing stays missing. No forward-fill, interpolation or carry-last-observation.
  • close_return across a calendar gap is null. Closes are unadjusted: a 2:1 split reports roughly -50%.
  • freq=day is quotes only. Mix equity with fund fundamentals on freq=month.
  • 1,000 rows per response. RPC functions refuse above it (22023); GET views are cut silently and only Content-Range says so. Never analyse a cut series. See Row caps.

Notes

  • Ingestion runs on a GitHub Actions cron (run_daily) plus on-demand backfills (run_backfill). There is no ingest HTTP API.
  • More: README, docs/.