---
title: "Delete a signer (schedules signing key deletion)"
method: DELETE
path: "/contracts/v1/signers/{signer_id}"
tags: ["Contracts"]
---

# Delete a signer (schedules signing key deletion)

`DELETE /contracts/v1/signers/{signer_id}`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/contracts/v1/signers/{signer_id}`
- Auth: HTTP bearer

Schedules the signing key for deletion (7-day AWS minimum window). Requires header X-Confirm-Delete: <signer_id>. Lifecycle-gated for non-active projects. Refused with 409 if balance >= dust — drain the wallet first.

## Path parameters

- `signer_id` string, required

## Headers

- `X-Confirm-Delete` string, required

## Response `200`

Wallet deleted

- SignerDeleteResponse
  - `id` string, required
  - `status` 'deleted', required
  - `deleted_at` string, date-time, required
  - `kms_deletion_completes_at` string, date-time

## Other responses

- `400`: Missing/wrong confirmation header
- `403`: Project is past_due/frozen/dormant — control-plane gated
- `409`: Wallet has on-chain balance — drain first

---

[API](https://skmtc.dev/run402/apis/run402-api.md) · [All operations](https://skmtc.dev/run402/apis/run402-api/llms.txt) · [OpenAPI document](https://skmtc.dev/run402/apis/run402-api/revisions/893607557f50?raw)
