August Smart Lock
Cloud REST integration for August- and Yale-branded smart locks. Supports the August Wi-Fi Smart Lock (4th gen), the August Smart Lock Pro with August Connect bridge, the Yale Assure family with the August module, and the newer Yale Approach line that has migrated to the shared Yale Home cloud.
What's controlled
- Remote
lockandunlock get_status— current locked/unlocked state of one lockget_locks— list locks visible to the accountget_lock_detail— full cloud payload (battery, firmware, door-sense, last action)- Status polling — the driver refreshes each zone's state attribute on an interval (default 60s)
Battery level is mirrored to the zone as battery_level (0–100) when the lock reports it.
Prerequisites
- A working August (or Yale Home) account with the lock already paired in the mobile app and reachable via a Connect bridge or built-in Wi-Fi. Cloud commands cannot reach a Bluetooth-only lock with no internet path.
- A long-lived access token for the account. The August cloud requires SMS or email 2FA to mint a token, and August does not publish an OAuth flow — so the token is bootstrapped externally (see below) and pasted into the GEM device row.
- A stable install_id UUID. Reuse the same UUID for every request from this GEM install. If you regenerate the UUID, you must re-run the 2FA flow.
Bootstrapping an access token
This is done once, outside GEM. The three-step flow (paraphrased from public community projects
such as pyaugustapi, gtoken, and yalexs):
- Generate a UUID v4 — this is your install_id.
POST /sessionwith the install_id and your account email/phone — the server returns a session token (not yet validated).POST /validation/phone(or/validation/email) — the cloud sends a 6-digit code.POST /validate/phonewith the code — the response contains the long-lived access token in thex-august-access-tokenresponse header.
Tools like gtoken script this end-to-end. Paste the resulting access_token (and the same
install_id) into the GEM device.
Setup
- Mint the access_token and install_id as above.
- Add a device with driver
august_smart_lock. - Set
access_tokenandinstall_id. Leaveapi_baseon the default unless your account has migrated to Yale Home — in that case, usehttps://api.aaecosystem.com. - Run
get_lockson the device to list the lock UUIDs. - Create one zone per lock; set
zone.addressto the August lockID UUID.
Attributes
Device — required
| Attribute | Type | Description |
|---|---|---|
access_token | secure string | Bearer token from the 2FA bootstrap flow. |
install_id | string | UUID v4. Must match the install_id used to mint the access_token. |
Device — optional
| Attribute | Type | Default | Description |
|---|---|---|---|
api_base | string | https://api-production.august.com | Cloud endpoint. Use https://api.aaecosystem.com for Yale Home migrated accounts. |
api_key | secure string | well-known mobile-client value | The x-august-api-key header value. Only override if you have a private value. |
status_interval | int | 60000 | Status poll interval in ms. Minimum 15000 — the cloud rate-limits aggressive pollers. |
request_timeout | int | 15000 | HTTP request timeout in ms. |
Zones
One zone per lock. zone.address is the August lockID UUID. The driver writes:
state—lockedorunlockedbattery_level— integer 0–100, when the lock reports it
Zone address format
The August lockID as returned by get_locks (32 hex characters, no dashes). Example shape:
ABCDEF1234567890ABCDEF1234567890.
Known limitations
- No push or WebSocket state. August does not expose a stable real-time event channel for third parties — the driver polls. Latency between a manual unlock at the lock face and the cloud reflecting it depends on the Connect bridge being awake.
- No PIN code management. The August
/locks/{id}/pins/*endpoints exist but are not wired in this driver. Use the August app to manage codes for now. - No history / activity feed.
GET /locks/{id}/activityreturns a rich event log; not yet exposed here. - No auto-recovery if the user revokes the token. A revoked token returns 401 and the driver stops trying — admins must paste a fresh token in. There is no silent re-bootstrap path because that would require interactive 2FA.
Troubleshooting
| Symptom | Check |
|---|---|
| 401 on every request | Token revoked or install_id changed. Re-run the bootstrap flow with the same install_id. |
get_locks returns an empty object | The account has no paired locks, or the account migrated to Yale Home — switch api_base to https://api.aaecosystem.com. |
lock / unlock returns 422 | The lock has no internet path. Confirm the Connect bridge is online (or the lock has Wi-Fi). |
| State never updates after a manual unlock | Confirm the bridge is online in the August app. The cloud only reflects local actions when the bridge sees them. |
| Status polling is slow | Cloud rate limits make sub-30s polling unreliable. 60s is the recommended floor. |
See also
genie_aladdin_connect— sibling cloud-REST driver for residential garage controllers.seamapi— Seam's multi-vendor lock cloud, which fronts August/Yale among others; an alternative if the integrator already pays for Seam.