Skip to main content

Overview

The Dispatch API provides endpoints for managing 911 calls, BOLOs (Be On the Lookout), active dispatchers, area of play, and unit status updates.
Most dispatch endpoints require the Dispatch permission.

Get Dispatch Data

curl -X GET https://your-cad.com/api/dispatch \
  -H "Cookie: snaily-cad-access-token=<token>"
Get current dispatch information including area of play and active dispatcher count.

Response

areaOfPlay
string
Current area of play (AOP)
activeDispatchersCount
number
Number of active dispatchers
userActiveDispatcher
object
Current user’s active dispatcher status

Update Area of Play

curl -X POST https://your-cad.com/api/dispatch/aop \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "aop": "Los Santos"
  }'
Update the current area of play.

Request Body

aop
string
required
New area of play

Response

areaOfPlay
string
Updated area of play

Signal 100

curl -X POST https://your-cad.com/api/dispatch/signal-100 \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "value": true,
    "callId": "optional-call-id"
  }'
Enable or disable Signal 100 (emergency - all units standby).

Request Body

value
boolean
required
Enable or disable Signal 100
callId
string
Optional call ID to associate with Signal 100

Response

value
boolean
Current Signal 100 status

Set Dispatcher Active/Inactive

curl -X POST https://your-cad.com/api/dispatch/dispatchers-state \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "value": true
  }'
Set the authenticated user as an active or inactive dispatcher.

Request Body

value
boolean
required
Set dispatcher active (true) or inactive (false)

Response

dispatcher
object
Active dispatcher object (or null if inactive)
activeDispatchersCount
number
Updated count of active dispatchers

Update Active Dispatcher

curl -X PUT https://your-cad.com/api/dispatch/active-dispatcher \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "activeDepartment": "department-id"
  }'
Update the active dispatcher’s department filter.

Request Body

activeDepartment
string
Department ID to filter by (or null for all)

911 Calls

Get All 911 Calls

curl -X GET "https://your-cad.com/api/911-calls?includeEnded=false&skip=0" \
  -H "Cookie: snaily-cad-access-token=<token>"
Get all 911 calls with filtering options.

Query Parameters

includeEnded
boolean
default:"false"
Include ended calls
skip
number
default:"0"
Pagination offset
query
string
Search query
department
string
Filter by department ID
division
string
Filter by division ID
assignedUnit
string
Filter by assigned unit ID

Response

totalCount
number
Total number of calls
calls
array
Array of 911 call objects

Get Call by ID

curl -X GET https://your-cad.com/api/911-calls/{callId} \
  -H "Cookie: snaily-cad-access-token=<token>"
Get a specific 911 call by ID or case number.

Path Parameters

id
string
required
Call ID or case number

Create 911 Call

curl -X POST https://your-cad.com/api/911-calls \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -H "is-from-dispatch: true" \
  -d '{
    "name": "John Doe",
    "location": "123 Main Street",
    "postal": "90210",
    "description": "Suspicious activity reported",
    "type": "call-type-id",
    "situationCode": "situation-code-id"
  }'
Create a new 911 call.

Headers

is-from-dispatch
string
Set to “true” if call is created by dispatch (bypasses approval)

Request Body

name
string
Caller name
location
string
Incident location
postal
string
Postal/zip code
description
string
Call description
type
string
required
Call type ID
situationCode
string
Situation code ID

Update 911 Call

curl -X PUT https://your-cad.com/api/911-calls/{callId} \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Updated call details",
    "postal": "90211"
  }'
Update an existing 911 call.

End 911 Call

curl -X PUT https://your-cad.com/api/911-calls/{callId}/end \
  -H "Cookie: snaily-cad-access-token=<token>"
Mark a 911 call as ended.

BOLOs

Get All BOLOs

curl -X GET "https://your-cad.com/api/bolos?skip=0&type=VEHICLE" \
  -H "Cookie: snaily-cad-access-token=<token>"
Get all Be On the Lookout (BOLO) entries.

Query Parameters

skip
number
default:"0"
Pagination offset
includeAll
boolean
default:"false"
Include all BOLOs
query
string
Search query
type
string
BOLO type: VEHICLE, PERSON, or OTHER

Response

bolos
array
Array of BOLO objects
totalCount
number
Total number of BOLOs

Create BOLO

curl -X POST https://your-cad.com/api/bolos \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "VEHICLE",
    "description": "Stolen vehicle",
    "plate": "ABC123",
    "model": "Honda Civic",
    "color": "Red"
  }'
Create a new BOLO.

Request Body

type
string
required
BOLO type: VEHICLE, PERSON, or OTHER
description
string
required
BOLO description
plate
string
License plate (for vehicles)
model
string
Vehicle model
color
string
Vehicle or person color/description
name
string
Person name (for person BOLOs)

Update BOLO

curl -X PUT https://your-cad.com/api/bolos/{boloId} \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Updated BOLO information"
  }'
Update an existing BOLO.

Delete BOLO

curl -X DELETE https://your-cad.com/api/bolos/{boloId} \
  -H "Cookie: snaily-cad-access-token=<token>"
Delete a BOLO.

Mark Vehicle as Stolen

curl -X POST https://your-cad.com/api/bolos/mark-stolen/{vehicleId} \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "value": true,
    "color": "Red",
    "plate": "ABC123"
  }'
Mark a vehicle as stolen and optionally create a BOLO.

Request Body

id
string
required
Vehicle ID
value
boolean
default:"true"
Mark as stolen (true) or not stolen (false)
color
string
Vehicle color
plate
string
License plate

Search Units

curl -X POST https://your-cad.com/api/dispatch/units/search \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "1A-23"
  }'
Search for active units (officers and deputies).

Request Body

query
string
required
Search query (callsign, name, etc.)

Response

Returns array of matching officers, deputies, and combined units (max 25 each).

Update Unit Radio Channel

curl -X PUT https://your-cad.com/api/dispatch/radio-channel/{unitId} \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "radioChannel": "channel-1"
  }'
Update a unit’s radio channel.

Path Parameters

unitId
string
required
Unit ID (officer, deputy, or combined unit)

Request Body

radioChannel
string
required
Radio channel ID

Tones

Get Active Tones

curl -X GET https://your-cad.com/api/dispatch/tones \
  -H "Cookie: snaily-cad-access-token=<token>"
Get all active notification tones.

Create/Update Tone

curl -X POST https://your-cad.com/api/dispatch/tones \
  -H "Cookie: snaily-cad-access-token=<token>" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Major incident alert",
    "leoTone": true,
    "emsFdTone": true
  }'
Create or update a tone notification.

Request Body

description
string
required
Tone description
leoTone
boolean
Notify LEO units
emsFdTone
boolean
Notify EMS-FD units

Delete Tone

curl -X DELETE https://your-cad.com/api/dispatch/tones/{toneId} \
  -H "Cookie: snaily-cad-access-token=<token>"
Delete an active tone.

Build docs developers (and LLMs) love