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

MethodEndpointDescription
GET/ext/v1/sites/{site_id}/armingGet arming status
POST/ext/v1/sites/{site_id}/arming/actions/armArm the site
POST/ext/v1/sites/{site_id}/arming/actions/disarmDisarm 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

StatusDescription
disarmedSystem is disarmed
armed_awayFull system armed (away mode)
armed_stayPerimeter armed, interior sensors disarmed
armed_nightNight mode arming
armed_customCustom arming configuration
arming_in_progressExit delay in progress
entry_delayEntry 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

FieldTypeRequiredDescription
modestringYesArming mode: away, stay, night, custom
user_codestringYesUser's security code
bypass_zonesarrayNoZone numbers to bypass
force_armbooleanNoForce 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

FieldTypeRequiredDescription
user_codestringYesUser's security code
reasonstringNoReason 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 successfully
  • arming.disarmed - System disarmed
  • arming.failed - Arming attempt failed
  • arming.entry_delay - Entry delay started
  • arming.alarm_triggered - Alarm triggered

See Webhook Events for details.

Next Steps