DACE e XML da DC-e
A DC-e tem dois artefatos de download, cada um com sua própria rota — não existe campo de URL no corpo da consulta.
Baixar a DACE (PDF)
GET /v1/subscriptions/{subscriptionId}/taxpayers/{taxpayerId}/contentdeclarations/{id}/pdf?layout=full
DACE é o documento auxiliar da DC-e — representação visual, não o documento fiscal em si. Dois layouts:
layout | Conteúdo |
|---|---|
full (padrão) | Completo |
summary | Resumido |
Qualquer valor diferente de summary devolve o layout completo.
Em homologação, a DACE sai com a tarja "EMITIDO EM HOMOLOGAÇÃO — SEM VALOR FISCAL".
Baixar o XML autorizado
GET /v1/subscriptions/{subscriptionId}/taxpayers/{taxpayerId}/contentdeclarations/{id}/xml
É o arquivo a guardar para fins fiscais — o XML é o documento; o PDF da DACE é só representação.
Os dois respondem com redirecionamento temporário
302 Found
Location: https://<url-pré-assinada>
Por padrão, a resposta de ambos os endpoints é um 302 para uma URL temporária, válida por 5 minutos — use-a para baixar na hora, não a guarde nem a repasse. A maioria dos clientes HTTP segue o redirecionamento sozinha; se o seu não segue, leia o cabeçalho Location.
Prefere JSON? ?format=uri
GET /v1/subscriptions/{subscriptionId}/taxpayers/{taxpayerId}/contentdeclarations/{id}/pdf?format=uri&layout=full
{
"uri": "https://<url-pré-assinada>"
}
É o mesmo corpo que as outras APIs da NFE.io devolvem para download, e o caminho certo para um navegador ou para quem não quer seguir redirecionamento. format=redirect é o padrão e equivale a omitir o parâmetro; outro valor responde 400. layout continua valendo junto de format=uri.
accessKey/documentUrl no corpo — a única forma de obter o arquivo é por estas rotasDiferente de outros documentos da NFE.io, a consulta de uma DC-e não traz nenhum campo de URL do PDF ou XML. Chame GET {id}/pdf ou GET {id}/xml diretamente, usando o id que você já tem.
Antes de a nota ser autorizada
Enquanto a DC-e não é Authorized, não existe artefato para baixar — 404 em ambas as rotas. Acompanhe o status por consulta antes de tentar.
Erros
| Código | O que significa |
|---|---|
400 | format com valor que não é redirect nem uri |
401 | Token ausente, expirado, com audiência errada, ou chave de API no lugar de JWT |
403 | Token válido mas sem o escopo/papel da operação, ou a assinatura da URL não é do token nem acessível ao usuário (type termina em subscription-scope-undetermined) |
404 | Documento inexistente, ou o artefato ainda não foi gerado — a nota não está autorizada |