---
title: "Bulk-delete application-verification records from a credentialing workflow"
method: POST
path: "/credentialing-workflows/{workflowId}/app-verifications/bulk-delete"
tags: ["CredentialingWorkflow"]
---

# Bulk-delete application-verification records from a credentialing workflow

`POST /credentialing-workflows/{workflowId}/app-verifications/bulk-delete`

Deletes multiple appVerifications records in one action. Each recordId uses the '{section}-{index}' format (e.g. 'appVerifications-3'); section must be appVerifications. Deletion is a single read-modify-write and hard-deletes the records (no tombstone, nothing written to deletedData), matching single-record delete behaviour for this section — which is why appVerifications has its own endpoint rather than being served by the generic section bulk-delete. Partial failures (malformed, wrong section, out-of-bounds, duplicate recordIds) are reported per record and do not block the valid deletions. NOTE: recordIds are positional, so this request must not be retried automatically — a replay after a successful-but-unseen response would delete whatever records shifted into those indices, and because this section hard-deletes with no deletedData tombstone that loss is unrecoverable. Re-fetch the section and rebuild recordIds before any retry.

## Path parameters

- `workflowId` string, required

## Headers

- `tenant-id` string, required

## Request body

- BulkDeleteAppVerificationsRequest — Identifiers of the application-verification records to delete in one action.
  - `recordIds` string[], required — Record identifiers in '{section}-{index}' format; section must be appVerifications. At most 500 per request.

## Response `200`

At least one record was deleted; body reports the deleted and failed records

- BulkDeleteAppVerificationsResponse — Outcome of an application-verification bulk-delete request, per record.
  - `deleted` string[], required — Record identifiers that were successfully deleted.
  - `failed` BulkDeleteAppVerificationsFailedRecord[], required — Records that could not be deleted, with the reason for each.
    - `recordId` string, required — The record identifier that failed.
    - `reason` string, required — Human-readable reason the record was not deleted.

## Other responses

- `400` — Empty/blank/invalid recordIds, a blank tenant-id, or a missing request body
- `401` — Unauthorized - Authentication required
- `403` — Forbidden - Insufficient permissions
- `404` — Credentialing workflow not found
- `422` — No record was deleted — every recordId failed (malformed, wrong section, out-of-bounds, or duplicate); the body carries the per-record failure reasons
- `500` — Internal server error
- `503` — Feature disabled by kill switch

---

[API](https://skmtc.net/certifyos/apis/certify-api-layer.md) · [All operations](https://skmtc.net/certifyos/apis/certify-api-layer/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/certifyos/certify-api-layer/revisions/563848e0ecc0/schema)
