---
title: "Delete DPP passports"
method: POST
path: "/v1/dpp/passports/delete"
tags: ["DPP"]
---

# Delete DPP passports

`POST /v1/dpp/passports/delete`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/dpp/passports/delete`
- Auth: API key in header `X-Api-Key`

Start deleting every DPP passport of the organization matching the filter.

The call returns as soon as the job is accepted; passports disappear as the job progresses. Poll the job referenced by `jobId` to observe completion.

Unlike publish and certify, deletion does **not** cascade: only the passports the filter matches are removed, never the batches or items attached to a matched model.

Only `draft` passports are deleted. A published passport has a public URL and possibly an on-chain anchor, and `draft` → `published` is one-way, so it is never removed.

Passports coming from a read-only source are never deleted either. Both cases are reported in `skippedCount` instead of failing the call.

## Query parameters

- `filters` union[]
  - union
    - object
      - `operator` 'or' | 'and', required
      - `value` union[], required
        - union
          - object
            - `field` 'id', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'createdAt', required
            - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
            - `value` string, date-time, required
          - object
            - `field` 'updatedAt', required
            - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
            - `value` string, date-time, required
          - object
            - `field` 'application.id', required
            - `operator` 'eq', required
            - `value` string, uuid, required
          - object
            - `field` 'status', required
            - `operator` 'eq' | 'ne', required
            - `value` 'draft' | 'published' | 'claimed' | 'archived', required
          - object
            - `field` 'product.idGranularity', required
            - `operator` 'eq', required
            - `value` 'model' | 'batch' | 'item', required
          - object
            - `field` 'product.modelNumber', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'product.batchNumber', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'product.itemNumber', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'product.name', required
            - `operator` 'contains', required
            - `value` string, required
          - object
            - `field` 'mintedTo.id', required
            - `operator` 'eq', required
            - `value` string, uuid, required
          - object
            - `field` 'structureJob', required
            - `operator` 'null' | 'nnull', required
            - `value` unknown, required
          - object
            - `field` 'structureJob.status', required
            - `operator` 'eq', required
            - `value` 'pending' | 'completed' | 'failed', required
          - object
            - `field` 'certifyJob', required
            - `operator` 'null' | 'nnull', required
            - `value` unknown, required
          - object
            - `field` 'certifyJob.status', required
            - `operator` 'eq', required
            - `value` 'pending' | 'completed' | 'failed', required
    - object
      - `field` 'id', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'createdAt', required
      - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
      - `value` string, date-time, required
    - object
      - `field` 'updatedAt', required
      - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
      - `value` string, date-time, required
    - object
      - `field` 'application.id', required
      - `operator` 'eq', required
      - `value` string, uuid, required
    - object
      - `field` 'status', required
      - `operator` 'eq' | 'ne', required
      - `value` 'draft' | 'published' | 'claimed' | 'archived', required
    - object
      - `field` 'product.idGranularity', required
      - `operator` 'eq', required
      - `value` 'model' | 'batch' | 'item', required
    - object
      - `field` 'product.modelNumber', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'product.batchNumber', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'product.itemNumber', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'product.name', required
      - `operator` 'contains', required
      - `value` string, required
    - object
      - `field` 'mintedTo.id', required
      - `operator` 'eq', required
      - `value` string, uuid, required
    - object
      - `field` 'structureJob', required
      - `operator` 'null' | 'nnull', required
      - `value` unknown, required
    - object
      - `field` 'structureJob.status', required
      - `operator` 'eq', required
      - `value` 'pending' | 'completed' | 'failed', required
    - object
      - `field` 'certifyJob', required
      - `operator` 'null' | 'nnull', required
      - `value` unknown, required
    - object
      - `field` 'certifyJob.status', required
      - `operator` 'eq', required
      - `value` 'pending' | 'completed' | 'failed', required
- `sorters` object[]
  - `field` 'id' | 'createdAt' | 'updatedAt', required
  - `order` 'asc' | 'desc', required
- `currentPage` integer
- `pageSize` integer

## Response `202`

Deletion job accepted

- DeleteDppPassportsResultDto
  - `jobId` string, uuid, nullable, required: Identifier of the background job that carries out the action, or null when the filter matched nothing to process. Passports change state as the job progresses, not when this call returns.
  - `eligibleCount` integer, required: Number of passports the job will process (matched passports plus the batches and items cascaded from them). It is what the job starts from, not a count of completed work.
  - `skippedCount` integer, required: Number of matched passports the job will leave untouched, because they are published or come from a read-only source. Known before the job starts, so this count is final.

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
