Formulário de Referência (FRE): Brazil CVM Reference Form Explained

Formulário de Referência — abbreviated FRE — is the annual reference form Brazilian public companies file with the CVM. It describes who the company is, how it is governed, and what risks it faces. When you list CVM documents for a ticker you will see FRE alongside DFP and ITR; for company research, due diligence, and NLP over regulatory text, FRE is the context that financial statements alone do not provide.

This guide explains what the Formulário de Referência contains, how FRE differs from DFP/ITR, and how to fetch it with apicvm.

The problem

Developers encounter FRE in document metadata but official CVM documentation is mostly in Portuguese. Without context you might:

  • Skip FRE and miss governance, compensation, and risk disclosures
  • Confuse FRE with annual financial statements (that is DFP)
  • Manually hunt PDFs on CVM portals instead of filtering type=FRE in an API

You need a clear definition and a programmatic fetch path.

What is FRE (Formulário de Referência)?

FRE is a standardized disclosure form that Brazilian publicly traded companies file with the CVM. It is updated annually (and when material changes occur). Typical sections include:

  • Company overview — business description, segments, competitive position
  • Share capital and control — ownership structure, major shareholders
  • Management and board — executives, directors, compensation policies
  • Risk factors — operational, regulatory, market risks
  • Legal and regulatory matters — litigation, environmental, labor issues
  • Other disclosures — related-party transactions, dividend policy

Think of FRE as a structured company handbook for investors — complementary to the numbers in DFP/ITR.

FRE vs DFP vs ITR

FRE DFP ITR
Focus Company profile, governance, risks Annual financial statements Quarterly financials
Cadence Annual (+ updates) Annual Quarterly
Primary use Research, risk, NLP context Financial modeling Interim monitoring
apicvm filter type=FRE type=DFP type=ITR

For a complete picture of WEGE3 or any B3 ticker, fetch all three types for the same year when available.

List FRE filings via API

export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=WEGE3&type=FRE&year=2024&perPage=20"

You can also search by CNPJ or company name:

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?companyName=WEG&types=FRE&perPage=20"

Each result includes id, year, dateRef, and name — pick the document you need explicitly.

Download FRE PDF

curl -OJ -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents/<document-id>/file"

FRE documents are often long (hundreds of pages). For text pipelines, prefer async extraction over local PDF parsing.

Python example

import os
import requests

BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}


def get_fre_filings(ticker: str, year: int | None = None) -> list:
    params = {"ticker": ticker, "type": "FRE", "perPage": 50}
    if year:
        params["year"] = year
    r = requests.get(f"{BASE}/v1/documents", headers=H, params=params)
    r.raise_for_status()
    return r.json()["data"]


filings = get_fre_filings("WEGE3", year=2024)
print(f"Found {len(filings)} FRE filing(s) for WEGE3")

if filings:
    doc = filings[0]
    print(f"  {doc['year']} — {doc['name']} (id={doc['id']})")

    # Download
    r = requests.get(f"{BASE}/v1/documents/{doc['id']}/file", headers=H, stream=True)
    r.raise_for_status()
    with open(f"wege3-fre-{doc['year']}.pdf", "wb") as f:
        for chunk in r.iter_content(8192):
            f.write(chunk)

Use cases for developers

Company profile APIs — Extract FRE sections to populate issuer metadata beyond ticker and sector.

Risk scoring — FRE risk factor sections feed NLP classifiers or LLM summarization for ESG and governance products.

Agent tools — AI agents answering "Who controls PETR4?" or "What are Vale's main risks?" need FRE, not just ITR numbers.

Cross-filing analysis — Join FRE governance data with DFP financials in a research pipeline:

for doc_type in ("FRE", "DFP", "ITR"):
    docs = requests.get(
        f"{BASE}/v1/documents",
        headers=H,
        params={"ticker": "WEGE3", "type": doc_type, "year": 2024, "perPage": 10},
    ).json()["data"]
    print(f"{doc_type}: {len(docs)} docs")

For markdown extraction suitable for LLMs, see Extract Text from CVM PDFs for AI Agents.

Current limitations

  • Section structure varies — FRE content follows CVM norms but layout differs by company; apicvm delivers the PDF, not parsed sections.
  • Corpus gaps — FRE is available only for companies and years in the ingested database.
  • Language — Original filings are in Portuguese; extraction preserves source language.
  • Not a substitute for DFP — FRE describes the company; DFP/ITR contain the financial statements.

Next steps

Ready to integrate?

Get an API key and start querying Brazilian CVM filings programmatically.