> ## Documentation Index
> Fetch the complete documentation index at: https://docs.engineapi.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Cobertura da NFS-e por município

> Consulta o espelho local do convênio do Sistema Nacional da NFS-e (ADN) para um código IBGE — se o município é aderente ao Padrão Nacional NESTE ambiente (`1`=Produção, `2`=Produção Restrita; a cobertura é POR AMBIENTE, um município pode ser aderente num e não no outro). `situacao` vem sempre em 3 valores: `aderente`, `nao_aderente` ou `desconhecido` (sem certificado disponível para consultar, erro de rede/timeout, ou espelho velho demais sem reconsulta bem-sucedida) — nunca 404 por veredito, o 404 fica reservado a erro de rota. `desconhecido` nunca é fabricado como `não aderente`.



## OpenAPI

````yaml /openapi.json get /v1/nfse/cobertura/{ibge}
openapi: 3.1.0
info:
  title: EngineAPI - Motor Fiscal SaaS
  description: >-

    ## API de Emissão Fiscal B2B2B


    EngineAPI é uma plataforma SaaS para emissão de documentos fiscais
    eletrônicos brasileiros.


    ### Documentos Suportados

    - **NF-e** (Modelo 55) - Nota Fiscal Eletrônica

    - **NFC-e** (Modelo 65) - Nota Fiscal de Consumidor Eletrônica

    - **NFS-e** - Nota Fiscal de Serviços Eletrônica


    > CTe (57) e MDFe (58): roadmap sem data, fora da superfície pública.


    ### Autenticação

    Todas as rotas protegidas requerem:

    ```

    Authorization: Bearer <seu_token>    # JWT (painel web)

    x-api-key: ek_live_<sua_key>         # API Key (server-to-server)

    ```


    ### Rate Limits

    - **Por plano** (janela de 1 segundo): Dev 5 · Starter 20 · Growth 60 ·
    Scale 200 req/s

    - Headers `X-RateLimit-Limit`/`Remaining`/`Reset` em toda resposta;
    `Retry-After` no 429


    ### Idempotency

    POSTs aceitam header `Idempotency-Key` para prevenir duplicatas:

    ```

    Idempotency-Key: <uuid-único-por-operação>

    ```


    ### Ambientes

    - **Homologação**: Para testes (SEFAZ sandbox)

    - **Produção**: Emissões reais


    ### Suporte

    - Email: suporte@engineapi.com.br

    - Docs: https://docs.engineapi.com.br
        
  version: 2.1.0
  contact:
    name: engineAPI
    url: https://engineapi.com.br
    email: suporte@engineapi.com.br
  license:
    name: Proprietário
    url: https://engineapi.com.br/legal/termos
servers:
  - url: https://api.engineapi.com.br
    description: Produção
security: []
tags:
  - name: Cérebro Fiscal
    description: >-
      Classificação fiscal assistida + tributação IBS/CBS (tier 80%, apoio à
      decisão)
  - name: Autenticação
    description: Login, registro de conta e API Keys
  - name: Empresas
    description: Gestão de empresas emitentes (Issuers)
  - name: NFe
    description: Nota Fiscal Eletrônica (Modelo 55)
  - name: NFCe
    description: Nota Fiscal de Consumidor (Modelo 65)
  - name: NFSe
    description: Nota Fiscal de Serviços Eletrônica
  - name: Consultas
    description: Consulta de CNPJ e CPF
  - name: Webhooks
    description: Configuração, entregas e reenvio de eventos assíncronos
  - name: Status
    description: Status público por serviço e canário de deploy
  - name: Saúde
    description: Liveness/readiness do processo e sanidade de autenticação
paths:
  /v1/nfse/cobertura/{ibge}:
    get:
      tags:
        - NFSe
      summary: Cobertura da NFS-e por município
      description: >-
        Consulta o espelho local do convênio do Sistema Nacional da NFS-e (ADN)
        para um código IBGE — se o município é aderente ao Padrão Nacional NESTE
        ambiente (`1`=Produção, `2`=Produção Restrita; a cobertura é POR
        AMBIENTE, um município pode ser aderente num e não no outro). `situacao`
        vem sempre em 3 valores: `aderente`, `nao_aderente` ou `desconhecido`
        (sem certificado disponível para consultar, erro de rede/timeout, ou
        espelho velho demais sem reconsulta bem-sucedida) — nunca 404 por
        veredito, o 404 fica reservado a erro de rota. `desconhecido` nunca é
        fabricado como `não aderente`.
      operationId: consultarCobertura
      parameters:
        - name: ibge
          required: true
          in: path
          description: Código IBGE do município (7 dígitos)
          schema:
            pattern: ^[0-9]{7}$
            type: string
        - name: ambiente
          required: false
          in: query
          description: >-
            1=Produção, 2=Produção Restrita. Default: ambiente fiscal do
            primeiro emissor do parceiro autenticado, ou 1 sem emissor
            cadastrado.
          schema:
            anyOf:
              - type: string
                const: '1'
              - type: string
                const: '2'
        - name: atualizar
          required: false
          in: query
          description: >-
            true força reconsulta ao ADN (ignora o TTL do espelho) usando um
            certificado do parceiro autenticado, quando disponível.
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
      responses:
        '200':
          description: >-
            { ibge, ambiente, situacao, aderente, desde, fonte, detalhes,
            motivo? }
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoberturaNfseResponseDto'
        '400':
          description: Código IBGE inválido (não tem 7 dígitos)
      security:
        - JWT-auth: []
components:
  schemas:
    CoberturaNfseResponseDto:
      type: object
      properties:
        ibge:
          type: string
        ambiente:
          anyOf:
            - type: number
              const: 1
            - type: number
              const: 2
        situacao:
          type: string
          enum:
            - aderente
            - nao_aderente
            - desconhecido
        aderente:
          anyOf:
            - type: boolean
            - type: 'null'
        desde:
          anyOf:
            - type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
            - type: 'null'
        fonte:
          type: string
        detalhes:
          type: object
          properties:
            aderenteEmissorNacional:
              anyOf:
                - type: boolean
                - type: 'null'
            situacaoEmissaoPadraoContribuintesRFB:
              anyOf:
                - type: number
                - type: 'null'
            mensagem:
              anyOf:
                - type: string
                - type: 'null'
          required:
            - aderenteEmissorNacional
            - situacaoEmissaoPadraoContribuintesRFB
            - mensagem
        motivo:
          type: string
      required:
        - ibge
        - ambiente
        - situacao
        - aderente
        - desde
        - fonte
        - detalhes
  securitySchemes:
    JWT-auth:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: Token JWT obtido via /v1/auth/login

````