CVM API Pricing: Plans and Extraction Credits

Before you wire a CVM filings API into production, you need predictable costs: subscription tiers, request limits, and what happens when you extract text from a 120-page DFP. apicvm separates HTTP access (resolve, list, download) from extraction credits (page-level markdown via async callback).

This guide explains plans, credit math, gate behavior, and what is free — sourced from the v1 contract, with no invented discounts.

Pricing model overview

Two cost layers:

  1. Subscription — API key, rate limits, and (on Pro) a monthly extraction grant.
  2. Extraction credits — consumed per PDF page when you enqueue POST /v1/document-text-extractions.

File download (GET /v1/documents/:id/file) does not consume credits. Listing and resolve do not consume credits either — only the global rate limit applies.

Plan comparison

Plan Price Global rate limit Daily request cap Markdown extraction
Student $3/month 60 req / 60s 100 req / UTC day Not available (403 FORBIDDEN)
Pro $9/month 60 req / 60s None Yes — 1000 credits/month included
Scale Custom By agreement By agreement By agreement

Student is enough to explore resolve, list, and download. Pro is required for AI/RAG pipelines that need page-level markdown.

Rate limit headers on authenticated routes: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Excess returns 429 RATE_LIMIT_EXCEEDED.

Student plan ($3/month)

Student keys can call business routes within these bounds:

  • 60 requests per 60 seconds (sliding window, per API key)
  • 100 requests per UTC calendar day
  • No extractionPOST /v1/document-text-extractions returns 403 FORBIDDEN

Use Student for prototyping download workflows, ticker resolution, and document discovery. When you need markdown for LLMs or agents, upgrade to Pro.

Pro plan ($9/month)

Pro removes the daily request cap and adds extraction:

  • 60 requests per 60 seconds (same global window as Student)
  • No daily cap on list/resolve/download calls
  • 1000 extraction credits per month included in the subscription

Pro grant rules

The 1000 monthly credits are non-cumulative. They reset each Stripe billing cycle — unused credits do not roll over to the next month.

Example: a Pro user extracts three documents in one month:

Document Pages Credits used
DFP notes 50 50
FRE governance 80 80
DFP financial statements 120 120
Total 250

Remaining from the grant: 750 credits until the billing cycle resets.

Scale plan

Scale is custom pricing by agreement. Contact through signup or sales for higher rate limits and extraction volume. This guide does not specify Scale numbers — only that terms are negotiated.

Extraction credits explained

1 credit = 1 page of the target PDF. List price: $0.01 USD per credit.

The POST returns 202 immediately. A prepare job then counts pages (N) and debits N credits atomically before page workers run.

Credit sources

Source Quantity Rules
Pro subscription grant 1000/month Resets each billing cycle; does not accumulate
Credit packs 1000 / 5000 / 10000 $10 / $50 / $100 — do not expire

Packs sum to your usable balance and never expire. When the Pro grant resets, pack balance remains.

Gate behavior (callback)

If balance < N, your callback receives status: "error" with error_code: EXTRACTION_CREDITS_EXCEEDED — nothing is debited and page workers do not run:

{
  "status": "error",
  "document_id": "550e8400-e29b-41d4-a716-446655440000",
  "job_id": "42",
  "error_code": "EXTRACTION_CREDITS_EXCEEDED",
  "error_message": "Créditos de extração insuficientes",
  "balance": 12,
  "required": 120
}

Check balance and required to decide whether to buy a pack or pick a smaller document.

Cache hits still cost N credits

If the document already has cached pages (ocr_text with all_pages_done=true), the worker reuses cache — but N credits are still debited at prepare. Delivery cost is the same whether the PDF was extracted yesterday or today.

What consumes credits vs what is free

Action Credits Plan requirement
GET /v1/companies/resolve Free Student+
GET /v1/documents Free Student+
GET /v1/documents/:id Free Student+
GET /v1/documents/:id/file Free Student+
POST /v1/document-text-extractions N credits (N = pages) Pro+

Download-first workflows (store PDFs locally, run your own OCR) avoid extraction credits entirely. Markdown via apicvm always goes through the credit gate on Pro.

Student vs Pro decision guide

Need Student Pro
Resolve and list any ticker Yes Yes
Download PDF originals Yes Yes
≤100 API calls per UTC day Yes Yes (no daily cap)
Page-level markdown extraction No Yes
1000 pages/month included Yes
Buy extra credit packs N/A (no extraction) Yes

Error codes tied to pricing

Status / channel Code Meaning
403 HTTP FORBIDDEN Feature unavailable on plan (Student + extraction)
callback error EXTRACTION_CREDITS_EXCEEDED Balance < pages required
429 HTTP RATE_LIMIT_EXCEEDED Global rate limit hit

Auth errors (401 UNAUTHORIZED) are separate from billing — see authentication guide and errors and rate limits.

Example: extraction cost for a DFP

A 120-page DFP financial statement bundle costs 120 credits — $1.20 at list price, or part of the Pro monthly grant.

curl -X POST -H "Authorization: Bearer $APICVM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"callback_url":"https://your-app.example.com/callbacks/apicvm","document":{"id":"<document-id>"}}' \
  "$APICVM_URL/v1/document-text-extractions"

Returns 202 with job id. Progress arrives only via callbacks — no synchronous text endpoint. Details: Extract text from CVM PDFs for AI agents.

Current limitations

  • Pricing reflects MVP plans; Scale terms are not self-serve.
  • Credits are page-based — you cannot partially extract a document for fewer credits.
  • No refund of credits if a callback fails mid-job after debit (handle idempotency on your webhook).
  • Corpus coverage depends on Hold ingestion — pricing does not guarantee every B3 issuer or period is available.

Next steps

Ready to integrate?

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