---
title: "Delete an intern"
method: DELETE
path: "/interns/{internId}"
tags: ["Interns"]
---

# Delete an intern

`DELETE /interns/{internId}`

Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{"acknowledge_workspace_loss": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required.

## Path parameters

- `internId` string, required — ID of an intern visible to the authenticated API key.

## Request body

- DeleteInternRequest — Optional consent for a teardown that discards the workspace.
  - `acknowledge_workspace_loss` boolean — Delete even though the workspace backup was not confirmed. Defaults to false, which refuses the teardown when a workspace archive is missing.

## Response `202`

The operation was accepted.

- DeleteInternResponse
  - `deleting` true, required

## Other responses

- `400` — The request body is invalid.
- `401` — Missing, unknown or provisioning API key.
- `403` — The key owner no longer has access, or the request used a regional hostname.
- `404` — The caller is outside the Intern API programme, the intern is hidden, or lifecycle writes are disabled.
- `408` — The request exceeded its route deadline. The deadline quoted in the message is the route's own, so it differs between operations.
- `409` — The intern is not in a state that allows this operation. `metadata.reason` says whether to try again: `intern_busy` means another operation still holds the intern and carries `metadata.retryable: true`, so the same request may be sent again once it settles. A duplicate delete of an intern already being deleted is not a conflict and is accepted with 202.
- `413` — The request body is larger than 1048576 bytes.
- `415` — The request body is non-empty and its Content-Type is not application/json.
- `500` — The request could not be completed. `metadata.reason` says whether to try again: `internal_error` is a transient failure and carries `metadata.retryable: true`, so the same request may be sent again, while `configuration_error` carries `retryable: false` because the next attempt reads the same missing binding or unusable stored credential.
- `502` — The intern service could not accept the operation.

## Changes

- **2026-09-21** `0ca3cbfb629d` — 1 info
  - added the non-success response with the status `415`
- **2026-09-21** `50d23050da7a` — 9 info
  - added the optional property `error/metadata` to the response with the `400` status
  - added the optional property `error/metadata` to the response with the `401` status
  - added the optional property `error/metadata` to the response with the `403` status
  - added the optional property `error/metadata` to the response with the `404` status
  - …5 more
- **2026-09-19** `1212b12392a8` — 1 breaking, 2 info
  - added required request body
  - added the non-success response with the status `400`
  - added the non-success response with the status `413`
- **2026-09-17** `c3b9702bd9d7` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/openrouterteam/apis/openrouter-api/changes/interns/:internId/delete.md)

---

[API](https://skmtc.dev/openrouterteam/apis/openrouter-api.md) · [All operations](https://skmtc.dev/openrouterteam/apis/openrouter-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openrouterteam/apis/openrouter-api/revisions/024c455cb825?raw)
