Dados B3 Auditoria API

The Auditoria API from Dados B3 — 10 operation(s) for auditoria.

Operations 10

GET /auditoria/dep_amort/{cd_cvm}/{ano} Auditoria Dep Amort #
GET /auditoria/universo Auditoria Universo #
GET /auditoria/sementes Auditoria Sementes #
GET /auditoria/historico Auditoria Historico #
GET /auditoria Auditoria Indice #
GET /auditoria/random/{seed}/{n} Auditoria Random Caminho #
GET /auditoria/random/{seed} Auditoria Random Caminho #
GET /auditoria/amostra/{seed}/{n} Auditoria Random Caminho #
GET /auditoria/amostra/{seed} Auditoria Random Caminho #
GET /auditoria/random Auditoria Random #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dadosb3-com:dadosb3-com-auditoria-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dadosb3-com-auditoria-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Dados B3 Auditoria API
  description: 'Dados fundamentalistas de companhias abertas brasileiras com metodologia 100% pública e invariantes de dado publicados. Fontes: CVM (dados abertos, ODbL) e B3 (COTAHIST fim-de-dia). Todo número carrega a conta CVM de origem; valor duvidoso carrega flag, nunca estimativa escondida.'
  version: 0.1.0
tags:
- name: Auditoria
paths:
  /auditoria/dep_amort/{cd_cvm}/{ano}:
    get:
      summary: Auditoria Dep Amort
      description: 'TODA linha candidata a D&A, com o rótulo e a DECISÃO — inclusive as

        excluídas.


        ★ SEM ISTO A REGRA NOVA NÃO ERA FALSIFICÁVEL DE FORA (30/08/2026).

        Publicávamos as contas que ENTRARAM no D&A (`onde_procurar`) e nada sobre

        as que ficaram de FORA. Um auditor querendo atacar a exclusão de custo de

        dívida — que mudou 232 EBITDAs — não tinha como ver o que foi excluído

        nem por quê.


        A regra casa NATUREZA do rótulo, não código: o mesmo `6.01.01.11` é

        "Amortização do custo de transação" na Suzano (sai) e "amortização de

        stand" na Cyrela (fica). Uma regra assim só se defende mostrando o rótulo

        que a acionou — e só se ATACA da mesma forma.


        O sexto auditor apontou AMOB3, BPAC11 e MDNE3 como alvos. Conferido: nas

        duas primeiras a regra NEM DISPARA (linha única, "Depreciação e

        amortização"), então atacar ali não falsifica nada. Esta rota existe para

        ele achar sozinho os casos onde ela dispara, em vez de depender de nós

        para indicar onde procurar.'
      operationId: auditoria_dep_amort_auditoria_dep_amort__cd_cvm___ano__get
      parameters:
      - name: cd_cvm
        in: path
        required: true
        schema:
          type: integer
          title: Cd Cvm
      - name: ano
        in: path
        required: true
        schema:
          type: integer
          title: Ano
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
  /auditoria/universo:
    get:
      summary: Auditoria Universo
      description: 'As CHAVES do universo sorteável, para o auditor ordenar por conta.


        ★ OBJEÇÃO DO SEXTO AUDITOR EXTERNO, e ela procede (30/08/2026). Palavras

        dele, depois de conferir os 10 sample_score e ver que todos batiam:


        "isso prova que a chave 847231 reproduz os scores apresentados. NÃO

        prova sozinho que esses são os 10 menores de todo o universo de

        63.281, porque eu não recebi o universo completo para fazer a

        ordenação independente."


        Exato, e a distinção é fina: conferir o score de cada caso publicado

        detecta CHAVE INVENTADA, mas não detecta OMISSÃO. Um caso com score menor

        que os publicados poderia ter sido deixado de fora, e nada no que ele

        recebeu apontaria — a prova de que a amostra são "os N menores" dependia

        da nossa palavra.


        Com esta rota a auditoria fecha sem nós: baixe as chaves, calcule o score

        de TODAS, ordene, e compare as N primeiras com o que publicamos.


        Sai só `cd_cvm|exercicio|indicador`, que é exatamente o que o hash come —

        nenhum valor. O dado continua atrás do gate comercial; o que abre aqui é a

        POPULAÇÃO, sem a qual "amostra aleatória" é adjetivo nosso.'
      operationId: auditoria_universo_auditoria_universo_get
      responses:
        '200':
          description: Successful Response
          content:
            text/plain:
              schema:
                type: string
      tags:
      - Auditoria
  /auditoria/sementes:
    get:
      summary: Auditoria Sementes
      description: Sementes pré-formadas — para o auditor cuja ferramenta não monta URL.
      operationId: auditoria_sementes_auditoria_sementes_get
      parameters:
      - name: lang
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Lang
      - name: accept-language
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Accept-Language
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
  /auditoria/historico:
    get:
      summary: Auditoria Historico
      description: 'Histórico de auditorias — os erros ficam, e é esse o ponto.


        ★ A INTUIÇÃO COMERCIAL PEDE O CONTRÁRIO DISTO. O reflexo é publicar

        "nenhum erro encontrado" e deixar os achados morrerem no chat de quem

        auditou. Só que a frase "confia, a base é boa" não vale nada vinda de quem

        vende a base; "olha o histórico, inclusive o que achamos de errado e

        consertamos" vale, porque quem esconde erro não publica tabela de erros.


        ★ A COLUNA `executor` É A MAIS IMPORTANTE DA PÁGINA. Auditoria que nós

        mesmos rodamos vale menos que a de terceiro, e somar as duas numa contagem

        só inflaria o resultado exatamente onde a credibilidade se decide. Um

        revisor externo já recusou usar o /desafio como amostra independente,

        chamando de auditoria circular — estava certo, e a separação aqui é

        consequência daquela crítica.


        ★ `conferidos` NÃO é o tamanho da amostra. Um revisor recebeu 75 casos e

        conseguiu refazer 5; registrar 75 seria a mentira confortável, e foi ele

        mesmo quem se recusou a cometê-la. As duas colunas existem separadas por

        isso.


        Nenhuma contagem é escrita à mão: tudo sai do arquivo (TR06 proíbe, e já

        me pegou duas vezes escrevendo número dentro do próprio texto que explica

        a regra).'
      operationId: auditoria_historico_auditoria_historico_get
      parameters:
      - name: lang
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Lang
      - name: accept-language
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Accept-Language
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
  /auditoria:
    get:
      summary: Auditoria Indice
      description: 'Porta de entrada da auditoria aleatória, em HTML e com links prontos.


        ★ QUARTO REVISOR EXTERNO SEGUIDO QUE NÃO CONSEGUIU TESTAR AO VIVO

        (24/08/2026) — e pela quarta vez a causa era nossa, não a ferramenta dele.

        Antes foi o /mcp/ devolvendo 406 no navegador. Agora: o mecanismo de

        navegação dele recusa URL com query string não indexada, então

        `/auditoria/random?seed=X&n=25` era inalcançável, mesmo com o site inteiro

        de pé. Ele foi rigoroso e relatou "0 de 75 conferidos — inconclusivo por

        limitação de acesso", em vez de dizer que a base passou.


        O padrão já é claro o bastante para virar regra: quando três, quatro

        revisores tropeçam no mesmo degrau, o degrau é nosso. Endpoint que só

        funciona para quem chama do jeito que nós imaginamos não é público — é

        público para nós.


        Conserto dele, adotado inteiro: caminho em vez de query

        (`/auditoria/random/184731/25`) e uma página com links clicáveis.'
      operationId: auditoria_indice_auditoria_get
      parameters:
      - name: lang
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Lang
      - name: accept-language
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Accept-Language
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
  /auditoria/random/{seed}/{n}:
    get:
      summary: Auditoria Random Caminho
      description: 'A MESMA amostra da rota com query string, com a semente no caminho.


        ★ `/auditoria/amostra` é o nome honesto, e `/random` fica como apelido.

        O revisor externo apontou que "random" descreve mal o que acontece: não há

        aleatoriedade nenhuma aqui, e sim AMOSTRAGEM PSEUDOALEATÓRIA

        DETERMINÍSTICA — mesma semente + mesma população + mesmo esquema = mesma

        amostra, sempre. Chamar de "random" convida o auditor a esperar variação

        onde a garantia é o oposto. As duas rotas seguem servindo o mesmo,

        porque quebrar a URL já divulgada seria trocar um defeito de nome por um

        link morto.


        Existe porque query string não indexada é barreira real para as

        ferramentas de navegação de quem audita. Delega para a mesma função:

        duas portas, um sorteio — e o TR24 exige que devolvam exatamente a mesma

        amostra, senão passariam a existir "duas versões" da mesma semente, que é

        pior que não ter a segunda porta.'
      operationId: auditoria_random_caminho_auditoria_random__seed___n__get
      parameters:
      - name: seed
        in: path
        required: true
        schema:
          type: integer
          title: Seed
      - name: n
        in: path
        required: true
        schema:
          type: integer
          title: N
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
  /auditoria/random/{seed}:
    get:
      summary: Auditoria Random Caminho
      description: 'A MESMA amostra da rota com query string, com a semente no caminho.


        ★ `/auditoria/amostra` é o nome honesto, e `/random` fica como apelido.

        O revisor externo apontou que "random" descreve mal o que acontece: não há

        aleatoriedade nenhuma aqui, e sim AMOSTRAGEM PSEUDOALEATÓRIA

        DETERMINÍSTICA — mesma semente + mesma população + mesmo esquema = mesma

        amostra, sempre. Chamar de "random" convida o auditor a esperar variação

        onde a garantia é o oposto. As duas rotas seguem servindo o mesmo,

        porque quebrar a URL já divulgada seria trocar um defeito de nome por um

        link morto.


        Existe porque query string não indexada é barreira real para as

        ferramentas de navegação de quem audita. Delega para a mesma função:

        duas portas, um sorteio — e o TR24 exige que devolvam exatamente a mesma

        amostra, senão passariam a existir "duas versões" da mesma semente, que é

        pior que não ter a segunda porta.'
      operationId: auditoria_random_caminho_auditoria_random__seed__get
      parameters:
      - name: seed
        in: path
        required: true
        schema:
          type: integer
          title: Seed
      - name: n
        in: query
        required: false
        schema:
          type: integer
          default: 10
          title: N
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
  /auditoria/amostra/{seed}/{n}:
    get:
      summary: Auditoria Random Caminho
      description: 'A MESMA amostra da rota com query string, com a semente no caminho.


        ★ `/auditoria/amostra` é o nome honesto, e `/random` fica como apelido.

        O revisor externo apontou que "random" descreve mal o que acontece: não há

        aleatoriedade nenhuma aqui, e sim AMOSTRAGEM PSEUDOALEATÓRIA

        DETERMINÍSTICA — mesma semente + mesma população + mesmo esquema = mesma

        amostra, sempre. Chamar de "random" convida o auditor a esperar variação

        onde a garantia é o oposto. As duas rotas seguem servindo o mesmo,

        porque quebrar a URL já divulgada seria trocar um defeito de nome por um

        link morto.


        Existe porque query string não indexada é barreira real para as

        ferramentas de navegação de quem audita. Delega para a mesma função:

        duas portas, um sorteio — e o TR24 exige que devolvam exatamente a mesma

        amostra, senão passariam a existir "duas versões" da mesma semente, que é

        pior que não ter a segunda porta.'
      operationId: auditoria_random_caminho_auditoria_amostra__seed___n__get
      parameters:
      - name: seed
        in: path
        required: true
        schema:
          type: integer
          title: Seed
      - name: n
        in: path
        required: true
        schema:
          type: integer
          title: N
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
  /auditoria/amostra/{seed}:
    get:
      summary: Auditoria Random Caminho
      description: 'A MESMA amostra da rota com query string, com a semente no caminho.


        ★ `/auditoria/amostra` é o nome honesto, e `/random` fica como apelido.

        O revisor externo apontou que "random" descreve mal o que acontece: não há

        aleatoriedade nenhuma aqui, e sim AMOSTRAGEM PSEUDOALEATÓRIA

        DETERMINÍSTICA — mesma semente + mesma população + mesmo esquema = mesma

        amostra, sempre. Chamar de "random" convida o auditor a esperar variação

        onde a garantia é o oposto. As duas rotas seguem servindo o mesmo,

        porque quebrar a URL já divulgada seria trocar um defeito de nome por um

        link morto.


        Existe porque query string não indexada é barreira real para as

        ferramentas de navegação de quem audita. Delega para a mesma função:

        duas portas, um sorteio — e o TR24 exige que devolvam exatamente a mesma

        amostra, senão passariam a existir "duas versões" da mesma semente, que é

        pior que não ter a segunda porta.'
      operationId: auditoria_random_caminho_auditoria_amostra__seed__get
      parameters:
      - name: seed
        in: path
        required: true
        schema:
          type: integer
          title: Seed
      - name: n
        in: query
        required: false
        schema:
          type: integer
          default: 10
          title: N
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
  /auditoria/random:
    get:
      summary: Auditoria Random
      description: 'Amostra aleatória de auditoria — a SEMENTE é de quem audita, não nossa.


        ★ A OBJEÇÃO QUE TRÊS REVISORES EXTERNOS REPETIRAM (24/08/2026): o

        /desafio prova que sabemos defender 23 casos ESCOLHIDOS POR NÓS. Não diz

        nada sobre a taxa de erro da base. Um deles foi direto: "não pediria que

        vocês escolhessem os casos — eu escolheria 100 empresas aleatórias".

        Outro recusou usar o /desafio como amostra, chamando de auditoria

        circular. Estavam certos.


        Aqui a escolha sai das nossas mãos. Você manda a semente, o sorteio é

        determinístico, e a mesma semente devolve sempre os mesmos casos — então

        o resultado é reproduzível por terceiros e não dá para nós "tentarmos de

        novo" até sair uma amostra boa. Cada caso vem com o número publicado, a

        conta CVM de onde ele saiu e o arquivo da CVM para refazer.


        Sem semente NÃO sorteamos: devolvemos o cardápio. Semente escolhida pelo

        servidor destruiria a única propriedade que faz isto valer alguma coisa.


        Aberto, sem chave — auditoria que exige cadastro não é auditoria.'
      operationId: auditoria_random_auditoria_random_get
      parameters:
      - name: seed
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Seed
      - name: n
        in: query
        required: false
        schema:
          type: integer
          default: 10
          title: N
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Auditoria
components:
  schemas:
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
  securitySchemes:
    ChaveApiNaUrl:
      type: apiKey
      in: query
      name: chave
      description: Alternativa ao cabeçalho para clientes que só abrem URL (navegação de IA). Fica no histórico e nos logs de quem a usa.
    ChaveApi:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'Chave grátis (200 consultas/dia) ou Pro em /assinar. Abertos sem chave (limite por IP): fatos, indicadores, múltiplos e dividendos de qualquer ticker, ficha e ranking de FII. WEGE3, MXRF11, /hoje, /saude e a metodologia são abertos. Exigem chave: as_of, versões, preços, screener, /dump.'