# API Reference: Bulk Operations

## Bulk retry events {#bulk-retry-events}

Bulk retry operations allow you to retry many events at once. A bulk retry is first estimated, then created, then processed asynchronously.

### Retrieve events bulk retries {#geteventbulkretries}

`GET /bulk/events/retry`

This endpoint lists events bulk retries.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `cancelled_at` | `string, Operators` | No | Filter by date the bulk retry was cancelled |
| `completed_at` | `string, Operators` | No | Filter by date the bulk retry completed |
| `created_at` | `string, Operators` | No | Filter by date the bulk retry was created |
| `id` | `string, string[]` | No | Filter by bulk retry IDs |
| `query` | `JSON` | No | Filter for events to be included in the bulk retry, use query parameters of [Event](#events) |
| `query_partial_match` | `boolean` | No | Allow partial filter match on query property |
| `in_progress` | `boolean` | No | Indicates if the bulk retry is currently in progress |
| `order_by` | `string, string[]` | No | Sort key(s) |
| `dir` | `string, string[]` | No | Sort direction(s) |
| `limit` | `integer` | No | Result set size |
| `next` | `string` | No | The ID to provide in the query to get the next set of results |
| `prev` | `string` | No | The ID to provide in the query to get the previous set of results |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/events/retry" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "pagination": {
    "order_by": "created_at",
    "dir": "desc",
    "limit": 100
  },
  "count": 1,
  "models": [
    {
      "id": "bch_dyX64OGG925c3E",
      "team_id": "tm_lbhzBKgFOUnB",
      "type": "events.retry",
      "query": {
        "source_id": [
          "src_qa5626p6y5o79b"
        ]
      },
      "updated_at": "2026-01-14T13:36:31.807Z",
      "created_at": "2026-01-14T13:36:21.567Z",
      "completed_at": "2026-01-14T13:36:31.807Z",
      "cancelled_at": null,
      "estimated_batch": 1,
      "estimated_count": 1,
      "processed_batch": 1,
      "completed_count": 3,
      "failed_count": 0,
      "number": 1,
      "in_progress": false,
      "progress": 1
    }
  ]
}
```

### Create events bulk retry {#createeventbulkretry}

`POST /bulk/events/retry`

This endpoint creates and starts an events bulk retry using the provided query.

#### Body Parameters

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | Yes | Filter properties for the events to be included in the bulk retry |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/events/retry" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": {
    "source_id": [
      "src_qa5626p6y5o79b"
    ]
  }
}'
```

**Response**

```json
{
  "team_id": "tm_lbhzBKgFOUnB",
  "type": "events.retry",
  "query": {
    "source_id": [
      "src_qa5626p6y5o79b"
    ]
  },
  "estimated_batch": 1,
  "estimated_count": 5,
  "completed_count": 0,
  "number": 2,
  "id": "bch_hfnVPzw7v8ONyq",
  "created_at": "2026-01-14T13:36:42.130Z",
  "updated_at": "2026-01-14T13:36:42.130Z",
  "completed_at": null,
  "cancelled_at": null,
  "processed_batch": 0,
  "failed_count": null,
  "in_progress": true,
  "progress": 0
}
```

### Generate events bulk retry plan {#generateeventbulkretryplan}

`GET /bulk/events/retry/plan`

This endpoint estimates the number of events matched by the provided query before creating a bulk retry. Use the plan to preview impact.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | No | Filter properties for the events to be included in the bulk retry |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/events/retry/plan" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "estimated_count": 5,
  "estimated_batch": 1,
  "progress": 0
}
```

### Retrieve events bulk retry {#geteventbulkretry}

`GET /bulk/events/retry/{id}`

This endpoint retrieves a specific events bulk retry.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk retry ID |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/events/retry/<id>" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "id": "bch_dyX64OGG925c3E",
  "team_id": "tm_lbhzBKgFOUnB",
  "type": "events.retry",
  "query": {
    "source_id": [
      "src_qa5626p6y5o79b"
    ]
  },
  "updated_at": "2026-01-14T13:36:31.807Z",
  "created_at": "2026-01-14T13:36:21.567Z",
  "completed_at": "2026-01-14T13:36:31.807Z",
  "cancelled_at": null,
  "estimated_batch": 1,
  "estimated_count": 1,
  "processed_batch": 1,
  "completed_count": 3,
  "failed_count": 0,
  "number": 1,
  "in_progress": false,
  "progress": 1
}
```

### Cancel events bulk retry {#canceleventbulkretry}

