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

# Listar Chaves de API

> Todas as chaves da Conta, inclusive as revogadas, mais recentes primeiro. O valor nunca é devolvido.



## OpenAPI

````yaml /openapi.json get /v1/chaves-api
openapi: 3.1.0
info:
  title: NotasX API
  description: >

    API de emissão de **NFS-e pelo Padrão Nacional** (Sefin Nacional + ADN).
    Você cadastra os Prestadores,

    envia o Certificado A1 de cada um e cria Notas; o NotasX monta a DPS,
    assina, envia à Sefin e devolve a

    NFS-e por consulta (e, em breve, por Webhook).


    ## Fluxo

    1. **Chave de API**: crie no painel ou em `POST /v1/chaves-api`. O valor
    (`nx_...`) aparece uma única vez.

    2. **Prestador**: `POST /v1/prestadores` com CNPJ, município (IBGE) e regime
    do Simples.

    3. **Certificado**: `POST /v1/prestadores/{id}/certificado` com o `.pfx` e a
    senha. O CNPJ do Certificado
       tem de ser o do Prestador.
    4. **Nota**: `POST /v1/notas` com o header `Idempotency-Key`. Resposta `202`
    com a Nota `pendente`.

    5. **Resultado**: consulte `GET /v1/notas/{id}` até sair de
    `pendente`/`processando`. Com `emitida`, a NFS-e
       existe: `chave_acesso` (50 dígitos), `numero_nfse` e o XML em `GET /v1/notas/{id}/xml`.

    ## Autenticação

    `Authorization: Bearer <credencial>`, com uma **Chave de API** (`nx_...`,
    para integrações) ou o **JWT de

    sessão** do painel. As duas agem como a mesma Conta, sobre todos os
    Prestadores vinculados a ela.


    ## Status da Nota

    | Status | Significado |

    |---|---|

    | `pendente` | Criada e na fila. |

    | `processando` | O worker está montando, assinando ou enviando a DPS. |

    | `emitida` | A Sefin autorizou: existe NFS-e e chave de acesso. Final. |

    | `rejeitada` | **Rejeição**: a Sefin recusou a DPS (`resultado_codigo` traz
    o código, ex. `E0123`). Final; corrija e crie outra Nota. |

    | `falhou` | **Falha**: sem resposta depois das tentativas, ou impedimento
    (Certificado ausente ou vencido, município não conveniado, número de DPS já
    usado fora do NotasX). Final. |


    Uma Nota tem uma única DPS e no máximo uma NFS-e. Novas tentativas reenviam
    a mesma DPS, nunca emitem outra.


    ## Idempotência

    `POST /v1/notas` exige `Idempotency-Key` (até 255 caracteres; use um UUID ou
    o id do pedido no seu sistema).

    Repetir o pedido com a mesma chave devolve **a mesma Nota** e não cria outra
    emissão, mesmo que o corpo mude.

    A chave é única por Conta e não expira.


    ## Ambientes

    Todo Prestador começa em **homologação** (produção restrita, sem valor
    fiscal). `POST

    /v1/prestadores/{id}/ativar-producao` passa a emitir em **produção**. Cada
    Nota guarda o Ambiente do momento

    em que foi criada.


    ## Erros

    Todo erro tem o mesmo corpo: `{"erro": {"codigo": "...", "mensagem":
    "..."}}`. Trate pelo `codigo`, que é

    estável; a `mensagem` é para humanos e pode mudar. Recursos de Prestadores
    sem vínculo com a sua Conta

    respondem `404`, como se não existissem.


    ## Limites

    - **Requisições**: por Conta, por minuto. Ao estourar, `429
    limite_de_requisicoes` com `Retry-After`.

    - **Cota**: NFS-e emitidas em produção por mês. Notas de produção ainda
    pendentes contam contra o limite.
      Esgotada, `429 cota_esgotada` com `Retry-After` até o início do próximo mês (horário de Brasília).
      Homologação não consome Cota. Consulte em `GET /v1/cota`.
  version: 0.1.2
servers:
  - url: https://notasx-api.fly.dev
    description: Produção da API (Prestadores em homologação ou produção)
