Access Brazil CVM Filings with V
Need a V CVM filings API client for Brazilian public companies? apicvm is plain HTTPS JSON. Use net.http with a Bearer token — there is no official V package.
The problem
Systems services written in V that archive Brazil filings often shell out to scrapers or unpack yearly ZIPs without stable document UUIDs. A thin HTTPS client against /v1 keeps the binary close to the wire.
Setup
export APICVM_URL='https://apicvm.dev'
export APICVM_KEY='apicvm_...' # from /signup
Resolve a ticker
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/companies/resolve?query=PETR4&by=ticker"
Example: net.http sketch
import net.http
import os
url := "${os.getenv('APICVM_URL')}/v1/companies/resolve?query=PETR4&by=ticker"
mut req := http.new_request(.get, url, '')
req.add_header(.authorization, "Bearer ${os.getenv('APICVM_KEY')}")
resp := req.do()!
println(resp.body)
List DFP documents
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=PETR4&type=DFP&year=2024&perPage=20"
Parse the JSON data array for id values before downloading.
Download a PDF
curl -OJ -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents/<document-id>/file"
File download does not consume extraction credits.
Python cross-check
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": "DFP", "year": 2024, "perPage": 20},
).json()
print(len(docs["data"]))
Current limitations
- Text extraction (
POST /v1/document-text-extractions) is async via callback — not a sync V await of markdown. perPagemax is 50; paginate withpage.- Corpus coverage depends on ingestion; empty lists are not "company never filed".
Next steps
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.