`POST /bulk/events/retry/{id}/cancel`

This endpoint cancels a pending or in-progress events bulk retry.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk retry ID |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/events/retry/<id>/cancel" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "id": "bch_dyX64OGG925c3E",
  "team_id": "tm_lbhzBKgFOUnB",
  "type": "events.retry",
  "query": {
    "source_id": [
      "src_qa5626p6y5o79b"
    ]
  },
  "updated_at": "2026-01-14T13:36:42.144Z",
  "created_at": "2026-01-14T13:36:21.567Z",
  "completed_at": "2026-01-14T13:36:31.807Z",
  "cancelled_at": "2026-01-14T13:36:42.143Z",
  "estimated_batch": 1,
  "estimated_count": 1,
  "processed_batch": 1,
  "completed_count": 3,
  "failed_count": 0,
  "number": 1,
  "in_progress": false,
  "progress": 1
}
```

## Bulk cancel events {#bulk-cancel-events}

Bulk cancel operations allow you to cancel multiple pending events at once.

### Retrieve events bulk cancels {#geteventbulkcancels}

`GET /bulk/events/cancel`

This endpoint lists events bulk cancels.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `cancelled_at` | `string, Operators` | No | Filter by date the bulk cancel was cancelled |
| `completed_at` | `string, Operators` | No | Filter by date the bulk cancel completed |
| `created_at` | `string, Operators` | No | Filter by date the bulk cancel was created |
| `id` | `string, string[]` | No | Filter by bulk cancel IDs |
| `query` | `JSON` | No | Filter for events to be included in the bulk cancel operation, use query parameters of [Event](#events) |
| `query_partial_match` | `boolean` | No | Allow partial filter match on query property |
| `in_progress` | `boolean` | No | Indicates if the bulk cancel is currently in progress |
| `order_by` | `string, string[]` | No | Sort key(s) |
| `dir` | `string, string[]` | No | Sort direction(s) |
| `limit` | `integer` | No | Result set size |
| `next` | `string` | No | The ID to provide in the query to get the next set of results |
| `prev` | `string` | No | The ID to provide in the query to get the previous set of results |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/events/cancel" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "pagination": {
    "order_by": "created_at",
    "dir": "desc",
    "limit": 100
  },
  "count": 1,
  "models": [
    {
      "id": "bch_eEdBsDkllCrYu8",
      "team_id": "tm_lbhzBKgFOUnB",
      "type": "events.cancel",
      "query": {
        "source_id": [
          "src_v5lfi6g0iqsm38"
        ]
      },
      "updated_at": "2026-01-14T13:36:36.823Z",
      "created_at": "2026-01-14T13:36:26.648Z",
      "completed_at": "2026-01-14T13:36:36.823Z",
      "cancelled_at": null,
      "estimated_batch": 1,
      "estimated_count": 1,
      "processed_batch": 1,
      "completed_count": 1,
      "failed_count": 0,
      "number": 1,
      "in_progress": false,
      "progress": 1
    }
  ]
}
```

### Create events bulk cancel {#createeventbulkcancel}

`POST /bulk/events/cancel`

This endpoint creates and starts an events bulk cancel using the provided query.

#### Body Parameters

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | Yes | Filter properties for the events to be included in the bulk cancel |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/events/cancel" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": {
    "rejection_cause": [
      "UNSUPPORTED_HTTP_METHOD"
    ]
  }
}'
```

**Response**

```json
{
  "code": "UNPROCESSABLE_ENTITY",
  "status": 422,
  "message": "Unprocessable Entity",
  "data": {
    "message": "The query filter for the batch operations does not include any requests. Please try a different query filter."
  }
}
```

### Generate events bulk cancel plan {#generateeventbulkcancelplan}

`GET /bulk/events/cancel/plan`

This endpoint estimates the number of events matched by the provided query before creating a bulk cancel.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | No | Filter properties for the events to be included in the bulk cancel |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/events/cancel/plan" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "estimated_count": 1,
  "estimated_batch": 1
}
```

### Retrieve events bulk cancel {#geteventbulkcancel}

`GET /bulk/events/cancel/{id}`

