Try the apicvm Demo API with VALE3 (No API Key)
You want to evaluate a CVM filings API before signing up — resolve a ticker, list documents, download a PDF, maybe read text. apicvm exposes a public demo API under /v1/demo/* that requires no API key. The scope is intentionally narrow: VALE3 only (Vale S.A., CNPJ 33592510000154).
This guide walks through the full demo workflow with curl: resolve, list, download, and read cached markdown for the FRE 2025 risk factors section.
What the demo offers
The demo mirrors the production contract for a single issuer. You can:
| Route | Purpose |
|---|---|
GET /v1/demo/companies/resolve |
Resolve VALE3 by ticker, CNPJ, or name |
GET /v1/demo/documents |
List filings for Vale (max perPage=20) |
GET /v1/demo/documents/:id |
Document metadata |
GET /v1/demo/documents/:id/file |
Download original file |
GET /v1/demo/documents/:id/markdown |
Cached page-level markdown |
GET /v1/demo/document-prefixes |
Prefix catalog by filing type |
No Authorization header is required. Rate limits apply per IP, not per key.
Scope limits
Before you copy these commands into a prototype, understand the boundaries:
- Company: VALE3 / CNPJ
33592510000154only. ResolvingPETR4or any other ticker returns403 FORBIDDEN. - Download and markdown: only FRE 2025 with prefix
DescricaoFatoresRisco(risk factors). Other documents may appear in list results but file and markdown routes reject them. - No async extraction:
POST /v1/document-text-extractionsis not available on demo. Markdown comes from cache only. - Rate limit: 30 requests per minute and 200 requests per UTC day per IP (configurable server-side via
APICVM_DEMO_*).
The demo is for evaluation, not production workloads.
Setup
Set the base URL once. No API key needed:
export APICVM_URL='https://apicvm.dev'
Step 1: Resolve VALE3
Confirm the demo resolves Vale by ticker:
curl "$APICVM_URL/v1/demo/companies/resolve?query=VALE3&by=ticker"
The response includes id, name, cnpj, sector, and tickers[] — same shape as the authenticated resolve endpoint.
Try a non-demo company to see the gate:
curl "$APICVM_URL/v1/demo/companies/resolve?query=PETR4&by=ticker"
# → 403 FORBIDDEN
Step 2: List FRE 2025 risk factors
Filter documents to the section you can download and read as markdown:
curl "$APICVM_URL/v1/demo/documents?ticker=VALE3&type=FRE&year=2025&name=DescricaoFatoresRisco&perPage=5"
Each item in data[] includes id (UUID), type, year, name, dateRef, and nested company. Pick a document id explicitly — the API does not auto-select when filters match multiple results.
Optional: inspect the prefix catalog for FRE section names:
curl "$APICVM_URL/v1/demo/document-prefixes?type=FRE"
Step 3: Document metadata
Before downloading, confirm the document belongs to the demo scope:
curl "$APICVM_URL/v1/demo/documents/<document-id>"
Returns the same fields as list items. Use this when your agent or script receives an ID from a prior step and needs to verify type, year, and name.
Step 4: Download the PDF
Stream the original filing from the demo bucket:
curl -OJ "$APICVM_URL/v1/demo/documents/<document-id>/file"
-OJ saves the file using the Content-Disposition filename. Only FRE 2025 DescricaoFatoresRisco files succeed; other IDs return 404 DOCUMENT_NOT_FOUND or a scope error.
Step 5: Read cached markdown
When extraction has already run on the server, markdown is available synchronously:
curl "$APICVM_URL/v1/demo/documents/<document-id>/markdown"
Response shape:
{
"documentId": "550e8400-e29b-41d4-a716-446655440000",
"totalPages": 16,
"pages": [
{ "number": 1, "markdown": "# Fatores de risco\n\n..." },
{ "number": 2, "markdown": "..." }
]
}
If no cached pages exist (ocr_text with all_pages_done=true), the route returns 404 DOCUMENT_NOT_FOUND. Demo does not let you enqueue new extractions.
Rate limit headers
Demo responses include the same rate-limit headers as authenticated routes:
| Header | Meaning |
|---|---|
X-RateLimit-Limit |
Max requests in the current window |
X-RateLimit-Remaining |
Requests left |
X-RateLimit-Reset |
Window reset (Unix timestamp) |
Exceeding limits returns 429 RATE_LIMIT_EXCEEDED. Plan for backoff if you run integration tests against demo from a shared CI IP.
What demo does not include
| Feature | Demo | Full API (with key) |
|---|---|---|
| Other tickers (PETR4, ABEV3, …) | No | Yes |
| All filing types / years for download | No | Yes |
POST /v1/document-text-extractions |
No | Pro plan |
| Higher rate limits | 30/min, 200/day per IP | Per-key plan limits |
For production agents, RAG pipelines, or any issuer beyond Vale, you need an API key.
Current limitations
- Demo coverage is fixed to VALE3 and one FRE 2025 section — not a representative sample of full corpus breadth.
- List endpoints may show metadata for documents you cannot download on demo.
- IP rate limits can block shared office or CI egress if many developers hit demo simultaneously.
- Markdown is cache-only; you cannot trigger fresh extraction without a Pro key.
Next steps
- Read the API docs — full
/v1contract, error codes, and extraction callbacks - Get an API key — all B3 issuers, file download, and async markdown extraction
- Authenticate to the CVM filings API — Bearer headers and error handling
- Getting started with the CVM filings API — production workflow with any ticker
- Extract text from CVM PDFs for AI agents — async extraction on Pro
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.