---
title: "Bulk request (single)"
method: GET
path: "/v3/bulk_requests/{bulk_action_uuid}"
tags: ["Bulk Requests"]
---

# Bulk request (single)

`GET /v3/bulk_requests/{bulk_action_uuid}`

Retrieve a single bulk request, including the per-row success and failure result files. Each call mints fresh short-lived (5 minute) S3 URLs for `success_results_url` and `failure_results_url`; re-fetch this endpoint to get new URLs once they expire. The bulk request record itself, along with its result files, is deleted at `expires_at`.

## Response `200`

Successful

- object[]
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `bulk_action_uuid` string — Unique identifier for the bulk request, returned when the bulk endpoint was first called. Use this to look up the request via `GET /v3/bulk_requests/{bulk_action_uuid}`.
  - `requested_by_user_id` integer — Id of the Greenhouse user the bulk request was executed on behalf of (the ISU or the access-token user).
  - `status` string — Current lifecycle state of the bulk request. One of `building` (the request is being assembled), `pending` (queued and waiting to start), `in_progress` (jobs are running), `completed` (every job finished, regardless of per-row success), or `failed` (the bulk request itself failed before its rows could run).
  - `record_count` integer — Total number of rows submitted in the bulk request's `data` array.
  - `success_count` integer — Number of rows that completed successfully so far. Updates incrementally while `status` is `in_progress`.
  - `failure_count` integer — Number of rows that returned an error so far. Updates incrementally while `status` is `in_progress`; the per-row error bodies are written to `failure_results_url` on the single-bulk-request response.
  - `callback_url` string, nullable — Webhook URL Greenhouse will POST to when the bulk request completes, as supplied at creation time. Null if no callback was requested.
  - `callback_response` string, nullable — Status-line summary of Greenhouse's POST to `callback_url` (for example `200 OK`). Null until the callback fires, or when no callback was requested.
  - `completed_at` string, date-time, nullable — Timestamp when the bulk request reached `completed` or `failed` state, in ISO 8601. Null while the request is still active.
  - `expires_at` string, date-time, nullable — Timestamp after which Greenhouse deletes this bulk request record and its result files, in ISO 8601. Null until the request finishes.
  - `api_endpoint` string — Identifier of the underlying single-resource endpoint each row in `data` is dispatched to (for example `post_v3_openings`, `delete_v3_openings`).
  - `requested_at` string, date-time, nullable — Timestamp when the bulk request was created, in ISO 8601.
  - `success_results_url` string, nullable — Short-lived S3 URL to a JSON file listing the per-row success responses. Only present on the single-bulk-request endpoint, and null when no rows succeeded or the request has not finished.
  - `failure_results_url` string, nullable — Short-lived S3 URL to a JSON file listing the per-row error responses. Only present on the single-bulk-request endpoint, and null when no rows failed or the request has not finished.
  - `results_urls_expire_in` string — Human-readable lifetime of `success_results_url` and `failure_results_url` (for example `5 minutes`). Re-fetch the bulk request to mint fresh URLs after they expire.
  - `results_urls_expire_at` string, date-time — Timestamp after which `success_results_url` and `failure_results_url` stop working, in ISO 8601. Re-request the bulk request to generate new URLs.

---

[API](https://skmtc.dev/greenhouse/apis/auth-api.md) · [All operations](https://skmtc.dev/greenhouse/apis/auth-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/greenhouse/auth-api/revisions/9517a2e54640/schema)
