Serverless
Delete a serverless endpoint
Permanently deletes a serverless endpoint and its bound template. This is irreversible: all workers are terminated and any queued or in-progress jobs are cancelled.
DELETE
/
v2
/
serverless
/
{id}
Delete a serverless endpoint
curl --request DELETE \
--url https://api.runpod.io/v2/serverless/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.runpod.io/v2/serverless/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.runpod.io/v2/serverless/{id}', 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://api.runpod.io/v2/serverless/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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://api.runpod.io/v2/serverless/{id}"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.runpod.io/v2/serverless/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runpod.io/v2/serverless/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"title": "Unauthorized",
"status": 401,
"detail": "missing bearer token"
}{
"title": "Forbidden",
"status": 403,
"detail": "access denied"
}{
"title": "Not Found",
"status": 404,
"detail": "resource not found"
}{
"title": "Too Many Requests",
"status": 429,
"detail": "rate limit exceeded for the minute window"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"errors": [
"<string>"
]
}Authorizations
Runpod API key authentication. Generate an API key in the Runpod console and send it in the Authorization header as Bearer <api_key>. Keys are scoped to the permissions granted when created; requests may return 403 when a valid key lacks access to the requested resource or action.
Path Parameters
Serverless endpoint identifier
Response
Deleted. Response has no body.
Last modified on August 14, 2026
Was this page helpful?
⌘I
Delete a serverless endpoint
curl --request DELETE \
--url https://api.runpod.io/v2/serverless/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.runpod.io/v2/serverless/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.runpod.io/v2/serverless/{id}', 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://api.runpod.io/v2/serverless/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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://api.runpod.io/v2/serverless/{id}"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.runpod.io/v2/serverless/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runpod.io/v2/serverless/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"title": "Unauthorized",
"status": 401,
"detail": "missing bearer token"
}{
"title": "Forbidden",
"status": 403,
"detail": "access denied"
}{
"title": "Not Found",
"status": 404,
"detail": "resource not found"
}{
"title": "Too Many Requests",
"status": 429,
"detail": "rate limit exceeded for the minute window"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"errors": [
"<string>"
]
}