security: []
tags:
  - name: Notas
    description: Criar e acompanhar Notas até virarem NFS-e (ou Rejeição/Falha).
  - name: Prestadores
    description: 'Quem emite: CNPJ, município, regime, Certificado A1 e Ambiente.'
  - name: Chaves de API
    description: Credenciais das integrações. O valor só aparece na criação.
  - name: Conta
    description: 'Configuração e uso da Conta: Webhook e Cota.'
paths:
  /v1/chaves-api:
    get:
      tags:
        - Chaves de API
      summary: Listar Chaves de API
      description: >-
        Todas as chaves da Conta, inclusive as revogadas, mais recentes
        primeiro. O valor nunca é devolvido.
      operationId: listar_v1_chaves_api_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ChaveApi'
                type: array
                title: Response Listar V1 Chaves Api Get
        '401':
          description: >-
            Sem credencial, ou Chave de API inválida/revogada, ou JWT de sessão
            expirado.
          headers:
            WWW-Authenticate:
              description: Sempre `Bearer`.
              schema:
                type: string
          content:
            application/json:
              examples:
                nao_autenticado:
                  summary: nao_autenticado
                  value:
                    erro:
                      codigo: nao_autenticado
                      mensagem: Credencial ausente, inválida ou revogada.
              schema:
                $ref: '#/components/schemas/ErroResposta'
        '422':
          description: >-
            Corpo, parâmetro ou regra de negócio inválidos.
            `requisicao_invalida` lista os campos com problema.
          content:
            application/json:
              examples:
                requisicao_invalida:
                  summary: requisicao_invalida
                  value:
                    erro:
                      codigo: requisicao_invalida
                      mensagem: 'corpo.cnpj: String should match pattern ''^\d{14}$'''
              schema:
                $ref: '#/components/schemas/ErroResposta'
        '429':
          description: >-
            Limite de requisições por minuto ou Cota mensal esgotada. Respeite o
            header `Retry-After`.
          headers:
            Retry-After:
              description: Segundos até poder tentar de novo.
              schema:
                type: integer
          content:
            application/json:
              examples:
                limite_de_requisicoes:
                  summary: limite_de_requisicoes
                  value:
                    erro:
                      codigo: limite_de_requisicoes
                      mensagem: Muitas requisições; tente de novo em instantes.
              schema:
                $ref: '#/components/schemas/ErroResposta'
      security:
        - Chave de API: []
components:
  schemas:
    ChaveApi:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Id da chave; use para revogar.
        nome:
          type: string
          title: Nome
          description: Nome dado na criação.
        prefixo:
          type: string
          title: Prefixo
          description: >-
            Primeiros 10 caracteres do valor, para identificar a chave sem
            expô-la.
          examples:
            - nx_Bmg2Hg_
        criada_em:
          type: string
          format: date-time
          title: Criada Em
          description: Quando a chave foi criada.
        revogada_em:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Revogada Em
          description: Quando foi revogada; `null` se ainda vale.
      type: object
      required:
        - id
        - nome
        - prefixo
        - criada_em
        - revogada_em
      title: ChaveApi
      examples:
        - criada_em: '2026-11-11T21:00:00Z'
          id: 6f1d2c3b-8a4e-4f7a-9b1c-2d3e4f5a6b7c
          nome: erp-producao
          prefixo: nx_Bmg2Hg_
    ErroResposta:
      properties:
        erro:
          $ref: '#/components/schemas/Erro'
      type: object
      required:
        - erro
      title: ErroResposta
      description: Corpo de toda resposta de erro (4xx e 5xx).
      examples:
        - erro:
            codigo: nao_encontrado
            mensagem: Nota não encontrada.
    Erro:
      properties:
        codigo:
          type: string
          title: Codigo
          description: Código estável, em snake_case, para tratar o erro no seu código.
          examples:
            - nao_encontrado
        mensagem:
          type: string
          title: Mensagem
          description: >-
            Explicação em português para humanos. Pode mudar; não compare com
            ela.
          examples:
            - Nota não encontrada.
      type: object
      required:
        - codigo
        - mensagem
      title: Erro
  securitySchemes:
    Chave de API:
      type: http
      description: >-
        `Authorization: Bearer nx_...` com uma Chave de API, ou o JWT de sessão
        do painel (Supabase Auth). As duas credenciais representam a mesma
        Conta.
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.