This endpoint retrieves a specific events bulk cancel.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk cancel ID |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/events/cancel/<id>" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "id": "bch_eEdBsDkllCrYu8",
  "team_id": "tm_lbhzBKgFOUnB",
  "type": "events.cancel",
  "query": {
    "source_id": [
      "src_v5lfi6g0iqsm38"
    ]
  },
  "updated_at": "2026-01-14T13:36:36.823Z",
  "created_at": "2026-01-14T13:36:26.648Z",
  "completed_at": "2026-01-14T13:36:36.823Z",
  "cancelled_at": null,
  "estimated_batch": 1,
  "estimated_count": 1,
  "processed_batch": 1,
  "completed_count": 1,
  "failed_count": 0,
  "number": 1,
  "in_progress": false,
  "progress": 1
}
```

## Bulk retry ignored events {#bulk-retry-ignored-events}

Bulk retry ignored events allow you to retry many events that were previously ignored (for instance due to filter rules) at once.

### Retrieve ignored events bulk retries {#getignoredeventbulkretries}

`GET /bulk/ignored-events/retry`

This endpoint lists ignored events bulk retries.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `cancelled_at` | `string, Operators` | No | Filter by date the bulk retry was cancelled |
| `completed_at` | `string, Operators` | No | Filter by date the bulk retry completed |
| `created_at` | `string, Operators` | No | Filter by date the bulk retry was created |
| `id` | `string, string[]` | No | Filter by bulk retry IDs |
| `query` | `JSON` | No | Filter by the bulk retry ignored event query object |
| `query_partial_match` | `boolean` | No | Allow partial filter match on query property |
| `in_progress` | `boolean` | No | Indicates if the bulk retry is currently in progress |
| `order_by` | `string, string[]` | No | Sort key(s) |
| `dir` | `string, string[]` | No | Sort direction(s) |
| `limit` | `integer` | No | Result set size |
| `next` | `string` | No | The ID to provide in the query to get the next set of results |
| `prev` | `string` | No | The ID to provide in the query to get the previous set of results |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/ignored-events/retry" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "pagination": {
    "order_by": "created_at",
    "dir": "desc",
    "limit": 100
  },
  "count": 1,
  "models": [
    {
      "id": "bch_CRh7yHRRrAp4HZ",
      "team_id": "tm_lbhzBKgFOUnB",
      "query": {
        "cause": "FILTERED"
      },
      "updated_at": "2026-01-14T13:36:36.053Z",
      "created_at": "2026-01-14T13:36:35.961Z",
      "completed_at": "2026-01-14T13:36:36.052Z",
      "cancelled_at": null,
      "estimated_batch": 1,
      "estimated_count": 1,
      "processed_batch": 1,
      "completed_count": 1,
      "failed_count": 1,
      "number": 1,
      "in_progress": false,
      "progress": 1
    }
  ]
}
```

### Create ignored events bulk retry {#createignoredeventbulkretry}

`POST /bulk/ignored-events/retry`

This endpoint creates and starts an ignored events bulk retry using the provided query.

#### Body Parameters

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | Yes | Filter by the bulk retry ignored event query object |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/ignored-events/retry" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": {
    "cause": "TRANSFORMATION_FAILED",
    "transformation_id": "trs_3g5n4Sl0pCxcqc"
  }
}'
```

**Response**

```json
{
  "code": "UNPROCESSABLE_ENTITY",
  "status": 422,
  "message": "Unprocessable Entity",
  "data": {
    "message": "The query filter for the batch operations does not include any records. Please try a different query filter."
  }
}
```

### Generate ignored events bulk retry plan {#generateignoredeventbulkretryplan}

`GET /bulk/ignored-events/retry/plan`

This endpoint estimates the number of ignored events matched by the provided query before creating a bulk retry.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | No | Filter by the bulk retry ignored event query object |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/ignored-events/retry/plan" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "estimated_count": 0,
  "estimated_batch": 0
}
```

### Retrieve ignored events bulk retry {#getignoredeventbulkretry}

`GET /bulk/ignored-events/retry/{id}`

This endpoint retrieves a specific ignored events bulk retry.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk retry ID |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/ignored-events/retry/<id>" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "id": "bch_CRh7yHRRrAp4HZ",
  "team_id": "tm_lbhzBKgFOUnB",
  "query": {
    "cause": "FILTERED"
  },
  "updated_at": "2026-01-14T13:36:36.053Z",
  "created_at": "2026-01-14T13:36:35.961Z",
  "completed_at": "2026-01-14T13:36:36.052Z",
  "cancelled_at": null,
  "estimated_batch": 1,
  "estimated_count": 1,
  "processed_batch": 1,
  "completed_count": 1,
  "failed_count": 1,
  "number": 1,
  "in_progress": false,
  "progress": 1
}
```

### Cancel ignored events bulk retry {#cancelignoredeventbulkretry}

`POST /bulk/ignored-events/retry/{id}/cancel`

This endpoint cancels a pending or in-progress ignored events bulk retry.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk retry ID |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/ignored-events/retry/<id>/cancel" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "id": "bch_CRh7yHRRrAp4HZ",
  "team_id": "tm_lbhzBKgFOUnB",
  "query": {
    "cause": "FILTERED"
  },
  "updated_at": "2026-01-14T13:36:42.323Z",
  "created_at": "2026-01-14T13:36:35.961Z",
  "completed_at": "2026-01-14T13:36:36.052Z",
  "cancelled_at": "2026-01-14T13:36:42.323Z",
  "estimated_batch": 1,
  "estimated_count": 1,
  "processed_batch": 1,
  "completed_count": 1,
  "failed_count": 1,
  "number": 1,
  "in_progress": false,
  "progress": 1
}
```

