---
title: "Get bulk job status"
method: GET
path: "/bulk/{process_id}"
---

# Get bulk job status

`GET /bulk/{process_id}`

## Path parameters

- `process_id` string, uuid, required

## Response `200`

OK

- BulkStatus — Status of a bulk job including output locations.
  - `process_id` string, uuid, required
  - `state` 'RUNNING' | 'COMPLETE' | 'FAILED', required
  - `result_presigned_url` string, uri — LEGACY: presigned URL for the first (or only) output file. If `results.multi_file` is true, clients MUST iterate `results.files[]` and download each `url` instead.
  - `bucket` string — S3 bucket containing outputs.
  - `key` string — Key of the first (or only) output file.
  - `results` Results — Details for exported files.
    - `multi_file` boolean — True if the export was split into multiple files.
    - `files` FilePart[] — List of exported file parts. Iterate and download each `url` when `multi_file` is true.
      - `bucket` string, required
      - `key` string, required
      - `size` integer
      - `md5` string — Content-MD5 (hex) of the part.
      - `last_modified` string — RFC 1123 date string from S3 (e.g. Wed, 1 Oct 2025 22:17:01 GMT).
      - `url` string, uri, required — Ephemeral presigned URL to download this file.
  - `member_delivery` MemberDelivery — Details of member S3 delivery. When enabled (via org setting or per-request flag), results are copied to the organization's S3 under `outgoing/apis/market_pulse/<process_id>/...`.
    - `enabled` boolean — Effective toggle after considering org-level and per-request flag.
    - `requested` boolean — True if the client requested delivery via `deliver_to_s3` in this request.
    - `org_enabled` boolean, nullable — True if the org-level toggle was enabled.
    - `copied` boolean — True if files were actually copied.
    - `copied_count` integer, nullable
    - `destinations` MemberDeliveryDestination[]
      - `bucket` string, required
      - `key` string, required
    - `destination_config_present` boolean — Whether a destination bucket/prefix was configured on the org.
    - `destination` MemberDeliveryDestination
      - `bucket` string, required
      - `key` string, required
    - `error` string, nullable
  - `utc_job_submitted` string, date-time
  - `utc_job_processing_start` string, date-time
  - `utc_job_processing_end` string, date-time
  - `total_time` number, float, nullable — Seconds from submit to completion.
  - `processing_time` number, float, nullable — Seconds spent processing.
  - `input_counts` object
    - `total` integer
    - `b2b` integer
    - `b2c` integer
    - `custom` integer
    - `unknown` integer
  - `matched_rows` integer
  - `matched_topics` object
    - `b2b` integer
    - `b2c` integer
    - `custom` integer
  - `not_found` object
    - `b2b` integer
    - `b2c` integer
    - `custom` integer
    - `unknown` integer

---

[API](https://skmtc.dev/5x5coop/apis/data-api.md) · [All operations](https://skmtc.dev/5x5coop/apis/data-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/5x5coop/data-api/revisions/cc624a5c28fd/schema)
