---
title: "Suspend an intern"
method: POST
path: "/interns/{internId}/suspend"
tags: ["Interns"]
---

# Suspend an intern

`POST /interns/{internId}/suspend`

Stops the intern runtime while keeping its disk and configuration for a later provision call. This operation takes no request body. A body carrying any field is refused with 400 rather than ignored. 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.

## Response `200`

Intern suspended.

- SuspendInternResponse
  - `suspended` 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 non-success response with the status `400`
  - added the non-success response with the status `413`
  - 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
  - …5 more
- **2026-09-17** `c3b9702bd9d7` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/openrouterteam/apis/openrouter-api/changes/interns/:internId/suspend/post.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/5e8add02feed?raw)
