---
title: "Permanently delete a contract by its ID"
method: DELETE
path: "/contracts/{id}"
tags: ["Contracts"]
---

# Permanently delete a contract by its ID

`DELETE /contracts/{id}`

Permanently removes the Contract identified by `{id}`.

**What it does:** This is a hard delete - the record is removed from storage and cannot be recovered; there is no soft-delete/restore path for this resource. Deleting a contract does not cascade to any other entity (plans, networks, etc.); this operation only removes the contract row itself.

**When to use:** Use this endpoint when a contract record must be permanently removed. Ensure you hold the correct `{id}` before calling - there is no undo.

**Preconditions:** Requires the `DELETE_CONTRACT` permission. The `{id}` path parameter is the server-assigned `id` of the contract to delete.

**Response:** Returns `204 No Content` with an empty body on success. This operation is not idempotent: calling it again on the same `id` after a successful delete returns `404`, not a second `204`.

## Path parameters

- `id` string, required

## Headers

- `tenant-id` string, required

## Response `204`

The contract was permanently deleted; no response body.

## Other responses

- `401` — Unauthorized - Authentication required
- `403` — Forbidden - Insufficient permissions
- `404` — No contract exists with the given `id`. This is also returned on a repeat delete of an `id` that was already removed by a prior call.

---

[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)
