API Reference
Arming API
Control and monitor security system arming status
Arming API
Control and monitor the arming status of security systems at customer sites.
Endpoints Overview
| Method | Endpoint | Description |
|---|---|---|
| GET | /ext/v1/sites/{site_id}/arming | Get arming status |
| POST | /ext/v1/sites/{site_id}/arming/actions/arm | Arm the site |
| POST | /ext/v1/sites/{site_id}/arming/actions/disarm | Disarm the site |
Get Arming Status
Retrieve the current arming status of a site.
Endpoint
GET /ext/v1/sites/{site_id}/arming
Request Example
curl -X GET "https://api.chektdev.com/ext/v1/sites/site_123abc/arming" \
-H "Authorization: Bearer YOUR_API_KEY"
Response (200 OK)
{
"data": {
"site_id": "site_123abc",
"arming_status": "armed_away",
"arming_mode": "away",
"armed_at": "2025-01-15T22:00:00Z",
"armed_by": {
"user_id": "user_456",
"name": "John Doe",
"method": "mobile_app"
},
"zones": [
{
"zone_number": 1,
"zone_name": "Front Door",
"status": "armed",
"bypassed": false
},
{
"zone_number": 2,
"zone_name": "Motion Sensor - Living Room",
"status": "armed",
"bypassed": false
},
{
"zone_number": 3,
"zone_name": "Motion Sensor - Bedroom",
"status": "disarmed",
"bypassed": true
}
],
"last_updated": "2025-01-15T22:00:00Z"
}
}
Arming Status Values
| Status | Description |
|---|---|
disarmed | System is disarmed |
armed_away | Full system armed (away mode) |
armed_stay | Perimeter armed, interior sensors disarmed |
armed_night | Night mode arming |
armed_custom | Custom arming configuration |
arming_in_progress | Exit delay in progress |
entry_delay | Entry delay in progress |
Arm the Site
Arm the security system at a site.
Endpoint
POST /ext/v1/sites/{site_id}/arming/actions/arm
Request Body
{
"mode": "away",
"user_code": "1234",
"bypass_zones": [3, 5],
"force_arm": false
}
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | Yes | Arming mode: away, stay, night, custom |
user_code | string | Yes | User's security code |
bypass_zones | array | No | Zone numbers to bypass |
force_arm | boolean | No | Force arm even with open zones |
Request Example
curl -X POST "https://api.chektdev.com/ext/v1/sites/site_123abc/arming/actions/arm" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "away",
"user_code": "1234"
}'
Response (200 OK)
{
"data": {
"site_id": "site_123abc",
"arming_status": "arming_in_progress",
"mode": "away",
"exit_delay_seconds": 60,
"will_arm_at": "2025-01-15T22:01:00Z",
"bypassed_zones": [],
"message": "Exit delay started. Please leave the premises."
}
}
Error Response - Open Zones
{
"error": {
"code": "OPEN_ZONES",
"message": "Cannot arm system with open zones",
"details": {
"open_zones": [
{
"zone_number": 1,
"zone_name": "Front Door",
"status": "open"
}
]
}
}
}
Disarm the Site
Disarm the security system at a site.
Endpoint
POST /ext/v1/sites/{site_id}/arming/actions/disarm
Request Body
{
"user_code": "1234",
"reason": "Owner returning home"
}
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
user_code | string | Yes | User's security code |
reason | string | No | Reason for disarming |
Request Example
curl -X POST "https://api.chektdev.com/ext/v1/sites/site_123abc/arming/actions/disarm" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"user_code": "1234"
}'
Response (200 OK)
{
"data": {
"site_id": "site_123abc",
"arming_status": "disarmed",
"disarmed_at": "2025-01-15T23:00:00Z",
"disarmed_by": {
"user_id": "user_456",
"name": "John Doe"
},
"message": "System successfully disarmed"
}
}
Error Response - Invalid Code
{
"error": {
"code": "INVALID_USER_CODE",
"message": "Invalid user code provided",
"details": {
"attempts_remaining": 2,
"lockout_after": 3
}
}
}
Arming Modes Explained
Away Mode
- All zones armed including perimeter and interior
- Entry delay activated when entry door opens
- Exit delay provides time to leave premises
- Best for when no one is home
Stay Mode
- Perimeter zones armed (doors, windows)
- Interior zones disarmed (motion sensors)
- Allows movement inside while protecting entry points
- Best for nighttime when occupants are home
Night Mode
- Partial arming with custom zone configuration
- Typically arms some interior sensors
- Balance between protection and comfort
- Best for sleeping hours
Custom Mode
- User-defined zone configuration
- Specific zones can be armed or disarmed
- Maximum flexibility for unique situations
Alternative Endpoints
Using Reference ID
GET /ref/v1/sites/{account_reference_id}/arming
POST /ref/v1/sites/{account_reference_id}/arming/actions/arm
POST /ref/v1/sites/{account_reference_id}/arming/actions/disarm
Using Account Number
GET /txid/v1/sites/{account_number}/arming
POST /txid/v1/sites/{account_number}/arming/actions/arm
POST /txid/v1/sites/{account_number}/arming/actions/disarm
Security Considerations
- User Codes: Always transmit over HTTPS. Never log or store user codes.
- Rate Limiting: Arming attempts are rate-limited to prevent brute force attacks
- Audit Trail: All arming/disarming actions are logged with user attribution
- Failed Attempts: Multiple failed code attempts may trigger lockout
Webhooks
Subscribe to arming events via webhooks:
arming.armed- System armed successfullyarming.disarmed- System disarmedarming.failed- Arming attempt failedarming.entry_delay- Entry delay startedarming.alarm_triggered- Alarm triggered
See Webhook Events for details.
Next Steps
- Zones API - Manage individual zones
- Webhook Events - Subscribe to arming events
- Contacts API - Manage emergency contacts