## Bulk retry requests {#bulk-retry-requests}

Bulk retry requests allow you to re-ingest many previously received requests at once.

### Retrieve requests bulk retries {#getrequestbulkretries}

`GET /bulk/requests/retry`

This endpoint lists requests bulk retries.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `cancelled_at` | `string, Operators` | No | Filter by date the bulk retry was cancelled |
| `completed_at` | `string, Operators` | No | Filter by date the bulk retry completed |
| `created_at` | `string, Operators` | No | Filter by date the bulk retry was created |
| `id` | `string, string[]` | No | Filter by bulk retry IDs |
| `in_progress` | `boolean` | No | Indicates if the bulk retry is currently in progress |
| `query` | `JSON` | No | Filter properties for the events to be included in the bulk retry, use query parameters of [Requests](#requests) |
| `query_partial_match` | `boolean` | No | Allow partial filter match on query property |
| `order_by` | `string, string[]` | No | Sort key(s) |
| `dir` | `string, string[]` | No | Sort direction(s) |
| `limit` | `integer` | No | Result set size |
| `next` | `string` | No | The ID to provide in the query to get the next set of results |
| `prev` | `string` | No | The ID to provide in the query to get the previous set of results |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/retry" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "pagination": {
    "order_by": "created_at",
    "dir": "desc",
    "limit": 100
  },
  "count": 1,
  "models": [
    {
      "id": "bch_ruCrYJpRPQ6doK",
      "team_id": "tm_lbhzBKgFOUnB",
      "type": "requests.retry",
      "query": {
        "source_id": [
          "src_qa5626p6y5o79b"
        ]
      },
      "updated_at": "2026-01-14T13:36:26.788Z",
      "created_at": "2026-01-14T13:36:26.677Z",
      "completed_at": "2026-01-14T13:36:26.787Z",
      "cancelled_at": null,
      "estimated_batch": 1,
      "estimated_count": 2,
      "processed_batch": 1,
      "completed_count": 2,
      "failed_count": 1,
      "number": 1,
      "in_progress": false,
      "progress": 1
    }
  ]
}
```

### Create requests bulk retry {#createrequestbulkretry}

`POST /bulk/requests/retry`

This endpoint creates and starts a requests bulk retry using the provided query.

#### Body Parameters

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | Yes | Filter properties for the events to be included in the bulk retry, use query parameters of [Requests](#requests) |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/retry" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": {
    "rejection_cause": [
      "UNSUPPORTED_HTTP_METHOD"
    ]
  }
}'
```

**Response**

```json
{
  "code": "UNPROCESSABLE_ENTITY",
  "status": 422,
  "message": "Unprocessable Entity",
  "data": {
    "message": "The query filter for the batch operations does not include any requests. Please try a different query filter."
  }
}
```

### Generate requests bulk retry plan {#generaterequestbulkretryplan}

`GET /bulk/requests/retry/plan`

This endpoint estimates the number of requests matched by the provided query before creating a bulk retry.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | No | Filter properties for the events to be included in the bulk retry, use query parameters of [Requests](#requests) |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/retry/plan" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "estimated_count": 5,
  "estimated_batch": 1
}
```

### Retrieve requests bulk retry {#getrequestbulkretry}

`GET /bulk/requests/retry/{id}`

This endpoint retrieves a specific requests bulk retry.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk retry ID |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/retry/<id>" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "id": "bch_ruCrYJpRPQ6doK",
  "team_id": "tm_lbhzBKgFOUnB",
  "type": "requests.retry",
  "query": {
    "source_id": [
      "src_qa5626p6y5o79b"
    ]
  },
  "updated_at": "2026-01-14T13:36:26.788Z",
  "created_at": "2026-01-14T13:36:26.677Z",
  "completed_at": "2026-01-14T13:36:26.787Z",
  "cancelled_at": null,
  "estimated_batch": 1,
  "estimated_count": 2,
  "processed_batch": 1,
  "completed_count": 2,
  "failed_count": 1,
  "number": 1,
  "in_progress": false,
  "progress": 1
}
```

