# Delete a private integrator Revoke the integrator's active API key and mark the integrator inactive

`DELETE /api/configuration/operator/integrators/private/{id}`

- **Products:** Operator (`FOH`)
- **Features:** Front of House Generic Access (`FOHGENERIC`)

HTML version: [Delete a private integrator Revoke the integrator's active API key and mark the integrator inactive](https://support.gladstonesoftware.cloud/reference/configuration/delete-a-private-integrator-revoke-the-integrators-active-api-key-and-mark-the-i)

## Overview

Retires a private integrator — an integration registered against one tenant only — by revoking its API key and marking it inactive.

**This is a soft delete of the integrator and a hard revoke of its key.** Two things happen, in this order. The integrator's currently active API key has its status set to `Revoked` with a revocation timestamp. Then the integrator itself is marked inactive (`isActive` `false`), with the modification time and user recorded. The integrator, its key history and its audit trail are all kept.

**What breaks immediately is anything still presenting that API key.** The key is the credential — a `gsk_…` string issued when the integrator was created or last renewed — and once revoked it cannot be un-revoked. Callers using it start failing within seconds rather than instantly, so expect a brief window in which the old key still works. Only the key active for *this* tenant environment is revoked; keys already marked expired or revoked are left as they are.

**There is no undelete endpoint, but the state is reversible in two steps.** The update endpoint writes whatever `isActive` you send it, so it can set a deleted private integrator active again, and the renew-key endpoint issues a fresh key. What you cannot recover is the old key: revocation is permanent, and every integration holding it has to be given the replacement. Treat the key as gone the moment you call this.

**Calling it twice returns `204` both times.** A repeat call finds the already-inactive integrator, finds no active key to revoke, and marks it inactive again. That makes retries safe, but it also means `204` is not proof that the integrator was live when you called.

The endpoint is scoped to the tenant environment resolved from your token. An integrator belonging to another environment, or a global integrator addressed through this route, is treated as though it does not exist.

## Endpoint

`DELETE {base_url}/api/configuration/operator/integrators/private/{id}`

`{base_url}` is the environment URL issued to your integration. See [Authenticating with Gladstone APIs](../../guides/authenticating-with-gladstone-apis.md).

## Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | integer (int32) | Yes | The integrator's numeric identifier, as returned when the private integrator was created or by the list-integrators endpoint. It must be an integer — nothing else is accepted — and it must belong to a private integrator in your own tenant environment. A global integrator's id, or one from a different environment, returns `404` rather than an explanation. |

## Sample request

```bash title="cURL"
curl -X DELETE '{base_url}/api/configuration/operator/integrators/private/{id}' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `400` | Bad request | The tenant environment could not be determined from your token — `Could not resolve tenant environment.`. Nothing is revoked or changed. |
| `404` | Not found | No integrator with that id exists, or it exists but is global rather than private, or it belongs to a different tenant environment. The body is empty, and the three cases are indistinguishable. Note that an already-deleted private integrator does **not** produce this — it returns `204`. |
| `500` | Internal server error | The revoke or the soft delete failed. The two steps are not all-or-nothing, so a failure between them can leave the key revoked while the integrator is still marked active. If you get a `500`, re-read the integrator before assuming either step took effect. |
| `503` | Service unavailable | Not returned by this endpoint. |
