Manifestos
Visão Geral
O módulo Manifestos gerencia o Manifesto do Destinatário Eletrônico (MDF-e) para NF-e de terceiros. Permite consultar manifestos recebidos, registrar a ciência ou manifestação do destinatário (confirmação, desconhecimento, operação não realizada) e baixar os XMLs das notas fiscais.
Base URL
Authorization: Bearer {token}
Endpoints
Descrição: Retorna uma lista paginada de manifestos recebidos, com filtros por tipo de manifesto, período e empresa.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
tipoManifesto | integer (int32) | query | — | Tipo: 0 = Ciência, 1 = Confirmação, 2 = Desconhecimento, 3 = Operação não realizada |
dataInicial | string (date-time) | query | — | Data inicial do período |
dataFinal | string (date-time) | query | — | Data final do período |
empresaId | integer (int64) | query | — | Filtra por empresa |
property | string | query | — | Campo de ordenação |
orderBy | string | query | — | Direção: asc ou desc |
pageNumber | integer | query | — | Número da página (padrão: 1) |
pageSize | integer | query | — | Registros por página (padrão: 20) |
Resposta de Sucesso 200
{
"pagination": {
"currentPage": 1,
"totalPages": 3,
"pageSize": 20,
"totalCount": 58,
"hasPrevious": false,
"hasNext": true
},
"data": [
{
"id": 1,
"chave": "35240100000000000000550010000000011000000011",
"nome": "Fornecedor Exemplo Ltda",
"documento": "11.111.111/0001-11",
"valor": 1500.00,
"numeroProtocolo": "135240000000001",
"dataEmissao": "2024-03-01T10:00:00",
"sequenciaEvento": 1,
"tipoManifesto": 1,
"tipoManifestoDescricao": "Confirmação da Operação",
"nsu": 123456789,
"faturaSalva": true,
"empresaId": 1,
"notaFiscalId": 50
}
],
"summary": null
}
Campos da Resposta — data[]
| Campo | Tipo | Descrição |
|---|---|---|
id | integer (int64) | Identificador do manifesto |
chave | string | Chave de acesso da NF-e (44 dígitos) |
nome | string | Nome do emitente da NF-e |
documento | string | CNPJ do emitente |
valor | number | Valor total da NF-e |
numeroProtocolo | string | Protocolo de autorização |
dataEmissao | string (date-time) | Data de emissão da NF-e |
tipoManifesto | integer | Tipo de manifestação realizada |
tipoManifestoDescricao | string | Descrição do tipo de manifestação |
faturaSalva | boolean | Indica se a nota foi importada como fatura |
notaFiscalId | integer | ID da nota fiscal vinculada no sistema |
Códigos de Erro
| Código | Descrição |
|---|---|
401 | Token ausente ou inválido |
500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/manifestos" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/manifestos', {
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.get(
'https://api.app.hooked.com.br/api/manifestos',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/manifestos", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/manifestos');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — GET /api/manifestos",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/manifestos",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Retorna os dados completos de um manifesto pelo ID, incluindo o conteúdo XML da NF-e.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | integer (int64) | path | ✓ | ID do manifesto |
Resposta de Sucesso 200
Retorna o objeto completo do manifesto com os campos conteudoXMLResumo e conteudoXML preenchidos.
Códigos de Erro
| Código | Descrição |
|---|---|
401 | Token ausente ou inválido |
404 | Manifesto não encontrado |
500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/manifestos/{id}" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/manifestos/{id}', {
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.get(
'https://api.app.hooked.com.br/api/manifestos/{id}',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/manifestos/{id}", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/manifestos/{id}');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — GET /api/manifestos/{id}",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/manifestos/{id}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Consulta na SEFAZ os novos manifestos disponíveis para a empresa informada, importando automaticamente os registros pendentes.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
empresaId | integer (int64) | path | ✓ | ID da empresa |
Resposta de Sucesso 200
15
Retorna a quantidade de novos manifestos importados da SEFAZ.
Códigos de Erro
| Código | Descrição |
|---|---|
401 | Token ausente ou inválido |
404 | Empresa não encontrada |
500 | Erro interno do servidor ou falha na comunicação com a SEFAZ |
Exemplos de Código
cURL
curl -X POST "https://api.app.hooked.com.br/api/manifestos/consultar/{empresaId}" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/manifestos/consultar/{empresaId}', {
method: 'POST',
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.post(
'https://api.app.hooked.com.br/api/manifestos/consultar/{empresaId}',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("POST", "https://api.app.hooked.com.br/api/manifestos/consultar/{empresaId}", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/manifestos/consultar/{empresaId}');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — POST /api/manifestos/consultar/{empresaId}",
"nodes": [
{
"parameters": {
"method": "POST",
"url": "https://api.app.hooked.com.br/api/manifestos/consultar/{empresaId}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Registra a manifestação do destinatário para uma NF-e junto à SEFAZ. Permite confirmar a operação, declarar desconhecimento ou registrar operação não realizada.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | integer (int64) | path | ✓ | ID do manifesto |
Corpo da Requisição
{
"id": 1,
"tipoManifesto": 1,
"justificativa": null
}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | integer (int32) | ✓ | ID do manifesto |
tipoManifesto | integer (int32) | ✓ | 1 = Confirmação, 2 = Desconhecimento, 3 = Operação não realizada |
justificativa | string | — | Justificativa obrigatória para tipos 2 e 3 (mínimo 15 caracteres) |
Resposta de Sucesso 200
Retorna o objeto com o tipo de manifestação registrado.
Códigos de Erro
| Código | Descrição |
|---|---|
400 | Tipo inválido ou justificativa ausente quando obrigatória |
401 | Token ausente ou inválido |
404 | Manifesto não encontrado |
500 | Erro interno ou falha na comunicação com a SEFAZ |
Exemplos de Código
cURL
curl -X PUT "https://api.app.hooked.com.br/api/manifestos/{id}/manifestar" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"id":1,"tipoManifesto":1,"justificativa":null}'
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/manifestos/{id}/manifestar', {
method: 'PUT',
headers: {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"id": 1,
"tipoManifesto": 1,
"justificativa": null
})
});
const data = await response.json();
Python
import requests
data = requests.put(
'https://api.app.hooked.com.br/api/manifestos/{id}/manifestar',
headers={'Authorization': 'Bearer {token}'},
json={'id': 1, 'tipoManifesto': 1, 'justificativa': None}
).json()
Go
import (
"bytes"
"net/http"
)
payload := []byte(`{"id":1,"tipoManifesto":1,"justificativa":null}`)
req, _ := http.NewRequest("PUT", "https://api.app.hooked.com.br/api/manifestos/{id}/manifestar", bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer {token}")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/manifestos/{id}/manifestar');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'id' => 1,
'tipoManifesto' => 1,
'justificativa' => null
]),
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — PUT /api/manifestos/{id}/manifestar",
"nodes": [
{
"parameters": {
"method": "PUT",
"url": "https://api.app.hooked.com.br/api/manifestos/{id}/manifestar",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "{\"id\":1,\"tipoManifesto\":1,\"justificativa\":null}",
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Faz o download do arquivo XML da NF-e referente ao manifesto.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | integer (int64) | path | ✓ | ID do manifesto |
Resposta de Sucesso 200
Retorna o arquivo XML da NF-e para download.
Códigos de Erro
| Código | Descrição |
|---|---|
401 | Token ausente ou inválido |
404 | Manifesto não encontrado |
500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/manifestos/{id}/download" \
-H "Authorization: Bearer {token}" \
-o arquivo
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/manifestos/{id}/download', {
headers: { 'Authorization': 'Bearer {token}' }
});
const blob = await response.blob();
// Node.js: use response.buffer() e salve com fs.writeFile
Python
import requests
response = requests.get(
'https://api.app.hooked.com.br/api/manifestos/{id}/download',
headers={'Authorization': 'Bearer {token}'},
)
with open('arquivo', 'wb') as f:
f.write(response.content)
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/manifestos/{id}/download", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
arquivo, _ := os.Create("arquivo")
defer arquivo.Close()
io.Copy(arquivo, resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/manifestos/{id}/download');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$arquivo = curl_exec($ch);
curl_close($ch);
file_put_contents('arquivo', $arquivo);
n8n
{
"name": "Hooked API — GET /api/manifestos/{id}/download",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/manifestos/{id}/download",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Gera o DANFE (Documento Auxiliar da Nota Fiscal Eletrônica) em PDF para impressão referente ao manifesto.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | integer (int64) | path | ✓ | ID do manifesto |
Resposta de Sucesso 200
Retorna o arquivo PDF do DANFE.
Códigos de Erro
| Código | Descrição |
|---|---|
401 | Token ausente ou inválido |
404 | Manifesto não encontrado |
500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/manifestos/{id}/imprimir" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/manifestos/{id}/imprimir', {
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.get(
'https://api.app.hooked.com.br/api/manifestos/{id}/imprimir',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/manifestos/{id}/imprimir", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/manifestos/{id}/imprimir');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — GET /api/manifestos/{id}/imprimir",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/manifestos/{id}/imprimir",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