### Cancel requests bulk retry {#cancelrequestbulkretry}

`POST /bulk/requests/retry/{id}/cancel`

This endpoint cancels a pending or in-progress requests bulk retry.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk retry ID |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/retry/<id>/cancel" \
  -H "Authorization: Bearer $API_KEY"
```

**Response**

```json
{
  "id": "bch_ruCrYJpRPQ6doK",
  "team_id": "tm_lbhzBKgFOUnB",
  "type": "requests.retry",
  "query": {
    "source_id": [
      "src_qa5626p6y5o79b"
    ]
  },
  "updated_at": "2026-01-14T13:36:42.196Z",
  "created_at": "2026-01-14T13:36:26.677Z",
  "completed_at": "2026-01-14T13:36:26.787Z",
  "cancelled_at": "2026-01-14T13:36:42.196Z",
  "estimated_batch": 1,
  "estimated_count": 2,
  "processed_batch": 1,
  "completed_count": 2,
  "failed_count": 1,
  "number": 1,
  "in_progress": false,
  "progress": 1
}
```

## Bulk replay requests {#bulk-replay-requests}

Bulk replay requests re-runs the full pipeline for many historical requests through a chosen set of target connections. Useful for backfilling new connections and for reprocessing after a transformation change.

### Retrieve requests bulk replays {#getrequestbulkreplays}

`GET /bulk/requests/replay`

This endpoint lists requests bulk replays.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `cancelled_at` | `string, Operators` | No | Filter by date the bulk replay was cancelled |
| `completed_at` | `string, Operators` | No | Filter by date the bulk replay completed |
| `created_at` | `string, Operators` | No | Filter by date the bulk replay was created |
| `id` | `string, string[]` | No | Filter by bulk replay IDs |
| `in_progress` | `boolean` | No | Indicates if the bulk replay is currently in progress |
| `query` | `JSON` | No | Filter properties for the bulk replay, use query parameters of Requests |
| `query_partial_match` | `boolean` | No | Allow partial filter match on query property |
| `order_by` | `string, string[]` | No | Sort key(s) |
| `dir` | `string, string[]` | No | Sort direction(s) |
| `limit` | `integer` | No | Result set size |
| `next` | `string` | No | The ID to provide in the query to get the next set of results |
| `prev` | `string` | No | The ID to provide in the query to get the previous set of results |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/replay" \
  -H "Authorization: Bearer $API_KEY"
```

### Create requests bulk replay {#createrequestbulkreplay}

`POST /bulk/requests/replay`

Creates and starts a requests bulk replay. The `query.target` object selects where to replay: `source_id` targets a source — alone it replays onto all of the source’s active connections (resolved as the replay runs), or combine it with `webhook_ids` to target specific connections on that source. The remaining `query` fields filter which historical requests to replay.

#### Body Parameters

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | Yes | Filter properties for the requests to replay, plus the replay target |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/replay" \
  -H "Authorization: Bearer $API_KEY"
```

### Generate requests bulk replay plan {#generaterequestbulkreplayplan}

`GET /bulk/requests/replay/plan`

Estimates the number of requests matched by the provided filter before creating a bulk replay. Pass the same `query` payload that you will POST to create the bulk replay — except `query.target`, which is not a filter and may be omitted.

#### Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `JSON` | No | Filter properties for the requests to replay, optionally with the replay target |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/replay/plan" \
  -H "Authorization: Bearer $API_KEY"
```

### Retrieve requests bulk replay {#getrequestbulkreplay}

`GET /bulk/requests/replay/{id}`

This endpoint retrieves a specific requests bulk replay.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk replay ID |

**Request**

```bash
curl -X GET \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/replay/<id>" \
  -H "Authorization: Bearer $API_KEY"
```

### Cancel requests bulk replay {#cancelrequestbulkreplay}

`POST /bulk/requests/replay/{id}/cancel`

This endpoint cancels a pending or in-progress requests bulk replay.

#### URL Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Bulk replay ID |

**Request**

```bash
curl -X POST \
  "https://api.hookdeck.com/2025-07-01/bulk/requests/replay/<id>/cancel" \
  -H "Authorization: Bearer $API_KEY"
```