# Portal do desenvolvedor

> Tudo para integrar a TenzanNFE: chaves de API, quickstart, sandbox de homologação, referência completa, especificação OpenAPI e SDKs.

## Comece em 5 minutos

1.  Entre no [painel do desenvolvedor](https://app.nfe.tenzanlabs.com) e copie sua **Chave de Acesso** (`nfe_access_...`), em "Suas Chaves de Acesso".
2.  Cadastre uma empresa (é nela que ficam o certificado digital e a configuração fiscal) e gere a **chave de API** dela. Comece pela de homologação, que começa com `nfe_test_`.
3.  Emita a primeira nota. A resposta é `202 Accepted` com o `invoiceId`:

```
curl -X POST https://app.nfe.tenzanlabs.com/v1/nfe/emit \
  -H "X-Access-Key: nfe_access_SUA_CHAVE_DE_ACESSO_AQUI" \
  -H "Authorization: Bearer nfe_test_SUA_CHAVE_AQUI" \
  -H "Content-Type: application/json" \
  -d '{
    "mod": "55",
    "natureza_operacao": "Venda de Mercadoria",
    "data_emissao": "2026-08-19T12:00:00-03:00",
    "tipo_documento": "1",
    "local_destino": "1",
    "finalidade_emissao": "1",
    "consumidor_final": "1",
    "presenca_comprador": "1",
    "modalidade_frete": "9",
    "veiculo_placa": "",
    "agropecuario_tipo_guia": "",
    "cnpj_emitente": "12345678000199",
    "inscricao_estadual_emitente": "123456789",
    "nome_destinatario": "João da Silva",
    "cpf_destinatario": "11122233344",
    "itens": [{
      "codigo_produto": "123",
      "descricao": "Caneta Azul",
      "codigo_ncm": "96081000",
      "cfop": "5102",
      "unidade_comercial": "UN",
      "quantidade_comercial": 10,
      "valor_unitario_comercial": 2.50,
      "icms_origem": "0",
      "icms_situacao_tributaria": "102",
      "pis_situacao_tributaria": "07",
      "cofins_situacao_tributaria": "07"
    }]
  }'
```

```
{
  "message": "Documento enfileirado para processamento",
  "invoiceId": "35f0a1b2-...",
  "accessKey": "35260812345678000199550010000000011000000018"
}
```

A emissão é assíncrona: `202` só confirma que o documento entrou na fila. Consulte o status até deixar de ser `PENDENTE`; uma rejeição da Sefaz aparece nessa consulta, não como erro HTTP.

```
curl https://app.nfe.tenzanlabs.com/v1/nfe/35f0a1b2-... \
  -H "X-Access-Key: nfe_access_SUA_CHAVE_DE_ACESSO_AQUI" \
  -H "Authorization: Bearer nfe_test_SUA_CHAVE_AQUI"
```

Guia completo, passo a passo, em [Emitindo uma NFe](/guides/example/).

## Chaves de API e autenticação

URL base da API: `https://app.nfe.tenzanlabs.com`. Toda chamada envia duas credenciais em conjunto:

| Credencial | Header | Identifica |
| --- | --- | --- |
| Chave de Acesso | `X-Access-Key` | A sua conta. Gere e regenere no painel. |
| Chave de API (token) | `Authorization: Bearer` | A empresa e o ambiente. `nfe_test_...` ou `nfe_live_...`. |
| Chave Restrita | `X-Restricted-Key` | Só para obter os tokens de um cliente pela API. Trate como a senha da conta. |

Sem as duas primeiras, a resposta é `401`. Detalhes em [Autenticação](/getting-started/autenticacao/) e formatos de erro em [Erros](/getting-started/erros/).

## Sandbox (homologação)

O ambiente é definido pelo prefixo da chave, não por um parâmetro: `nfe_test_...` emite em homologação e `nfe_live_...` em produção. O sandbox emula os webservices estaduais para você testar o fluxo de ponta a ponta, sem precisar de um certificado A1 antes de ir para produção. Todos os planos têm 30 dias de período de teste; veja valores e créditos em [Preços](/#precos).

## Referência da API

Cada página traz parâmetros, respostas e exemplos em cURL, Node.js, Python e Java.

-   [NF-e e NFC-e](/reference/nfe/emitir/): emitir, consultar, cancelar, corrigir, inutilizar, DANFE etiqueta e eventos (ator interessado, insucesso na entrega, e-CONF).
-   [CT-e](/reference/cte/emitir/): emitir e consultar.
-   [MDF-e](/reference/mdfe/emitir/): emitir, consultar, encerrar, incluir condutor e incluir DF-e.
-   [NFCom](/reference/nfcom/emitir/): emitir e consultar.
-   [DC-e](/reference/dce/emitir/): emitir e consultar.
-   [NFS-e](/reference/nfse/emitir/): emitir e consultar (padrão nacional).
-   [Clientes](/reference/clients/criar/): criar, listar e consultar clientes; obter tokens.
-   [Status do serviço](/reference/geral/status/): disponibilidade da Sefaz por tipo de documento.

## Especificação OpenAPI

O contrato completo da API, em OpenAPI 3.1, está em [`/openapi.json`](/openapi.json). Importe no Postman, no Insomnia ou no Swagger UI, ou gere um cliente na sua linguagem. A especificação é gerada a partir desta mesma documentação a cada publicação, então não diverge dela.

## SDKs oficiais

Bibliotecas cliente para Node.js, Python e Java, com o mesmo padrão de uso. Instalação e exemplos em [SDKs oficiais](/guides/sdks/).

```
npm install @tenzanlabs/nfe-node-sdk        # Node.js
pip install tenzan-nfe-python-sdk      # Python
# Java: io.github.tenzan-labs:nfe-java-sdk:2.0.0 (Maven)
```

## Para agentes de IA

-   [`/llms.txt`](/llms.txt): quando usar a TenzanNFE, como chamar a API e os principais links.
-   Toda página tem uma versão em markdown: envie `Accept: text/markdown` ou acrescente `index.md` ao caminho.
-   [`/sitemap.xml`](/sitemap.xml) lista todas as páginas.
-   Neste site, qualquer caminho inexistente devolve `404`; com `Accept: application/json` o erro vem em JSON, com `code` e `hint`.

```
curl -H "Accept: text/markdown" https://nfe.tenzanlabs.com/reference/nfe/emitir/
curl https://nfe.tenzanlabs.com/openapi.json
curl https://nfe.tenzanlabs.com/llms.txt
```

## Suporte

Confira o [status do serviço](/reference/geral/status/) antes de abrir um chamado. Para dúvidas, planos e privacidade, veja [Contato](/contact/) ou escreva para [admin@tenzanlabs.com](mailto:admin@tenzanlabs.com).
