---
title: "Download Bulk"
method: POST
path: "/download/bulk"
tags: ["downloading"]
---

# Download Bulk

`POST /download/bulk`

Bulk download multiple files with checkpointing

Requires permission: download:write

## Request body

- BulkDownloadRequest — Request model for bulk file downloads
  - `urls` string[], required — List of URLs to download
  - `crawl_id` string, required — Unique identifier for this crawl
  - `downloader_type` 'FLEET_ASYNC' — Available downloader types
  - `max_workers` integer — Maximum concurrent workers
  - `batch_size` integer — URLs per batch
  - `wait_until` 'domcontentloaded' | 'load' | 'networkidle' | 'commit' — When to consider page load complete for web scraping operations
  - `debug` boolean — Enable debug information

## Response `200`

Successful Response

- BulkDownloadResponse — Response model for bulk file downloads
  - `crawl_id` string, required
  - `total_urls` integer, required
  - `total_downloads_attempted` integer, required
  - `success_count` integer, required
  - `failed_count` integer, required
  - `cached_count` integer, required
  - `save_failed_count` integer, required
  - `timestamp` string, required
  - `results` BulkDownloadResultsByStatus, required — Grouped results by status
    - `success` BulkDownloadResult[]
      - `url` string, required
      - `status` 'success' | 'cached' | 'failed' | 'save_failed', required — Status of bulk download result
      - `job_id` string, nullable
      - `s3_bucket` string, nullable
      - `s3_key` string, nullable
      - `error` string, nullable
    - `cached` BulkDownloadResult[]
      - `url` string, required
      - `status` 'success' | 'cached' | 'failed' | 'save_failed', required — Status of bulk download result
      - `job_id` string, nullable
      - `s3_bucket` string, nullable
      - `s3_key` string, nullable
      - `error` string, nullable
    - `failed` BulkDownloadResult[]
      - `url` string, required
      - `status` 'success' | 'cached' | 'failed' | 'save_failed', required — Status of bulk download result
      - `job_id` string, nullable
      - `s3_bucket` string, nullable
      - `s3_key` string, nullable
      - `error` string, nullable
    - `save_failed` BulkDownloadResult[]
      - `url` string, required
      - `status` 'success' | 'cached' | 'failed' | 'save_failed', required — Status of bulk download result
      - `job_id` string, nullable
      - `s3_bucket` string, nullable
      - `s3_key` string, nullable
      - `error` string, nullable
  - `debug_frame` object[], nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-02-17** `29225d7b3ea4` — 1 warning, 2 info
  - removed the request property `s3_bucket`
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status
- **2025-08-12** `707c0eb9cee1` — 1 breaking, 2 info
  - removed the enum value `async_fleet` of the request property `downloader_type`
  - the `downloader_type` request property default value changed from `async_fleet` to `FLEET_ASYNC`
  - added the new `FLEET_ASYNC` enum value to the request property `downloader_type`

[Change history](https://skmtc.dev/evrimai/apis/cartography-server/changes/download/bulk/post.md)

---

[API](https://skmtc.dev/evrimai/apis/cartography-server.md) · [All operations](https://skmtc.dev/evrimai/apis/cartography-server/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/evrimai/cartography-server/revisions/5ee44bc43d24/schema)
