Access Brazil CVM Filings with Dart

Need a Dart CVM filings API client for Brazilian public companies? apicvm is plain HTTPS JSON. Use package:http (or dio) with a Bearer token — there is no official Dart package.

The problem

Flutter desktop tools and Dart CLIs that archive Brazil filings usually hit brittle portal HTML or yearly ZIP dumps without stable document UUIDs. A thin HTTP client against /v1 is easier to share across Flutter and server isolates.

Setup

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

Add http: ^1.2.0 to pubspec.yaml.

Resolve a ticker

import 'dart:io';
import 'package:http/http.dart' as http;

final base = Platform.environment['APICVM_URL']!;
final key = Platform.environment['APICVM_KEY']!;

final uri = Uri.parse('$base/v1/companies/resolve').replace(queryParameters: {
  'query': 'PETR4',
  'by': 'ticker',
});
final res = await http.get(uri, headers: {'Authorization': 'Bearer $key'});
print(res.body);

List DFP documents

final listUri = Uri.parse('$base/v1/documents').replace(queryParameters: {
  'ticker': 'PETR4',
  'type': 'DFP',
  'year': '2024',
  'perPage': '20',
});
final listRes = await http.get(listUri, headers: {'Authorization': 'Bearer $key'});

Download a PDF

final fileUri = Uri.parse('$base/v1/documents/$documentId/file');
final fileRes = await http.get(fileUri, headers: {'Authorization': 'Bearer $key'});
await File('petr4-dfp.pdf').writeAsBytes(fileRes.bodyBytes);

File download does not consume extraction credits.

curl cross-check

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/companies/resolve?query=PETR4&by=ticker"

See Access Brazil CVM filings with curl.

Current limitations

  • Text extraction (POST /v1/document-text-extractions) is async via callback — not a sync Dart Future of markdown.
  • perPage max is 50; paginate with page.
  • 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.