Brazil CVM Filings for Law Firm Research

Litigation, capital-markets, and M&A counsel often need Brazil filings law firm source packs: FRE risk factors, contingencies, related parties, and audited DFP packages. apicvm returns those documents over HTTP with stable IDs for matter folders. It is not a legal research database or opinion tool.

The persona

  • Associates assembling public-company disclosure packs
  • Diligence teams reviewing FRE contingencies beside data-room files
  • Knowledge teams that archive PDFs with reproducible URLs

The problem

Legal question Typical CVM source
Disclosed proceedings / contingencies FRE sections (name= filters)
Related-party and governance context FRE
Audited financial statements DFP
Recent quarterly updates ITR

Hand-clicking the CVM portal for every opposing party or target does not leave an audit trail.

Solution flow

Party tickers / CNPJs
  → GET /v1/companies/resolve
  → GET /v1/documents (FRE + name filters; DFP/ITR as needed)
  → GET /v1/documents/:id/file → matter DMS
  → optional POST /v1/document-text-extractions for full-text search
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'

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

Section filtering patterns: FRE risk factors via section filter.

Matter pack checklist

  1. Resolve by ticker or CNPJ
  2. Archive latest FRE (and prior year if the dispute spans periods)
  3. Pull DFP for the fiscal years at issue
  4. Store document.id in the matter index — not only filenames

For deal-side framing, see M&A research and due diligence.

Example: contingency-oriented FRE pull

import os, requests

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

docs = requests.get(
    f"{BASE}/v1/documents",
    headers=H,
    params={
        "ticker": "PETR4",
        "type": "FRE",
        "year": 2024,
        "name": "Conting",
        "perPage": 20,
    },
    timeout=30,
).json()["data"]

for d in docs:
    print(d["id"], d["name"])

name is a substring filter on section/document names — refine iteratively; do not assume a single Portuguese label covers every issuer.

Current limitations

  • apicvm does not interpret Brazilian law or summarize claims.
  • Coverage is the ingested corpus, not a guarantee of every portal filing.
  • Extraction is async via callback; plan DMS ingest accordingly.

Next steps

Ready to integrate?

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