Download Everything as a ZIP

From an intake's detail page in the dashboard, or GET /v1/intakes/:id/download, download everything a client submitted as one ZIP file — no need to open each item individually.

What's in the ZIP

podklady-bella-napoli-website-in_8f3kQmR2.zip
├── podklady.pdf
├── podklady.md
├── Logo/
│   └── bella-napoli-logo.png
└── Food and interior photos/
    ├── photo-1.jpg
    ├── photo-2.jpg
    └── photo-3.jpg

podklady.pdf is a readable summary of every item — label, type, status, the submitted value, decisions, and waived items with their reason — for a human who wants one document instead of opening the dashboard. podklady.md carries the same content in Markdown, for a script or another agent to parse. Every uploaded file sits in its own item's subfolder, exactly as the client uploaded it — no re-encoding, no format conversion.

A file still going through the antivirus scan is left out of the ZIP and listed as pending in both podklady.pdf and podklady.md — download again once the scan clears. The dashboard says so before anything downloads: if the check is still running for any file, it asks whether to come back in a few minutes for a complete ZIP or download without those files now.

Secrets are opt-in per download

By default, secret items are left out entirely, so they stay available for a one-time reveal in the dashboard. Choosing to include them — in podklady.pdf only; podklady.md never carries secret values — reveals every secret item that hasn't been shown yet, and that reveal is final: it consumes the same one-time reveal as get_intake_results or the dashboard's Reveal button, and downloading again without secrets does not give it back. A secret already revealed earlier is shown as already revealed on <date> regardless of what you choose this time. See Secrets vault for the one-time reveal itself. Only the account owner's own session, or an API key with the secrets:read or admin scope, may choose to include secrets — anyone else gets 403 forbidden (reason secrets_owner_only) if they try.

Size limit

An intake above 2 GB is refused for ZIP download (413 download_too_large). There's no bundled alternative for an intake that large — fetch each item's signed URL individually with get_intake_results / GET /v1/intakes/:id/results instead.

API

Check before downloading

bash
curl https://api.briefgate.dev/v1/intakes/in_8f3kQmR2/download/preflight \
  -H "Authorization: Bearer bg_live_xxxxx"
json
{
  "files": 6,
  "bytes": 18420531,
  "skipped_files": 1,
  "secrets": { "total": 2, "unrevealed": 1, "already_revealed": 1 },
  "too_large": false,
  "max_bytes": 524288000,
  "filename": "podklady-bella-napoli-website-in_8f3kQmR2.zip"
}

skipped_files is how many uploads are still pending the antivirus scan and would be left out. secrets.unrevealed is how many secret items are still available for a one-time reveal if include_secrets is left off; secrets.already_revealed show as already-revealed text either way. too_large mirrors the 413 the download call below would return.

Download the ZIP

bash
curl "https://api.briefgate.dev/v1/intakes/in_8f3kQmR2/download?include_secrets=false" \
  -H "Authorization: Bearer bg_live_xxxxx" \
  -o podklady.zip

Returns application/zip with Content-Disposition: attachment; filename="podklady-bella-napoli-website-in_8f3kQmR2.zip". include_secrets defaults to false; set it to true to reveal and include secret values in podklady.pdf — owner session or a secrets:read/admin key only, see Secrets are opt-in per download above. Logged as an intake.downloaded audit event either way.

Troubleshooting