Jobs API Reference
API endpoints for managing jobs.
Bridge Proxied Jobs
Lock Jobs
Bridge Proxied Jobs send commands to smart locks through a Bridge device. Your application calls the API; the Bridge talks to the lock over Bluetooth.
Send these jobs with Create Bridge Proxied Job.
Job Creation
Create a job by making a POST request to:
Request Parameters
| Parameter | Type | Description |
|---|---|---|
| jobType | number | Command type identifier (see Job Types) |
| jobData | object | Command-specific parameters |
| departmentId | string | Required unless the account has a single department |
Response
Job Types
| Job Type | ID |
|---|---|
| Lock | 1 |
| Unlock | 2 |
| Create Custom PIN code | 4 |
| Delete PIN code | 5 |
| Get Battery Level | 9 |
| Get Device Status | 10 |
| Get Activity Logs | 15 |
Command Details
Lock
Locks the device and optionally synchronizes its internal clock.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| lockTime | ISO_DATE | Synchronize the lock's clock | No |
Request Example
Unlock
Unlocks the device and optionally synchronizes its internal clock.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| lockTime | ISO_DATE | Synchronize the lock's clock | No |
Request Example
Create Custom PIN code
Creates a PIN code with specific access permissions and time restrictions.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| accessName | string | Display name for the PIN code, up to 60 characters | Yes |
| pin | string | 4-6 digit PIN code | Yes |
| pinType | number | PIN type (see table below) | Yes |
| startDate | string | When PIN becomes active (ISO_DATE format) | Yes |
| endDate | string | When PIN expires (ISO_DATE format) | Duration only |
PIN Types
| Type | ID | Description |
|---|---|---|
| One-Time | 1 | Valid for 24 hours from start date |
| Permanent | 2 | Valid indefinitely from start date |
| Duration | 4 | Valid between start and end dates |
Request Example
Usage Examples
One-Time PIN (24-hour validity):
Permanent PIN:
Duration PIN (specific time window):
Delete PIN code
Removes a PIN access from the lock. Identify it by accessId, the ID of the PIN access record from List Device Access.
Note: An unactivated AlgoPIN with a start date more than 256 hours after its creation cannot be deleted.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| accessId | string | ID of the PIN access record to delete | Yes |
Request Example
Get Battery Level
Retrieves the lock's current battery level as a percentage.
Request Example
Get Device Status
Queries the lock's current operational status.
Request Example
Get Activity Logs
Downloads activity logs from the lock. Optionally synchronizes the lock's clock.
Important: Activity logs are deleted from the lock after retrieval.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| lockTime | ISO_DATE | Synchronize the lock's clock | No |
Request Example
Error Status Codes
| Status Code | Description | Applies To |
|---|---|---|
| 400 | Request validation failed (missing or invalid field) | All |
| 401 | Missing, invalid or expired access token | All |
| 402 | Account suspended, or the iglooworks API trial has ended | All |
| 403 | The token lacks the scope for this job type, or the user revoked access | All |
| 404 | No PIN access matches jobData.accessId |
Delete PIN code |
| 406 | A pending job for the same PIN exists, or the PIN is already in use on this lock | Create Custom PIN code |
| 409 | The lock is not associated with the given department | All |
| 415 | Missing Content-Type: application/json |
All |
Get Bridge Job Status
https://api.igloohome.co/works/bridge/jobs/{jobId}Path Parameters
| Parameter | Type | Required |
|---|---|---|
| jobId | string | Yes |
Request Example
Responses
OK.
Unauthorized, invalid or expired authorization token
Forbidden. One of: (1) the token is valid but lacks the required scope for this endpoint (no body); (2) the user revoked the OAuth client's access ('{error: "The user has revoked access for this application..."}').
Job not found.
jobId is not a valid ID.
Response body
jobIdstringexpiryDatestring<date-time>completedbooleanjobTypestringjobResponseobjectjobStatusinteger
0=complete, 1=pending, 2=expired.opResultstring
Absent while the job is pending. Present once a result is recorded.
Response body
errorstring
Response body
errorstring
Response body
errorstring
No example response recorded for this status code.
Example response — 402-account-suspended:
Example response — 402-trial-ended:
No example response recorded for this status code.
Create Bridge Proxied Job
https://api.igloohome.co/works/devices/{deviceId}/jobs/bridges/{bridgeId}Sends a command to a lock through its Bridge: lock, unlock, create or delete a PIN, get status, or get activity logs. The shape of jobData depends on jobType. CREATE_CUSTOM_PIN and DELETE_PIN_CODE have their own sub-schemas; other job types accept an open object.
Path Parameters
| Parameter | Type | Required |
|---|---|---|
| deviceId | string | Yes |
| bridgeId | string | Yes |
Body Parameters
jobTypeinteger required
1=LOCK, 2=UNLOCK, 4=CREATE_CUSTOM_PIN, 5=DELETE_PIN_CODE, 9=GET_BATTERY_LEVEL, 10=GET_DEVICE_STATUS, 15=GET_ACTIVITY_LOGS.- Allowed values:
1,2,4,5,9,10,15
- Allowed values:
jobDataobject
Shape depends on jobType. See the operation summary.departmentIdstring
Required unless the account has a single department, in which case the API ignores it.
Request Example
Responses
OK.
Query/body validation failure.
Unauthorized, invalid or expired authorization token
Forbidden. One of: (1) the token is valid but lacks the required scope for this endpoint (no body); (2) the user revoked the OAuth client's access ('{error: "The user has revoked access for this application..."}').
'jobType=5' (DELETE_PIN_CODE) only. No matching PIN access found for 'jobData.accessId'.
'jobType=4' (CREATE_CUSTOM_PIN) only. A pending job for the same PIN already exists, or the PIN is already in use on this lock.
The lock is not associated with the given department (or the account's only department, for a single-department account).
Missing 'Content-Type: application/json'.
Response body
jobIdstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
No example response recorded for this status code.
Example response — 402-account-suspended:
Example response — 402-trial-ended:
No example response recorded for this status code.
App Sync Jobs
Delete PIN Access
https://api.igloohome.co/works/devices/{id}/access/{accessId}Revokes a PIN access by creating an asynchronous delete job.
Path Parameters
| Parameter | Type | Required |
|---|---|---|
| id | string | Yes |
| accessId | string | Yes |
Request Example
Responses
Delete job created.
Unauthorized, invalid or expired authorization token
Forbidden. One of: (1) the token is valid but lacks the required scope for this endpoint (no body); (2) the user revoked the OAuth client's access ('{error: "The user has revoked access for this application..."}').
Access not found ('{error: "access not found"}').
Response
Missing 'Content-Type: application/json'. The API enforces this header even though this DELETE has no meaningful body fields.
Response body
jobIdstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
No example response recorded for this status code.
Example response — 402-account-suspended:
Example response — 402-trial-ended:
No example response recorded for this status code.
List Device Jobs
https://api.igloohome.co/works/devices/{id}/jobsPath Parameters
| Parameter | Type | Required |
|---|---|---|
| id | string | Yes |
Query Parameters
jobTypestring
Comma-separated, from: delete_pin, create_bluetooth_pin, add_group_key, delete_group_key.statusstring- Allowed values:
pending,complete,failed
- Allowed values:
departmentIdstring
Filter jobs to a single department (not comma-separated, unlike jobType).limitinteger- Constraints:
>= 1,<= 300 - Default:
100
- Constraints:
cursorstringsortstring- Default:
desc - Allowed values:
asc,desc
- Default:
Request Example
Responses
OK.
Query/body validation failure.
Unauthorized, invalid or expired authorization token
Forbidden. One of: (1) the token is valid but lacks the required scope for this endpoint (no body); (2) the user revoked the OAuth client's access ('{error: "The user has revoked access for this application..."}').
Response body
nextCursorstring
Present only if another page exists.payloadarray of object_idstringdescriptionstringstatusstring- Allowed values:
pending,complete,failed
- Allowed values:
accessDataobjectgroupKeyDataobjectcreatedAtstring<date-time>
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
No example response recorded for this status code.
Example response — 402-account-suspended:
Example response — 402-trial-ended:
No example response recorded for this status code.
Create Custom PIN
https://api.igloohome.co/works/devices/{id}/jobsCreates an asynchronous job that sets a custom PIN on the lock over Bluetooth.
Path Parameters
| Parameter | Type | Required |
|---|---|---|
| id | string | Yes |
Body Parameters
descriptionstringdepartmentIdstring
Required unless the account has a single department, in which case the API ignores it.pinTypestring required- Allowed values:
duration,otp,permanent
- Allowed values:
startDateTimestring<date-time> required
FormatYYYY-MM-DDTHH:mm:ss+hh:mm. At most 1 hour in the past.endDateTimestring<date-time>
FormatYYYY-MM-DDTHH:mm:ss+hh:mm. Required only when pinType is duration (must be after startDateTime, at most 1 year later). Forbidden otherwise.customPinstring required
4-6 digits, sent as a string.
Request Example
Responses
Job created.
Bad Request
Unauthorized, invalid or expired authorization token
Forbidden. One of: (1) the token is valid but lacks the required scope for this endpoint (no body); (2) the user revoked the OAuth client's access ('{error: "The user has revoked access for this application..."}').
Response
Missing 'Content-Type: application/json'.
Response body
payloadobject_idstringdescriptionstringstatusstring- Allowed values:
pending,complete,failed
- Allowed values:
accessDataobjectaccessTypestringpinTypestringstartDateTimestring<date-time>endDateTimestring<date-time>descriptionstringcustomPinstring
createdAtstring<date-time>
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
msgstringcodeinteger
No example response recorded for this status code.
Example response — 402-account-suspended:
Example response — 402-trial-ended:
No example response recorded for this status code.
Get Job
https://api.igloohome.co/works/devices/{id}/jobs/{jobId}Path Parameters
| Parameter | Type | Required |
|---|---|---|
| id | string | Yes |
| jobId | string | Yes |
Request Example
Responses
OK.
Unauthorized, invalid or expired authorization token
Forbidden. One of: (1) the token is valid but lacks the required scope for this endpoint (no body); (2) the user revoked the OAuth client's access ('{error: "The user has revoked access for this application..."}').
Job not found.
Response body
payloadobject- Example:
{"_id":"665f1c2a9b3e4d5f6a7b8c9d","accessData":{"accessType":"pin","customPin":"5837","endDateTime":"2026-09-20T18:00:00Z","pinType":"duration","startDateTime":"2026-09-15T10:00:00Z"},"createdAt":"2026-09-13T14:32:45.123Z","description":"create_bluetooth_pin","status":"pending"} _idstringdescriptionstringstatusstring- Allowed values:
pending,complete,failed
- Allowed values:
accessDataobjectgroupKeyDataobjectcreatedAtstring<date-time>
- Example:
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
No example response recorded for this status code.
Example response — 402-account-suspended:
Example response — 402-trial-ended:
No example response recorded for this status code.
Update Job Status
https://api.igloohome.co/works/devices/{id}/jobs/{jobId}Path Parameters
| Parameter | Type | Required |
|---|---|---|
| id | string | Yes |
| jobId | string | Yes |
Body Parameters
statusstring required- Allowed values:
complete,failed
- Allowed values:
reasonstring
Stored only when status is failed.
Request Example
Responses
OK. '{payload: null}' if the job no longer exists at update time.
Query/body validation failure.
Unauthorized, invalid or expired authorization token
Forbidden. One of: (1) the token is valid but lacks the required scope for this endpoint (no body); (2) the user revoked the OAuth client's access ('{error: "The user has revoked access for this application..."}').
Job not found.
Response body
payloadarray_idstringstatusstringaccessDataobjectgroupKeyDataobjectupdatedAtstring<date-time>
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
Response body
errorstring
No example response recorded for this status code.
Example response — 402-account-suspended:
Example response — 402-trial-ended:
No example response recorded for this status code.