Developers/Documentação da API/API de Empresas

API de Empresas

Consulta e atualização dos dados da empresa via API.

13/02/202610 min de leitura2 visualizações

Consulte e atualize os dados cadastrais da sua empresa via API. Este endpoint permite visualizar e editar informações como razao social, endereco, contato e inscricoes fiscais. Cada token de API acessa exclusivamente os dados da propria empresa vinculada.


Visao Geral

PropriedadeValor
Base URL (produção)https://api-backend.bunto.com.br/v1/empresas/
AutenticaçãoAuthorization: Bearer bnt_xxx
FormatoJSON
Escopo necessário (leitura)empresas: read
Escopo necessário (escrita)empresas: write

Endpoints

MétodoEndpointDescriçãoEscopo
GET/v1/empresas/Listar empresa (retorna apenas a propria)empresas: read
GET/v1/empresas/{id}/Detalhar empresaempresas: read
PUT/v1/empresas/{id}/Atualizar empresa (completo)empresas: write
PATCH/v1/empresas/{id}/Atualizar empresa (parcial)empresas: write

Importante: Este endpoint e restrito a propria empresa. A listagem retorna sempre um único registro (a empresa vinculada ao token). Não e possível consultar dados de outras empresas. A exclusão de empresa não e permitida via API.


Listar Empresa

GET /v1/empresas/

Escopo necessário: empresas: read

Retorna a lista contendo apenas a empresa vinculada ao token de autenticação. Diferente de outros endpoints, este sempre retorna exatamente um registro.

Exemplo com cURL

bash
curl https://api-backend.bunto.com.br/v1/empresas/ \ -H 'Authorization: Bearer bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4' \ -H 'Content-Type: application/json'

Exemplo com Python

python
import requests BASE_URL = "https://api-backend.bunto.com.br/v1" TOKEN = "bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4" headers = { "Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json", } # Consultar dados da empresa resposta = requests.get(f"{BASE_URL}/empresas/", headers=headers) dados = resposta.json() if dados["success"]: empresas = dados["data"]["resultados"] empresa = empresas[0] # Sempre retorna apenas uma empresa print(f"Empresa: {empresa['nome_empresa']}") print(f"CNPJ: {empresa['cnpj']}") print(f"Regime: {empresa['regime_tributario']}") else: print(f"Erro: {resposta.status_code}")

Exemplo com JavaScript

