# Delete a push installation

Source: https://kirora.io/docs/api/reference/deletePushInstallation

`DELETE /v1/contacts/{id}/installations/{externalInstallationId}`

Requires an API key with the `contacts:write` scope. [About keys and scopes](https://kirora.io/docs/api/reference/authentication)

Works with integration and partner keys, not agent keys.

Safe to retry: a repeat sets the same values again. [About idempotency](https://kirora.io/docs/api/reference/idempotency)

Stops push to the device you registered as `externalInstallationId` for this contact, in every push app it registered with, as the SDK does on sign-out. Use it on sign-out, or when the device reports its token is no longer valid. The record is kept, marked `active: false`, so `listPushInstallations` still shows it; registering the device again turns it back on. To delete a person's data, delete the contact (`deleteContact`). A device the contact never registered is a 404.

## Path parameters

- `id` (string, required, 1–255 characters) — Kirora's id for the contact, your own with `idType=externalId`, or its email address with `idType=email`, URL-encoded (`@` as `%40`).
- `externalInstallationId` (string, required, 1–128 characters) — Your own id for the device, as registered, URL-encoded.

## Query parameters

- `idType` (string, optional, one of `id`, `externalId`, `email`, default `"id"`) — What `{id}` is: Kirora's id for the contact (`id`, the default), your own (`externalId`, as set with identify) or its email address (`email`, matched trimmed and without case).

## Header parameters

- `Kirora-Workspace` (string, optional, pattern `^[A-Za-z0-9._:-]{1,128}$`) — Partner keys only: the child workspace to act in, by the external id the partner gave it. Without it, a partner key acts in its own workspace. Any other key that sends it is refused with 403, and an unknown workspace is 404.

## Returns

Returns `204 No Content` with an empty body. It can also return `409 Conflict`; see the statuses below. Otherwise returns an error; [Errors](https://kirora.io/docs/api/reference/errors) lists every code and which to retry.

Statuses:

- `204 No Content`: The installation was deleted.
- `409 Conflict`: The request conflicts with current state — a duplicate unique value, or a resource whose status does not allow this operation.

## Example

```bash
curl -X DELETE https://api.kirora.io/v1/contacts/018f2a4e-6b1c-7d3e-9f40-37386ae05a6b/installations/018f2a4e-6b1c-7d3e-9f40-145120bf5a6b \
  -H "Authorization: Bearer $KIRORA_API_KEY"
```
