---
title: "Registrar manifestação"
method: POST
path: "/v1/manifestacoes"
tags: ["Manifestação"]
---

# Registrar manifestação

`POST /v1/manifestacoes`

## Request

- Base URL: `https://api.notaguard.com.br`
- URL: `https://api.notaguard.com.br/v1/manifestacoes`
- Auth: HTTP bearer

Registra na SEFAZ, em nome da empresa, o evento escolhido para até 20 NF-e. **Sem desfazer.** Exige o escopo `manifestacao:write` e que quem criou a chave siga como proprietário, administrador ou editor ativo da empresa. Fora da simulação, exige o header `Idempotency-Key`. Veja a seção "Manifestação do destinatário".

## Headers

- `Idempotency-Key` string: Obrigatório quando `simular` é falso. De 1 a 255 caracteres ASCII visíveis; um UUID serve. Reutilize só para repetir o mesmo pedido.

## Request body

- CriarManifestacao
  - `tipo` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', required: Evento a registrar. Decisão de quem responde pela empresa: `GET /v1/manifestacoes/tipos` traz o efeito e o prazo de cada um.
  - `notas` string[], required: Até 20 NF-e por pedido, por `id` (UUID) ou chave de acesso de 44 dígitos.
  - `justificativa` string: Obrigatória em `nao_realizada` e recusada nos demais tipos. De 15 a 255 caracteres, registrada na SEFAZ junto com o evento.
  - `simular` boolean: `true` valida o pedido e devolve o que seria enviado, nota a nota, sem tocar a SEFAZ e sem exigir `Idempotency-Key`.

## Response `200`

Com `simular: true`, a simulação (nada enviado). Sem simulação, o pedido com o resultado por nota; repetição com a mesma `Idempotency-Key` traz `Idempotent-Replayed: true`.