javascript
const BASE_URL = "https://api-backend.bunto.com.br/v1"; const TOKEN = "bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4"; const resposta = await fetch(`${BASE_URL}/empresas/`, { headers: { Authorization: `Bearer ${TOKEN}`, "Content-Type": "application/json", }, }); const dados = await resposta.json(); if (dados.success) { const empresa = dados.data.resultados[0]; // Sempre retorna apenas uma empresa console.log(`Empresa: ${empresa.nome_empresa}`); console.log(`CNPJ: ${empresa.cnpj}`); console.log(`Regime: ${empresa.regime_tributario}`); } else { console.error(`Erro: ${resposta.status}`); }

Resposta (200 OK)

json
{ "success": true, "message": "1 registros encontrados", "data": { "resultados": [ { "id": 1, "nome_empresa": "Bunto Comercio de Roupas Ltda", "cnpj": "12.345.678/0001-90", "nome_fantasia": "Bunto Moda", "tipo_pessoa": "J", "regime_tributario": 1, "ativo": true, "criado_em": "2025-06-15T10:00:00-03:00" } ], "paginacao": { "pagina_atual": 1, "total_paginas": 1, "total_registros": 1, "por_pagina": 25, "proxima": null, "anterior": null } } }

Campos da Listagem

CampoTipoDescrição
idintegerIdentificador único da empresa
nome_empresastringRazao social da empresa
cnpjstring / nullCNPJ da empresa (formatado)
nome_fantasiastring / nullNome fantasia
tipo_pessoastring / nullTipo de pessoa: F (fisica) ou J (juridica)
regime_tributariointegerRegime tributario (1 = Simples Nacional, 2 = Lucro Presumido, 3 = Lucro Real)
ativobooleanSe a empresa esta ativa
criado_emdatetimeData e hora de criação

Obter Empresa

GET /v1/empresas/{id}/

Escopo necessário: empresas: read

Retorna os dados completos da empresa, incluindo endereco, contato, inscricoes fiscais e demais informações cadastrais.

Exemplo com cURL

bash
curl https://api-backend.bunto.com.br/v1/empresas/1/ \ -H 'Authorization: Bearer bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4' \ -H 'Content-Type: application/json'

Exemplo com Python

python
import requests BASE_URL = "https://api-backend.bunto.com.br/v1" TOKEN = "bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4" headers = { "Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json", } empresa_id = 1 resposta = requests.get(f"{BASE_URL}/empresas/{empresa_id}/", headers=headers) dados = resposta.json() if dados["success"]: empresa = dados["data"] print(f"Empresa: {empresa['nome_empresa']}") print(f"Fantasia: {empresa['nome_fantasia']}") print(f"CNPJ: {empresa['cnpj']}") print(f"Email: {empresa['email']}") print(f"Endereco: {empresa['endereco']}, {empresa['numero']} - {empresa['cidade']}/{empresa['uf']}") else: print(f"Erro: {dados}")

Exemplo com JavaScript

javascript
const BASE_URL = "https://api-backend.bunto.com.br/v1"; const TOKEN = "bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4"; const empresaId = 1; const resposta = await fetch(`${BASE_URL}/empresas/${empresaId}/`, { headers: { Authorization: `Bearer ${TOKEN}`, "Content-Type": "application/json", }, }); const dados = await resposta.json(); if (dados.success) { const empresa = dados.data; console.log(`Empresa: ${empresa.nome_empresa}`); console.log(`Fantasia: ${empresa.nome_fantasia}`); console.log(`CNPJ: ${empresa.cnpj}`); console.log(`Email: ${empresa.email}`); console.log( `Endereco: ${empresa.endereco}, ${empresa.numero} - ${empresa.cidade}/${empresa.uf}` ); } else { console.error(`Erro: ${JSON.stringify(dados)}`); }

Resposta (200 OK)

json
{ "success": true, "message": "Registro encontrado", "data": { "id": 1, "nome_empresa": "Bunto Comercio de Roupas Ltda", "cnpj": "12.345.678/0001-90", "nome_fantasia": "Bunto Moda", "tipo_pessoa": "J", "regime_tributario": 1, "ativo": true, "criado_em": "2025-06-15T10:00:00-03:00", "inscricao_estadual": "123.456.789.001", "inscricao_municipal": "987654", "atividade_principal": "4781-4/00 - Comercio varejista de artigos de vestuario e acessorios", "porte_empresa": "ME", "email": "contato@buntomoda.com.br", "telefone": "(11) 3456-7890", "celular": "(11) 99876-5432", "cep": "01310100", "uf": "SP", "cidade": "Sao Paulo", "bairro": "Bela Vista", "endereco": "Avenida Paulista", "numero":"1000", "complemento": "Sala 501", "site": "https://www.buntomoda.com.br", "atualizado_em": "2026-02-10T14:22:00-03:00" } }

Campos do Detalhe (adicionais a listagem)

CampoTipoDescrição
inscricao_estadualstring / nullInscricao estadual
inscricao_municipalstring / nullInscricao municipal
atividade_principalstring / nullAtividade principal (CNAE)
porte_empresastring / nullPorte da empresa (ME, EPP, etc.)
emailstring / nullE-mail de contato
telefonestring / nullTelefone fixo
celularstring / nullCelular
cepstring / nullCEP (8 digitos, sem formatacao)
ufstring / nullUnidade federativa (2 caracteres)
cidadestring / nullCidade
bairrostring / nullBairro
enderecostring / nullLogradouro (rua, avenida, etc.)
numerostring / nullNúmero do endereco
complementostring / nullComplemento do endereco
sitestring / nullSite da empresa
atualizado_emdatetimeData e hora da última atualização

Atualizar Empresa

PUT /v1/empresas/{id}/
PATCH /v1/empresas/{id}/

Escopo necessário: empresas: write

Atualiza os dados cadastrais da empresa. Use PUT para atualização completa ou PATCH para atualização parcial (apenas os campos enviados serão alterados).

Nota: Campos como cnpj, tipo_pessoa, regime_tributario e ativo não sao editaveis via API. Para alterar esses dados, acesse o painel administrativo do Bunto ERP.

Campos do Request Body

CampoTipoObrigatórioDescrição
nome_empresastringNãoRazao social (máximo 255 caracteres)
nome_fantasiastringNãoNome fantasia (máximo 255 caracteres)
emailstringNãoE-mail de contato (máximo 100 caracteres)
telefonestringNãoTelefone fixo (máximo 20 caracteres)
celularstringNãoCelular (máximo 20 caracteres)
cepstringNãoCEP (máximo 8 caracteres, sem formatacao)
ufstringNãoUnidade federativa (máximo 2 caracteres)
cidadestringNãoCidade (máximo 100 caracteres)
bairrostringNãoBairro (máximo 100 caracteres)
enderecostringNãoLogradouro (máximo 255 caracteres)
numerostringNãoNúmero do endereco (máximo 10 caracteres)
complementostringNãoComplemento (máximo 100 caracteres)
sitestringNãoSite da empresa (máximo 100 caracteres)
inscricao_estadualstringNãoInscricao estadual (máximo 20 caracteres)
inscricao_municipalstringNãoInscricao municipal (máximo 20 caracteres)

Exemplo com cURL (PATCH - atualização parcial)

bash
curl -X PATCH https://api-backend.bunto.com.br/v1/empresas/1/ \ -H 'Authorization: Bearer bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4' \ -H 'Content-Type: application/json' \ -d '{ "email": "novo-contato@buntomoda.com.br", "celular": "(11) 91234-5678", "site": "https://www.buntomoda.com.br" }'

Exemplo com Python

python
import requests BASE_URL = "https://api-backend.bunto.com.br/v1" TOKEN = "bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4" headers = { "Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json", } empresa_id = 1 # Atualizacao parcial (PATCH) - apenas os campos que mudaram atualizacao = { "email": "novo-contato@buntomoda.com.br", "celular": "(11) 91234-5678", "site": "https://www.buntomoda.com.br", } resposta = requests.patch( f"{BASE_URL}/empresas/{empresa_id}/", headers=headers, json=atualizacao, ) dados = resposta.json() if dados["success"]: empresa = dados["data"] print(f"Empresa atualizada! Email: {empresa['email']}") print(f"Celular: {empresa['celular']}") else: print(f"Erro ao atualizar: {dados}")

Exemplo com JavaScript

javascript
const BASE_URL = "https://api-backend.bunto.com.br/v1"; const TOKEN = "bnt_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0U1v2W3x4"; const empresaId = 1; const atualizacao = { email: "novo-contato@buntomoda.com.br", celular: "(11) 91234-5678", site: "https://www.buntomoda.com.br", }; const resposta = await fetch(`${BASE_URL}/empresas/${empresaId}/`, { method: "PATCH", headers: { Authorization: `Bearer ${TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify(atualizacao), }); const dados = await resposta.json(); if (dados.success) { console.log(`Empresa atualizada! Email: ${dados.data.email}`); console.log(`Celular: ${dados.data.celular}`); } else { console.error(`Erro ao atualizar:`, dados); }

Resposta (200 OK)

json
{ "success": true, "message": "Empresa atualizada com sucesso", "data": { "id": 1, "nome_empresa": "Bunto Comercio de Roupas Ltda", "cnpj": "12.345.678/0001-90", "nome_fantasia": "Bunto Moda", "tipo_pessoa": "J", "regime_tributario": 1, "ativo": true, "criado_em": "2025-06-15T10:00:00-03:00", "inscricao_estadual": "123.456.789.001", "inscricao_municipal": "987654", "atividade_principal": "4781-4/00 - Comercio varejista de artigos de vestuario e acessorios", "porte_empresa": "ME", "email": "novo-contato@buntomoda.com.br", "telefone": "(11) 3456-7890", "celular": "(11) 91234-5678", "cep": "01310100", "uf": "SP", "cidade": "Sao Paulo", "bairro": "Bela Vista", "endereco": "Avenida Paulista", "numero":"1000", "complemento": "Sala 501", "site": "https://www.buntomoda.com.br", "atualizado_em": "2026-02-12T16:45:00-03:00" } }

Erros Comuns

CódigoErroCausaSolucao
400VALIDATION_ERRORDados enviados sao invalidos (campo com formato incorreto, tamanho excedido, etc.)Verifique os tipos de dados e limites de tamanho
401Token invalidoToken ausente, expirado, revogado ou mal formatadoVerifique se o header e Authorization: Bearer bnt_xxx
403Token nao tem permissaoO token não possui o escopo empresas ou a ação necessária (read, write)Verifique os escopos do token no painel
404Nao encontradoID informado não corresponde a empresa do tokenUse o ID da propria empresa (obtido via listagem)
429Limite de requisicoes excedidoRate limit ultrapassado para o tipo de operaçãoImplemente retry com backoff exponencial

Exemplo de Resposta de Erro (400)

json
{ "success": false, "error": { "code": "VALIDATION_ERROR", "message": "Erro de validacao", "details": { "uf": ["Certifique-se de que este campo nao tenha mais de 2 caracteres."], "cep": ["Certifique-se de que este campo nao tenha mais de 8 caracteres."] } } }

Exemplo de Resposta de Erro (403)

json
{ "detail": "Token nao tem permissao para este recurso" }

Rate Limiting

A API aplica limites de requisição por token (não por IP). Cada tipo de operação tem um limite diferente.

OperaçãoMétodos HTTPLimite
LeituraGET, HEAD, OPTIONS120 requisições/minuto
EscritaPOST, PUT, PATCH30 requisições/minuto
ExclusãoDELETE10 requisições/minuto

Ao exceder o limite, a API retorna 429 Too Many Requests:

json
{ "detail": "Limite de requisicoes excedido. Tente novamente em 45 segundos." }

Boas praticas

  • Armazene os dados da empresa em cache local, pois raramente mudam
  • Use PATCH com apenas os campos alterados ao inves de PUT com todos os dados
  • Implemente retry com backoff exponencial ao receber 429

Valores de Referencia

Regime Tributario

ValorDescrição
1Simples Nacional
2Lucro Presumido
3Lucro Real

Tipo de Pessoa

ValorDescrição
FPessoa Fisica
JPessoa Juridica

Porte da Empresa

ValorDescrição
MEMicroempresa
EPPEmpresa de Pequeno Porte
DEMAISDemais
APIcURLEmpresasJavaScriptPythonREST
Recursos para IA