Download de anexo
Baixa o conteúdo binário de um anexo individual enviado por um assinante.
Retorna o arquivo bruto do anexo (não vem embrulhado em data/meta). Use
para revisar manualmente antes de aprovar /
rejeitar, ou para arquivar a evidência depois da
operação concluir.
A resposta é binária. Content-Type reflete o MIME original do upload
(ex: image/jpeg, application/pdf) e Content-Disposition traz
attachment-{id}.{ext} como sugestão de nome — o cliente HTTP deve gravar em
disco ou pipe para o destino final.
Endpoint
Authorization
ApiKey Token de integracao. Envie no header X-Api-Key.
In: header
Path Parameters
int64Header Parameters
Response Body
curl -X GET "https://example.com/api/v2/attachment/0/download"O que esperar
200 OK + bytes do arquivo. Não há envelope JSON — leia o body como binário.
A API key precisa ter permissão de visualização na operação dona do anexo. Caso contrário, 401/403.
Funciona antes, durante e depois da operação finalizar — desde que o anexo já tenha sido enviado (Review ou Completed).
Para baixar todos os anexos + documentos juntos, use o ZIP de download — mais eficiente que iterar slot a slot.
Path parameters
| Campo | Tipo | Descrição |
|---|---|---|
attachmentId | long | ID do anexo, obtido em Listar anexos por membro. |
Exemplo
curl "https://api.forsign.digital/api/v2/attachment/12345/download" \
-H "X-Api-Key: $FORSIGN_API_KEY" \
-o anexo-12345.jpgimport { writeFile } from 'node:fs/promises';
const res = await fetch(
'https://api.forsign.digital/api/v2/attachment/12345/download',
{ headers: { 'X-Api-Key': process.env.FORSIGN_API_KEY! } },
);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const contentType = res.headers.get('content-type') ?? 'application/octet-stream';
const disposition = res.headers.get('content-disposition') ?? '';
const buf = Buffer.from(await res.arrayBuffer());
await writeFile('anexo-12345.bin', buf);
console.log({ contentType, disposition, bytes: buf.length });import os, requests
r = requests.get(
"https://api.forsign.digital/api/v2/attachment/12345/download",
headers={"X-Api-Key": os.environ["FORSIGN_API_KEY"]},
stream=True,
)
r.raise_for_status()
with open("anexo-12345.bin", "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
print(r.headers.get("Content-Type"), r.headers.get("Content-Disposition"))Resposta
| Header | Exemplo |
|---|---|
Content-Type | image/jpeg, application/pdf, etc. (MIME original do upload) |
Content-Disposition | attachment; filename=attachment-12345.jpg |
| Body | bytes do arquivo |
Erros comuns
| Status | Caso | Detalhe |
|---|---|---|
400 | Anexo ainda em Progress (assinante não fez upload) | Arquivo ainda não foi enviado. |
404 | attachmentId não existe | Anexo não encontrado. |
401 | API key sem permissão de visualização na operação | — |
Anexos rejeitados têm o arquivo apagado no storage — tentar baixar um anexo
que foi rejeitado e ainda não reenviado vai dar 400 (arquivo ainda não
enviado), porque o status volta para Progress.