# Emitti > Infraestrutura fiscal (API First) para o Brasil. Emita notas fiscais de serviço (NFS-e) > com uma chamada de API em JSON; o Emitti cuida da fila, retentativas, assinatura digital > (XMLDSig), envelopamento SOAP e do webhook de confirmação. Toda emissão é assíncrona > (resposta 202 Accepted + webhook). Autenticação: Bearer token (API key `sk_live_` em produção, `sk_test_` no sandbox). Base URL: https://api.emitti.com.br/v1 ## Referência da API - [Documentação da API](https://docs.emitti.com.br/): autenticação, emitir/consultar NFS-e, webhooks, erros - [Emitir NFS-e](https://docs.emitti.com.br/#emitir): POST /v1/nfse (202 Accepted), payload e resposta - [Consultar emissão](https://docs.emitti.com.br/#consultar): GET /v1/nfse/{emissao_id} - [Webhooks](https://docs.emitti.com.br/#webhooks): payloads de autorização/rejeição, verificação HMAC - [Erros](https://docs.emitti.com.br/#erros): tabela de códigos HTTP ## Para agentes de IA - [Agentes de IA](https://docs.emitti.com.br/agentes): tool calling (definição pronta de `emitir_nfse`) e exemplo com Claude - [MCP](https://docs.emitti.com.br/agentes#mcp): servidor MCP do Emitti (tools `emitir_nfse`, `consultar_nfse`) para Claude Desktop e Claude Code ## Resumo dos endpoints - POST /v1/nfse — cria emissão de NFS-e. Campos: prestador{cnpj, inscricao_municipal}, tomador{razao_social, cnpj|cpf}, servico{codigo_municipio, codigo_servico, discriminacao, valor_servicos, aliquota_iss}. Header opcional Idempotency-Key. Retorna {emissao_id, status: "QUEUED"}. - GET /v1/nfse/{emissao_id} — status da emissão (QUEUED|PROCESSING|AUTHORIZED|REJECTED|CANCELED). - DELETE /v1/nfse/{emissao_id} — cancela uma NFS-e autorizada (assíncrono; webhook nfse.canceled). - POST /v1/nfse/{emissao_id}/substituicao — emite nova nota referenciando a antiga; cancela a antiga ao autorizar. - GET /v1/nfse/{emissao_id}/xml — XML autorizado. GET /v1/nfse/{emissao_id}/pdf — DANFE/RPS em PDF. ## Sandbox Chaves sk_test_ processam em sandbox (sem prefeitura/certificado). Padrão: autorizada (número SANDBOX-*). Gatilho de rejeição: tomador com documento todo zeros -> REJECTED (para testar erros). ## SDKs - Node.js: `npm install @emitti/node` — https://docs.emitti.com.br/sdks#node - Python: `pip install emitti` — https://docs.emitti.com.br/sdks#python