Suspend an intern
curl --request POST \
--url https://openrouter.ai/api/v1/interns/{internId}/suspend \
--header 'Authorization: Bearer <token>'import requests
url = "https://openrouter.ai/api/v1/interns/{internId}/suspend"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://openrouter.ai/api/v1/interns/{internId}/suspend', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://openrouter.ai/api/v1/interns/{internId}/suspend",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://openrouter.ai/api/v1/interns/{internId}/suspend"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://openrouter.ai/api/v1/interns/{internId}/suspend")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openrouter.ai/api/v1/interns/{internId}/suspend")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"suspended": true
}{
"error": {
"code": 400,
"message": "Invalid request body",
"metadata": {
"reason": "invalid_body",
"retryable": false
}
}
}{
"error": {
"code": 401,
"message": "Invalid or missing API key"
}
}{
"error": {
"code": 403,
"message": "Forbidden"
}
}{
"error": {
"code": 404,
"message": "Intern not found",
"metadata": {
"reason": "not_found",
"retryable": false
}
}
}{
"error": {
"code": 408,
"message": "Operation timed out after 10s. Please try again later.",
"metadata": {
"reason": "timeout",
"retryable": true
}
}
}{
"error": {
"code": 409,
"message": "The intern is not in a state that allows this operation",
"metadata": {
"reason": "intern_busy",
"retryable": false
}
}
}{
"error": {
"code": 413,
"message": "Request body exceeds 1048576 bytes",
"metadata": {
"reason": "payload_too_large",
"retryable": false
}
}
}{
"error": {
"code": 415,
"message": "Request body must be sent as application/json",
"metadata": {
"reason": "unsupported_media_type",
"retryable": false
}
}
}{
"error": {
"code": 500,
"message": "The request could not be completed",
"metadata": {
"reason": "internal_error",
"retryable": true
}
}
}{
"error": {
"code": 502,
"message": "The intern service could not be reached, retry the request",
"metadata": {
"reason": "upstream_unavailable",
"retryable": true
}
}
}Interns
Suspend an intern
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 required.
POST
/
interns
/
{internId}
/
suspend
Suspend an intern
curl --request POST \
--url https://openrouter.ai/api/v1/interns/{internId}/suspend \
--header 'Authorization: Bearer <token>'import requests
url = "https://openrouter.ai/api/v1/interns/{internId}/suspend"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://openrouter.ai/api/v1/interns/{internId}/suspend', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://openrouter.ai/api/v1/interns/{internId}/suspend",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://openrouter.ai/api/v1/interns/{internId}/suspend"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://openrouter.ai/api/v1/interns/{internId}/suspend")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openrouter.ai/api/v1/interns/{internId}/suspend")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"suspended": true
}{
"error": {
"code": 400,
"message": "Invalid request body",
"metadata": {
"reason": "invalid_body",
"retryable": false
}
}
}{
"error": {
"code": 401,
"message": "Invalid or missing API key"
}
}{
"error": {
"code": 403,
"message": "Forbidden"
}
}{
"error": {
"code": 404,
"message": "Intern not found",
"metadata": {
"reason": "not_found",
"retryable": false
}
}
}{
"error": {
"code": 408,
"message": "Operation timed out after 10s. Please try again later.",
"metadata": {
"reason": "timeout",
"retryable": true
}
}
}{
"error": {
"code": 409,
"message": "The intern is not in a state that allows this operation",
"metadata": {
"reason": "intern_busy",
"retryable": false
}
}
}{
"error": {
"code": 413,
"message": "Request body exceeds 1048576 bytes",
"metadata": {
"reason": "payload_too_large",
"retryable": false
}
}
}{
"error": {
"code": 415,
"message": "Request body must be sent as application/json",
"metadata": {
"reason": "unsupported_media_type",
"retryable": false
}
}
}{
"error": {
"code": 500,
"message": "The request could not be completed",
"metadata": {
"reason": "internal_error",
"retryable": true
}
}
}{
"error": {
"code": 502,
"message": "The intern service could not be reached, retry the request",
"metadata": {
"reason": "upstream_unavailable",
"retryable": true
}
}
}Authorizations
API key as bearer token in Authorization header
Path Parameters
ID of an intern visible to the authenticated API key.
Minimum string length:
1Example:
"7c9e6679-7425-40de-944b-e07fc1f90ae7"
Response
Intern suspended.