---
title: "Cadastro CNPJ com Quadro Societário e Participação"
description: "API Cadastro CNPJ com Quadro Societário e Participação"
lang: pt-BR
canonical: https://doc.apibrasil.io/apis/creditos/37d11343-8028-4a9c-b465-74400e94b135
markdown: https://doc.apibrasil.io/apis/creditos/37d11343-8028-4a9c-b465-74400e94b135.md
source: apibrasil-documentation
---

# Cadastro CNPJ com Quadro Societário e Participação

> API Cadastro CNPJ com Quadro Societário e Participação

- **Categoria:** Consulta CNPJ
- **Cobrança:** por consulta, só com o Bearer Token
- **Preço:** R$ 6,16 por consulta
- **Limite:** 990.000 por mês
- **Cadastro:** exige CNPJ
- **Versão:** v2
- **Publicada por:** APIBrasil
- **Especificação OpenAPI:** https://doc.apibrasil.io/apis/creditos/37d11343-8028-4a9c-b465-74400e94b135/openapi.json

## Como chamar

**Endereço base:** `https://gateway.apibrasil.io/api/v2`

Autenticação: cabeçalho `Authorization: Bearer <token>`. Nada além disso.

Com `homolog: true` no corpo, o gateway responde de uma base fixa, com a forma real da resposta, e não cobra. O CPF 00000000000 é dessa base e não é de ninguém: use-o nos testes, nunca em produção.

## Endpoints (1 endpoint)

### 1. POST /consulta/cnpj/credits

Envie um POST com tipo=receita-pj-qsa-participacao e o cnpj (14 dígitos, com ou sem máscara; o dígito verificador é conferido). A resposta vem em data.dados e traz documento, razao_social, nome_fantasia, numero_inscricao, matriz, data_abertura, porte, natureza_juridica, atividade_principal, atividades_secundarias, endereco, telefone, email, situacao_cadastral e seus detalhes, ente_federativo_responsavel, em_recuperacao_judicial, capital_social, quantidade_socios, a lista socios (documento, nome, qualificacao, data_entrada_sociedade, percentual_participacao) e o link pdf do relatório. A cobrança acontece quando a consulta é concluída, inclusive quando a empresa não tem sócios listados; CNPJ sem informação responde HTTP 404 e falhas de consulta respondem 4xx/5xx, sem cobrança; campo cnpj ausente ou inválido é recusado com HTTP 400, sem cobrança. Fonte indisponível responde HTTP 502, 503 ou 504, também sem cobrança. Em homologação (homolog=true) a resposta é uma amostra fictícia completa, sem cobrança, para qualquer cnpj válido.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/consulta/cnpj/credits`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Content-Type` | `application/json` |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |

**Corpo da requisição**

```json
{
  "tipo": "receita-pj-qsa-participacao",
  "cnpj": "11222333000181",
  "homolog": true
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/consulta/cnpj/credits" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -d '{"tipo":"receita-pj-qsa-participacao","cnpj":"11222333000181","homolog":true}'
```

Este endpoint aceita `homolog: true` no corpo: a resposta volta com dados válidos, `api_limit_for` igual a `homolog` e sem tarifação.

**Resposta de exemplo, do catálogo**

