Brazil Asset Impairment Write-Down Disclosures API: Track Provisions from CVM Filings

A Brazil asset impairment write-down disclosures API in the earnings-quality sense is not a vendor of adjusted EPS, a consensus database, or an NLP classifier that labels every non-recurring line. It is access to the CVM filings issuers publish when they take material impairments, reverse provisions, or explain one-off accounting effects — the PDFs on the IPE layer and in periodic packages. apicvm lets you list those rows by ticker, download the original filing, and diff new document.id values on a research watchlist.

This guide shows which type values to query, keyword heuristics for impairment-related titles, and how this hub differs from DFP footnote extraction, guidance revisions, and debt refinancing notices.

The problem

Earnings surveillance splits into three stacks that English search results often merge:

  1. Market data terminals — summarize reported and adjusted EPS. They rarely store the issuer’s regulatory PDF with the full note text.
  2. Periodic packages — DFP, ITR, and FRE with explanatory notes on impairments, provisions, fair-value adjustments, and subsequent events. Essential for footnote math, but you still need ticker-first access and stable file IDs.
  3. Event disclosures — fatos relevantes when a write-down or material provision change is announced outside the normal filing calendar, or when management pre-announces an accounting effect.

Scraping the CVM portal works for one ticker and breaks on a multi-name watchlist. Bulk open-data ZIPs are dataset-oriented, not ticker-first. You want GET /v1/documents with stable document.id, then GET /v1/documents/:id/file for the original PDF — scoped to impairment, provisions, and write-down workflows.

For a concrete DFP footnote walkthrough (ICMS reversal, divestiture effects), see RADL3 earnings quality analysis. This guide focuses on the API list-and-download pattern across event and periodic layers.

Which filing type carries impairment and write-down detail?

Brazilian issuers do not expose a dedicated type=IMPAIRMENT in the apicvm document list. Impairment and provision detail usually appears under:

type Role in impairment / write-down workflows
FATO_RELEVANTE Material fact when a write-down, large provision, or material accounting update is disclosed as an event
ITR / DFP Periodic financials — explanatory notes on impairment tests, reversals, and non-recurring items
FRE Annual reference form — risk factors and policies that frame recurring vs one-off items
COMUNICADO_AO_MERCADO Occasional market communication framing accounting or operational updates

Practical rule: poll FATO_RELEVANTE on watchlists ahead of earnings season, list latest ITR/DFP for the same ticker after results, then filter event rows by name keywords (impairment, reducao, redução, valor recuperavel, valor recuperável, provisao, provisão, write-down, writedown, perda, reversao, reversão, ajuste, non-recurring, nao recorrente, não recorrente) before downloading PDFs. After download, search PDF text for redução ao valor recuperável, teste de impairment, or note references to CPC 01 / IAS 36.

Issuer titles vary: retailers file long name tokens tied to quarterly performance; miners may bundle impairment language inside broader operational updates. Zero rows in a given year does not prove the issuer never recorded an impairment — see limitations below.

How apicvm helps

  1. Resolve the issuer — GET /v1/companies/resolve
  2. List event filings — GET /v1/documents with type=FATO_RELEVANTE (optionally add COMUNICADO_AO_MERCADO)
  3. List periodic packages — GET /v1/documents with type=ITR or type=DFP and year
  4. Scope with dateRef; sort with field=dateRef&order=desc
  5. Download the PDF — GET /v1/documents/:id/file (no extraction credits)
  6. Optional (Pro): page-level markdown — POST /v1/document-text-extractions with async callback

Auth: Authorization: Bearer or X-API-Key. Try VALE3 without a key via the demo API.

Setup

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

Step 1: List material facts for one ticker

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=RADL3&type=FATO_RELEVANTE&year=2025&perPage=50&field=dateRef&order=desc"

Response rows include stable id, dateRef, name, and nested company metadata. Use id as your cache key — not name, which can be long and encoding-sensitive.

Paginate with page= when meta.lastPage > 1. perPage maxes at 50.

Step 3: Download a filing PDF

curl -H "Authorization: Bearer $APICVM_KEY" \
  -o impairment-notice.pdf \
  "$APICVM_URL/v1/documents/<document-id>/file"

Download does not consume extraction credits.

Where impairment disclosures sit in the filings stack

Layer Types Impairment / write-down relevance
Events FATO_RELEVANTE, COMUNICADO_AO_MERCADO Same-day or off-cycle accounting news
Periodic ITR, DFP Note disclosures and subsequent events
Reference FRE Policies and risk context for recurring earnings

Brazil regulatory filings API explains the full layer map. Pair event polling with quarterly ITR monitoring during 3Q ITR season (typically Oct–Nov). For leverage-driven impairments, cross-check Brazil debt covenant disclosures API. For legal contingencies that drive provisions, see Brazil litigation disclosures API.

Current limitations

  • Documents, not adjusted EPS — apicvm does not compute non-GAAP metrics or classify recurring vs one-off lines automatically.
  • Keyword filters are heuristic — name tokens help; many impairments appear only inside periodic PDF notes without event-layer keywords.
  • Polling, not push — no webhook when CVM publishes a new fact. Schedule polls and diff document.id.
  • Ingestion lag — sync is not real-time. A notice may appear on the portal before it is in the corpus.
  • Corpus coverage — not every issuer or period is present. Validate against the portal for production compliance use cases.
  • Demo scope — /v1/demo/* is limited to VALE3. Other tickers need a production key.

Next steps

Ready to integrate?

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