- union
  - Manifestacao
    - `id` string, uuid, required: Identificador do pedido, para `GET /v1/manifestacoes/{id}`.
    - `tipo` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', required
    - `justificativa` string, nullable, required
    - `status` 'processando' | 'concluida' | 'indeterminada', required: `concluida`: a SEFAZ respondeu por todas as notas enviadas. `indeterminada`: a comunicação caiu no meio; `resultados` mostra o que se sabe de cada nota. `processando`: ainda em andamento.
    - `criada_em` string, required
    - `concluida_em` string, nullable, required
    - `resumo` object, required
      - `enviadas` integer, required
      - `registradas` integer, required
      - `rejeitadas` integer, required
      - `nao_confirmadas` integer, required
      - `processando` integer, required
    - `resultados` object[], required
      - `id` string, uuid, required
      - `chave_acesso` string, required
      - `emissor` string, nullable, required
      - `situacao` 'registrada' | 'rejeitada' | 'nao_confirmada' | 'processando', required: `registrada`: a SEFAZ registrou o evento (há `protocolo`). `rejeitada`: a SEFAZ recusou; `codigo_sefaz` e `mensagem` dizem por quê (573 = o evento já estava registrado). `nao_confirmada`: falha de comunicação, sem resposta da SEFAZ; consulte a nota antes de repetir. `processando`: aguardando a resposta.
      - `protocolo` string, nullable, required
      - `codigo_sefaz` string, nullable, required: cStat devolvido pela SEFAZ (135 = registrado).
      - `mensagem` string, nullable, required
      - `atualizada_em` string, nullable, required
    - `excluidas` object, required: Notas do pedido que ficaram de fora. Nada foi enviado para elas.
      - `ja_manifestadas_com_este_tipo` object[], required
        - `id` string, uuid, required
        - `chave_acesso` string, required
        - `emissor` string, nullable, required
        - `documento_emissor` string, nullable, required
        - `valor` number, nullable, required
        - `recebida_em` string, nullable, required: Quando a SEFAZ disponibilizou a nota à empresa.
        - `manifestacao_atual` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', nullable, required
      - `com_envio_em_andamento` object[], required: Notas com um envio à SEFAZ ainda sem resposta (deste ou de outro pedido, do painel ou da ciência automática), iniciado nos últimos 5 minutos. Mandar de novo agora só duplicaria o evento.
        - `id` string, uuid, required
        - `chave_acesso` string, required
        - `emissor` string, nullable, required
        - `documento_emissor` string, nullable, required
        - `valor` number, nullable, required
        - `recebida_em` string, nullable, required: Quando a SEFAZ disponibilizou a nota à empresa.
        - `manifestacao_atual` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', nullable, required
      - `nao_aplicaveis` object[], required: Nota própria, NFC-e, nota cancelada ou empresa que não é a destinatária.
        - `id` string, uuid, required
        - `chave_acesso` string, required
        - `emissor` string, nullable, required
        - `documento_emissor` string, nullable, required
        - `valor` number, nullable, required
        - `recebida_em` string, nullable, required: Quando a SEFAZ disponibilizou a nota à empresa.
        - `manifestacao_atual` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', nullable, required
        - `motivo` string, required
      - `nao_encontradas` object[], required: Entradas que não correspondem a nenhuma NF-e da empresa. Nota de outra empresa aparece aqui, sem distinção.
        - `entrada` string, required
        - `motivo` string, required
    - `avisos` string[], required
  - SimulacaoManifestacao
    - `simulacao` true, required
    - `tipo` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', required
    - `efeito` string, required
    - `notas_a_manifestar` object[], required
      - `id` string, uuid, required
      - `chave_acesso` string, required
      - `emissor` string, nullable, required
      - `documento_emissor` string, nullable, required
      - `valor` number, nullable, required
      - `recebida_em` string, nullable, required: Quando a SEFAZ disponibilizou a nota à empresa.
      - `manifestacao_atual` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', nullable, required
      - `avisos` string[], required: Pontos de atenção que não impedem o envio (prazo provável, evento anterior).
    - `excluidas` object, required: Notas do pedido que ficaram de fora. Nada foi enviado para elas.
      - `ja_manifestadas_com_este_tipo` object[], required
        - `id` string, uuid, required
        - `chave_acesso` string, required
        - `emissor` string, nullable, required
        - `documento_emissor` string, nullable, required
        - `valor` number, nullable, required
        - `recebida_em` string, nullable, required: Quando a SEFAZ disponibilizou a nota à empresa.
        - `manifestacao_atual` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', nullable, required
      - `com_envio_em_andamento` object[], required: Notas com um envio à SEFAZ ainda sem resposta (deste ou de outro pedido, do painel ou da ciência automática), iniciado nos últimos 5 minutos. Mandar de novo agora só duplicaria o evento.
        - `id` string, uuid, required
        - `chave_acesso` string, required
        - `emissor` string, nullable, required
        - `documento_emissor` string, nullable, required
        - `valor` number, nullable, required
        - `recebida_em` string, nullable, required: Quando a SEFAZ disponibilizou a nota à empresa.
        - `manifestacao_atual` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', nullable, required
      - `nao_aplicaveis` object[], required: Nota própria, NFC-e, nota cancelada ou empresa que não é a destinatária.
        - `id` string, uuid, required
        - `chave_acesso` string, required
        - `emissor` string, nullable, required
        - `documento_emissor` string, nullable, required
        - `valor` number, nullable, required
        - `recebida_em` string, nullable, required: Quando a SEFAZ disponibilizou a nota à empresa.
        - `manifestacao_atual` 'ciencia' | 'confirmacao' | 'desconhecimento' | 'nao_realizada', nullable, required
        - `motivo` string, required
      - `nao_encontradas` object[], required: Entradas que não correspondem a nenhuma NF-e da empresa. Nota de outra empresa aparece aqui, sem distinção.
        - `entrada` string, required
        - `motivo` string, required
    - `avisos` string[], required

## Other responses

- `400`: Corpo inválido ou `Idempotency-Key` ausente ou malformado.
- `401`: Chave ausente, inválida, revogada ou expirada.
- `403`: Escopo `manifestacao:write` ausente, plano sem API ou responsável sem papel para manifestar.
- `409`: Pedido com esta `Idempotency-Key` ainda em processamento.
- `422`: Nenhuma nota elegível, ou `Idempotency-Key` já usada com outro corpo.
- `429`: Limite de requisições excedido.
- `500`: Erro interno.
- `502`: Comunicação com a SEFAZ interrompida durante o envio: consulte o pedido antes de tentar de novo.

---

[API](https://skmtc.dev/notaguard/apis/api-notaguard.md) · [All operations](https://skmtc.dev/notaguard/apis/api-notaguard/llms.txt) · [OpenAPI document](https://skmtc.dev/notaguard/apis/api-notaguard/revisions/118f819f30d6?raw)