```json
{
  "user": {
    "first_name": "[omitido]",
    "email": "[omitido]",
    "cellphone": "[omitido]",
    "notification": "yes"
  },
  "balance": "393,840",
  "balance_before": "400,000",
  "tax": "6,160",
  "status_code": 200,
  "error": false,
  "message": "Dados validos! Voce foi tarifado em R$ 6,16.",
  "valor_consulta": 6.16,
  "api_limit_for": "credit",
  "homolog": false,
  "data": {
    "dados": {
      "atividade_principal": "46.90-9-99 - Comercio atacadista ficticio",
      "atividades_secundarias": [
        "4600001 Comercio atacadista de mercadoria ficticia numero 1",
        "4600002 Comercio atacadista de mercadoria ficticia numero 2",
        "4600003 Comercio atacadista de mercadoria ficticia numero 3",
        "4600004 Comercio atacadista de mercadoria ficticia numero 4",
        "4600005 Comercio atacadista de mercadoria ficticia numero 5",
        "4600006 Comercio atacadista de mercadoria ficticia numero 6",
        "4600007 Comercio atacadista de mercadoria ficticia numero 7",
        "4600008 Comercio atacadista de mercadoria ficticia numero 8",
        "4600009 Comercio atacadista de mercadoria ficticia numero 9",
        "4600010 Comercio atacadista de mercadoria ficticia numero 10",
        "4600011 Comercio atacadista de mercadoria ficticia numero 11",
        "4600012 Comercio atacadista de mercadoria ficticia numero 12",
        "4600013 Comercio atacadista de mercadoria ficticia numero 13",
        "4600014 Comercio atacadista de mercadoria ficticia numero 14",
        "4600015 Comercio atacadista de mercadoria ficticia numero 15",
        "4600016 Comercio atacadista de mercadoria ficticia numero 16",
        "4600017 Comercio atacadista de mercadoria ficticia numero 17",
        "4600018 Comercio atacadista de mercadoria ficticia numero 18",
        "4600019 Comercio atacadista de mercadoria ficticia numero 19",
        "4600020 Comercio atacadista de mercadoria ficticia numero 20",
        "4600021 Comercio atacadista de mercadoria ficticia numero 21",
        "4600022 Comercio atacadista de mercadoria ficticia numero 22",
        "4600023 Comercio atacadista de mercadoria ficticia numero 23",
        "4600024 Comercio atacadista de mercadoria ficticia numero 24",
        "4600025 Comercio atacadista de mercadoria ficticia numero 25"
      ],
      "capital_social": 100000,
      "data_abertura": "01/01/2010",
      "data_consulta_receita": "07/11/2026",
      "data_emissao": "07/11/2026",
      "data_situacao_cadastral": "01/01/2010",
      "data_situacao_especial": null,
      "documento": "11.222.333/0001-81",
      "em_recuperacao_judicial": false,
      "email": "[omitido]",
      "endereco": {
        "bairro": "BAIRRO DE TESTE",
        "cep": "01000-000",
        "complemento": null,
        "logradouro": "AVENIDA EXEMPLO",
        "municipio": "SAO PAULO",
        "numero": "100",
        "uf": "SP"
      },
      "ente_federativo_responsavel": null,
      "matriz": true,
      "motivo_situacao_cadastral": null,
      "natureza_juridica": "206-2 - Sociedade Empresaria Limitada",
      "nome_fantasia": "TESTE FANTASIA",
      "numero_inscricao": "11.222.333/0001-81",
      "pdf": "(link do PDF da consulta)",
      "porte": "DEMAIS",
      "quantidade_socios": 2,
      "razao_social": "EMPRESA TESTE LTDA",
      "situacao_cadastral": "ATIVA",
      "situacao_especial": null,
      "socios": [
        {
          "data_entrada_sociedade": "01/01/2010",
          "documento": "404.428.201-35",
          "nome": "FULANO DE TESTE",
          "percentual_participacao": 60,
          "qualificacao": "49-Socio-Administrador"
        },
        {
          "data_entrada_sociedade": "15/03/2015",
          "documento": "11.222.333/0001-81",
          "nome": "EMPRESA SOCIA TESTE LTDA",
          "percentual_participacao": 40,
          "qualificacao": "22-Socio"
        }
      ],
      "telefone": "1100000000"
    }
  }
}
```

Nos exemplos de resposta, os campos da conta que gerou o exemplo (`user.first_name`, `user.email`, `user.cellphone`) saem como `[omitido]`. O resto é o que o catálogo publica.

## Armadilhas: o que uma integração erra sem avisar

Apuradas nas respostas que o próprio catálogo publica. Em todas elas o código funciona no caminho feliz e falha em silêncio no resto:

1. **O erro chega no CORPO, com HTTP 200.**
   A resposta traz um campo `error` booleano e uma `message`. Checar só `response.ok` ou o status HTTP deixa passar falha como sucesso. Confira SEMPRE `error === false` antes de ler `data`.

2. **`balance`, `tax` e `extra_charges.total` são STRING em formato brasileiro — e o formato varia entre APIs.**
   Valores observados no catálogo: `"154,380"`, `"497,84"`, `"0,000"` e `"0.19"`. Vírgula em umas, ponto em outra; três casas decimais em umas, duas em outra. Em JavaScript, `parseFloat("154,380")` devolve `154` e perde os centavos sem erro nenhum, e `Number("154,380")` devolve `NaN`. Escreva um conversor que trate os dois separadores, e nunca use esses campos numa decisão financeira sem convertê-los.

3. **Cada chamada custa dinheiro.**
   Retry cego multiplica a conta. Nunca repita automaticamente um 4xx: parâmetro errado repetido continua errado e continua cobrando. Repita só tempo esgotado e 5xx, com recuo exponencial e um teto pequeno de tentativas.

4. **HTTP 402 é saldo insuficiente, e repetir não resolve.**
   É o único status que exige ação humana — recarregar. Trate-o como erro terminal, com mensagem própria, e não o jogue no mesmo balde dos 4xx genéricos.

5. **`extra_charges` cobra à parte do preço da consulta.**
   Quando o corpo pede serviços adicionais, a resposta traz cada um com o preço e um `total` que NÃO está incluso no valor base. Se você mostra custo a quem usa, some os dois.

## Ver também

- Especificação OpenAPI: https://doc.apibrasil.io/apis/creditos/37d11343-8028-4a9c-b465-74400e94b135/openapi.json
- Catálogo de APIs: [Catálogo de APIs](https://doc.apibrasil.io/apis.md)
- SDKs oficiais: [SDKs oficiais](https://doc.apibrasil.io/sdks.md)
- Índice da documentação: https://doc.apibrasil.io/llms.txt
- Versão HTML desta página: https://doc.apibrasil.io/apis/creditos/37d11343-8028-4a9c-b465-74400e94b135
