Create an incident from a call
curl --request POST \
--url http://localhost:3000/api/cad/calls/{id}/convert \
--header 'Content-Type: application/json' \
--cookie __Host-argus-session= \
--data '
{
"priority": "IMMEDIATE",
"type": "Road traffic collision"
}
'import requests
url = "http://localhost:3000/api/cad/calls/{id}/convert"
payload = {
"priority": "IMMEDIATE",
"type": "Road traffic collision"
}
headers = {
"cookie": "__Host-argus-session=",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {cookie: '__Host-argus-session=', 'Content-Type': 'application/json'},
body: JSON.stringify({priority: 'IMMEDIATE', type: 'Road traffic collision'})
};
fetch('http://localhost:3000/api/cad/calls/{id}/convert', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/cad/calls/{id}/convert",
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([
'priority' => 'IMMEDIATE',
'type' => 'Road traffic collision'
]),
CURLOPT_COOKIE => "__Host-argus-session=",
CURLOPT_HTTPHEADER => [
"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 := "http://localhost:3000/api/cad/calls/{id}/convert"
payload := strings.NewReader("{\n \"priority\": \"IMMEDIATE\",\n \"type\": \"Road traffic collision\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("cookie", "__Host-argus-session=")
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("http://localhost:3000/api/cad/calls/{id}/convert")
.header("cookie", "__Host-argus-session=")
.header("Content-Type", "application/json")
.body("{\n \"priority\": \"IMMEDIATE\",\n \"type\": \"Road traffic collision\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/cad/calls/{id}/convert")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["cookie"] = '__Host-argus-session='
request["Content-Type"] = 'application/json'
request.body = "{\n \"priority\": \"IMMEDIATE\",\n \"type\": \"Road traffic collision\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "cmg5z4cal000dl508cal00001",
"caller": "Witness at the scene",
"location": "Park Lane",
"description": "Two cars have collided, one is on its side.",
"receivedAt": "2026-10-06T19:30:00.000Z",
"updatedAt": "2026-10-06T19:42:10.000Z",
"status": "ATTACHED",
"incidentId": "cmg5z1inc0009l508inc00001"
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Request validation failed.",
"details": [
{
"path": [
"priority"
],
"message": "Invalid input"
}
]
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Sign in to continue."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "FORBIDDEN",
"message": "Permission required: cad.calls.manage."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "NOT_FOUND",
"message": "CAD record not found."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "CAD_CONFLICT",
"message": "Unit changed. Refresh before saving."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "The request could not be completed."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}Calls
Create an incident from a call
Permission: cad.calls.manage and cad.incidents.create. Requires cad.view as well, like every Control endpoint.
Access: Browser session, or a service credential holding the permission as a scope.
Creates an incident that inherits the call’s location and description, then attaches the call to it. Read incidentId from the returned call. Two simultaneous conversions create one incident; the loser gets 409.
POST
/
cad
/
calls
/
{id}
/
convert
Create an incident from a call
curl --request POST \
--url http://localhost:3000/api/cad/calls/{id}/convert \
--header 'Content-Type: application/json' \
--cookie __Host-argus-session= \
--data '
{
"priority": "IMMEDIATE",
"type": "Road traffic collision"
}
'import requests
url = "http://localhost:3000/api/cad/calls/{id}/convert"
payload = {
"priority": "IMMEDIATE",
"type": "Road traffic collision"
}
headers = {
"cookie": "__Host-argus-session=",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {cookie: '__Host-argus-session=', 'Content-Type': 'application/json'},
body: JSON.stringify({priority: 'IMMEDIATE', type: 'Road traffic collision'})
};
fetch('http://localhost:3000/api/cad/calls/{id}/convert', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/cad/calls/{id}/convert",
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([
'priority' => 'IMMEDIATE',
'type' => 'Road traffic collision'
]),
CURLOPT_COOKIE => "__Host-argus-session=",
CURLOPT_HTTPHEADER => [
"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 := "http://localhost:3000/api/cad/calls/{id}/convert"
payload := strings.NewReader("{\n \"priority\": \"IMMEDIATE\",\n \"type\": \"Road traffic collision\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("cookie", "__Host-argus-session=")
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("http://localhost:3000/api/cad/calls/{id}/convert")
.header("cookie", "__Host-argus-session=")
.header("Content-Type", "application/json")
.body("{\n \"priority\": \"IMMEDIATE\",\n \"type\": \"Road traffic collision\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/cad/calls/{id}/convert")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["cookie"] = '__Host-argus-session='
request["Content-Type"] = 'application/json'
request.body = "{\n \"priority\": \"IMMEDIATE\",\n \"type\": \"Road traffic collision\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "cmg5z4cal000dl508cal00001",
"caller": "Witness at the scene",
"location": "Park Lane",
"description": "Two cars have collided, one is on its side.",
"receivedAt": "2026-10-06T19:30:00.000Z",
"updatedAt": "2026-10-06T19:42:10.000Z",
"status": "ATTACHED",
"incidentId": "cmg5z1inc0009l508inc00001"
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Request validation failed.",
"details": [
{
"path": [
"priority"
],
"message": "Invalid input"
}
]
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Sign in to continue."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "FORBIDDEN",
"message": "Permission required: cad.calls.manage."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "NOT_FOUND",
"message": "CAD record not found."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "CAD_CONFLICT",
"message": "Unit changed. Refresh before saving."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "The request could not be completed."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}Authorizations
sessionCookieserviceCredential
The opaque session cookie set by Discord sign-in. Named argus-session outside production. HttpOnly, so scripts cannot read it; same-origin requests send it automatically. Requests other than GET must also carry an Origin header equal to the application's own origin.
Path Parameters
Call ID. Argus record identifier.
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$Body
application/json
Response
Success.
Show child attributes
Show child attributes