SimpliSafe API
I’ve been a customer of SimpliSafe for a year now and I’ve found it rather annoying they do not integrate with anyone. The most annoying thing was that I couldn’t use them with IFTTT to do simple but useful integrations with my other smart devices.
After a year of waiting, I decided I’d do it myself, so I downloaded their mobile application and ripped it apart looking at the code that I could and broke out their API spec. Here it is. I plan to build a simple service that will allow you to make use of this more, I suspect SimpliSafe will change their API a few times to try and break this, so if you really want these features you should contact them and let them know.
WARNING: This is unofficial, with zero support, they may reprimand users who take advantage of this, etc etc etc. Use at your own risk.
Note: This requires a paid subscription to use the command features for your security system.
The SimpliSafe API is very simple and straight forward, you run a /login
request which will give you a session, using that session you can proceed to get a list of locations which will give you a location id, the two combined can be used to set or get the state of your security system. There is an /events
method that can be used to get alerts.
SimpliSafe API ¶
Login ¶
LoginPOST/mobile/login
Perform a login request. Possible response_code
s are:
-
1
: Success -
2
: Success (Upgrade available, check responsescurrent_version
in response for latest number) -
3
: Success (Upgrade required) -
4
: Invalid login details.
You will need to save the session
and the uid
responded for use in future requests.
Example URI
- name
string
(required) Example: 123- pass
string
(required) Example: 123- version
number
(required) Example: 1200- device_name
string
(required) Example: Awesome- device_uuid
string
(required) Example: 900000AE09BA
200
Headers
Content-Type: application/json
Body
{
"return_code": 1,
"session": "999999999999999999999",
"uid": "999999",
"username": "hello@example.cm"
}
Locations ¶
Get LocationsPOST/mobile/{uid}/locations
Used to get a list of locations (homes) configured to your account. While this ideally should be a GET
, it’s a POST
without any additional parameters.
These locations have unique identifiers provided, referred to as sid
in the rest of this documentation.
Example URI
- uid
number
(required) Example: 999999
200
Headers
Content-Type: application/json
Body
{
"num_locations": 1,
"locations": {
"555555": {
"street1": "1 Main Street",
"street2": "",
"city": "PopularTown",
"state": "ZZ",
"postal_code": "00000",
"s_status": "20",
"system_state": "Home"
}
}
}
Get Location InforationPOST/mobile/{uid}/sid/{sid}/dashboard
Get information about a specific location, including your current plan, alerts, status, state and some recent history.
NOTE You must include the sid
in the URL and as a request body parameter.
Example URI
- uid
number
(required) Example: 999999- sid
number
(required) Example: 555555
Body
+ sid: `555555` (number, required) The `sid` used, matching the one you provided in the URL.
200
Headers
Content-Type: application/json
Body
{
"return_code": 1,
"location": {
"...": "..."
}
}
Location State ¶
Set System StatePOST/mobile/{uid}/sid/{sid}/set-state
Set the state of your system to one of the supported states.
Supported states are:
-
off
-
home
-
away
The possible response_code
s are:
-
2
: Successfully changed state tooff
. -
3
: Successfully changed state toaway
. -
4
: Successfully changed state tohome
. -
5
: Successful exit delay. -
-9
: User needs to pay for command features.
Example URI
- uid
number
(required) Example: 999999- sid
number
(required) Example: 555555
Body
state=off&mobile=1
200
Headers
Content-Type: application/json
Body
{
"response_code": 2
}
Get System StatePOST/mobile/{uid}/sid/{sid}/get-state
Used to get the current system state.
Response codes are the same for Set System State
above.
Example URI
- uid
number
(required) Example: 999999- sid
number
(required) Example: 555555
Body
mobile=1
200
Headers
Content-Type: application/json
Body
{
"response_code": 2
}
Location Events ¶
Get Event HistoryGET/mobile/{uid}/sid/{sid}/events
Get the event history for the given location.
Example URI
- uid
number
(required) Example: 999999- sid
number
(required) Example: 555555
200
Headers
Content-Type: application/json
Body
{}