Cancel task run
curl --request POST \
--url https://api.komos.ai/public/v1/task-runs/{runId}/cancel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reason": "User requested cancellation"
}
'import requests
url = "https://api.komos.ai/public/v1/task-runs/{runId}/cancel"
payload = { "reason": "User requested cancellation" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason: 'User requested cancellation'})
};
fetch('https://api.komos.ai/public/v1/task-runs/{runId}/cancel', 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.komos.ai/public/v1/task-runs/{runId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reason' => 'User requested cancellation'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.komos.ai/public/v1/task-runs/{runId}/cancel"
payload := strings.NewReader("{\n \"reason\": \"User requested cancellation\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.komos.ai/public/v1/task-runs/{runId}/cancel")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"User requested cancellation\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.komos.ai/public/v1/task-runs/{runId}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"User requested cancellation\"\n}"
response = http.request(request)
puts response.read_body{
"run": {
"id": "9c77d908-7bf4-4e7f-9a20-2c5e7fdf2e94",
"taskId": "79c6b1aa-24d1-45b3-8c94-9a2e2a2f55bc",
"status": "PENDING",
"triggerType": "api",
"timestamps": {
"createdAt": "2025-10-14T18:21:52.123Z",
"startedAt": null,
"finishedAt": null
},
"progress": null,
"inputs": {
"url": "https://example.com/orders/48219",
"runHeadless": true
},
"outputs": {},
"logsUrl": "https://api.komos.ai/public/v1/task-runs/9c77d908-7bf4-4e7f-9a20-2c5e7fdf2e94/logs",
"error": null,
"cancelReason": null
}
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Task runs
Cancel Task Run
Request cancellation for an in-flight run.
POST
/
public
/
v1
/
task-runs
/
{runId}
/
cancel
Cancel task run
curl --request POST \
--url https://api.komos.ai/public/v1/task-runs/{runId}/cancel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reason": "User requested cancellation"
}
'import requests
url = "https://api.komos.ai/public/v1/task-runs/{runId}/cancel"
payload = { "reason": "User requested cancellation" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason: 'User requested cancellation'})
};
fetch('https://api.komos.ai/public/v1/task-runs/{runId}/cancel', 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.komos.ai/public/v1/task-runs/{runId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reason' => 'User requested cancellation'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.komos.ai/public/v1/task-runs/{runId}/cancel"
payload := strings.NewReader("{\n \"reason\": \"User requested cancellation\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.komos.ai/public/v1/task-runs/{runId}/cancel")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"User requested cancellation\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.komos.ai/public/v1/task-runs/{runId}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"User requested cancellation\"\n}"
response = http.request(request)
puts response.read_body{
"run": {
"id": "9c77d908-7bf4-4e7f-9a20-2c5e7fdf2e94",
"taskId": "79c6b1aa-24d1-45b3-8c94-9a2e2a2f55bc",
"status": "PENDING",
"triggerType": "api",
"timestamps": {
"createdAt": "2025-10-14T18:21:52.123Z",
"startedAt": null,
"finishedAt": null
},
"progress": null,
"inputs": {
"url": "https://example.com/orders/48219",
"runHeadless": true
},
"outputs": {},
"logsUrl": "https://api.komos.ai/public/v1/task-runs/9c77d908-7bf4-4e7f-9a20-2c5e7fdf2e94/logs",
"error": null,
"cancelReason": null
}
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Submit a cancellation request for a run that is still
PENDING or RUNNING. You can optionally
include a reason to help with audit trails. The response returns the current run payload; subsequent
polling on GET /public/v1/task-runs/{runId} reflects the final status.
Request
Path parameters
runId— UUID of the run to cancel.
Body fields
reason(string, optional) — Free-form text recorded on the run for auditing.
Example
curl -X POST \
https://api.komos.ai/public/v1/task-runs/9c77d908-7bf4-4e7f-9a20-2c5e7fdf2e94/cancel \
-H 'Authorization: Bearer sk_live_example' \
-H 'Content-Type: application/json' \
-d '{ "reason": "User cancelled via dashboard" }'
Responses
202 Accepted— Cancellation was accepted. The response includes the run payload reflecting the latest state. Runs that already reached a terminal status are returned unchanged.400 Bad Request— Invalid run ID.401 Unauthorized— Missing or malformed API key.404 Not Found— The run does not belong to the authenticated organization.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
UUID of the run to cancel.
Body
application/json
Optional cancellation reason recorded for auditing.
Maximum string length:
1024Response
Cancellation accepted.
Show child attributes
Show child attributes
Was this page helpful?