Introduction
Alarms are triggered events (from a camera, device, and other incident detection or reporting solution) to signal a response to be performed by a guard. Just like direct Dispatching, an Alarm leads to the creation of a Dispatch Task and an associated Workflow.
Alarms and locations to respond to are dynamic scenarios, so at times there will be a pre-defined Client Site to dispatch to, or just an address/GPS coords as a one-time location. For pre-defined Client Sites the pre-configuration of Alarm Types, Alarm Organizations and Alarm Connections is required.
The information you provide in an Alarm payload when using the TrackTik API to signal an alarm will be used for searching on these connective tissues, so you don't have to replicate the configuration entirely with each new Alarm record. Searches for configuration will occur through the values of keys such as alarmConnectionCustomId, alarmTypeCode, and alarmOrganization.
NB: there are more pre-configuration options in TrackTik's web application compared to the API, so it's best to work with an administrator to align on data expectations before beginning the integration. The developer shouldn't take everything on themselves. This is comparable to direct Dispatch Task creation that requires agreement and existing knowledge of Task Types and Report Template fields.
Also, please know that at time of writing of this documentation, while the API interface for adding attachments to to Alarms is fully functional, these attachments cannot be referenced via Dispatch or Alarm views in the TrackTik web application. That GUI integration is coming soon.
Creating an Alarm
Based on the minimum required fields, you need to at least provide information on:
- The originating alarm trigger and its identifiers
- Which Alarm Organization in the TrackTik system is responsible (a Client Site with that property set)
- A location to dispatch to
- Trigger date and time information in UTC
- Any base information the guard needs to see for when On Site
- Any additional notes
- Media attachments to establish context (currently only images are supported)
Here's an example of a basic Alarm creation payload:
[POST] /alarms
{
"alarmConnectionCustomId": "ab-95367",
"alarmTypeCode": "11111",
"alarmOrganization": 687,
"location": {
"name": null,
"addressLine1": "4200 Blvd Saint-Laurent",
"addressLine2": null,
"city": "Montréal",
"state": "QC",
"country": "CA",
"postalCode": "H2W 2R2",
"latitude": 45.518336643702625,
"longitude": -73.58218751610286
},
"triggeredOn": "2026-05-26T14:36:37+00:00",
"registeredOn": "2026-05-26T14:36:37+00:00",
"onSiteInformation": {
"instructions": "Follow the instructions",
"sensitiveInformation": null,
"extraInformation": null,
"sla": 110
},
"notes": [
{ "comment": "string"},
{ "comment": "string2"}
],
"attachments": [
{
"base64EncodedData": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCORXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQA etc.",
"mimeType": "image/jpeg"
}
]
}Fuller Open API specifications are available.
After the Alarm is created, a Dispatch Task will automatically be created to participate in the full dispatch business process. You'll see its id defined in the response payload via the dispatchTask key. For an expanded look at building integrations based on Dispatch Tasks, please consult our guide.
You'll also notice that a customId value is auto-generated for this alarm to assist in the integration with the originating alarm/trigger system.
Here's an example of the response:
{
"customId": "019e65ad-baa7-7338-b568-769efa18aeff",
"alarmConnectionCustomId": "ab-95367",
"alarmTypeCode": "11111",
"alarmOrganization": 687,
"location": {
"name": null,
"addressLine1": "4200 Blvd Saint-Laurent",
"addressLine2": null,
"city": "Montréal",
"state": "QC",
"country": "CA",
"postalCode": "H2W 2R2",
"latitude": 45.518336643702625,
"longitude": -73.58218751610286
},
"triggeredOn": "2026-05-26T14:36:37+00:00",
"registeredOn": "2026-05-26T14:36:37+00:00",
"onSiteInformation": {
"instructions": "Follow the instructions",
"sensitiveInformation": null,
"extraInformation": null,
"sla": 110
},
"alarmConnection": null,
"dispatchTask": 683,
"status": "ACTIVE",
"id": 22
}The default response won't show relation list items like notes and attachments. You'll have to request those from the persisted record yourself like so:
[GET] /alarms/22?include=notes,attachments
{
"customId": "019e65ad-baa7-7338-b568-769efa18aeff",
"alarmConnectionCustomId": "ab-95367",
"alarmTypeCode": "11111",
"alarmOrganization": 687,
"location": {
"name": null,
"addressLine1": "4200 Blvd Saint-Laurent",
"addressLine2": null,
"city": "Montréal",
"state": "QC",
"country": "CA",
"postalCode": "H2W 2R2",
"latitude": 45.518336643702625,
"longitude": -73.58218751610286
},
"triggeredOn": "2026-05-26T14:36:37+00:00",
"registeredOn": "2026-05-26T14:36:37+00:00",
"onSiteInformation": {
"instructions": "Follow the instructions",
"sensitiveInformation": null,
"extraInformation": null,
"sla": 110
},
"alarmConnection": null,
"dispatchTask": 683,
"status": "ACTIVE",
"id": 22,
"attachments": [
{
"url": "https://innovation.staffr.net/rest/v1/media/14103/1882b426bfd9b15371d1bb5fea4872fd5b08b535",
"tag": "ATTACHMENT_0",
"format": "jpeg",
"name": "frombase64.jpeg",
"id": 14103,
"uuid": "019e65ad-bd23-7155-82db-5de21e171f7b"
}
],
"notes": [
{
"comment": "string",
"createdBy": 1002,
"createdOn": "2026-05-26T19:05:45+00:00",
"type": "COMMENT",
"sentFrom": "",
"id": 102443
},
{
"comment": "string2",
"createdBy": 1002,
"createdOn": "2026-05-26T19:05:45+00:00",
"type": "COMMENT",
"sentFrom": "",
"id": 102445
}
]
}