Getting Started with igloohome API
Build for yourself. This guide will help you authenticate with the igloohome API using the OAuth 2.0 Client Credentials flow — for developers integrating their own igloohome account and devices, not anyone else's. You'll learn how to obtain access tokens and make your first API calls.
Building on behalf of other igloohome account owners instead? See Getting Started with iglooconnect — build for others.
Prerequisites
- An igloohome account
- Access to the igloohome API portal
- Basic understanding of REST APIs and OAuth 2.0
Authentication
OAuth 2.0 Client Credentials Flow
The igloohome API uses the OAuth 2.0 Client Credentials flow for authentication. This flow is designed for server-to-server communication where your application acts on its own behalf.
Reference: OAuth 2.0 RFC 6749, section 4.4
Authentication Flow Diagram
The following diagram illustrates the complete authentication process, from obtaining a token to using it and refreshing it 24 hours later:
Step 1: Obtain Your API Credentials
- Log in to your igloohome API portal
- Navigate to the API Access section
- Copy your Client ID and Client Secret
New to igloohome? Connect your igloohome account to the igloohome API portal to start a 30-day free trial.
Step 2: Encode Your Credentials
Your credentials must be Base64 encoded before use:
- Concatenate your Client ID and Client Secret with a colon:
client_id:client_secret - Base64 encode the result:
Base64Encode(client_id:client_secret)
Example:
This encoded string will be used in the Authorization header as Basic {credentials}.
Step 3: Request an Access Token
Make a POST request to the token endpoint with your encoded credentials.
Endpoint: POST https://auth.igloohome.co/oauth2/token
Required Headers
| Header | Value | Description |
|---|---|---|
| Authorization | Basic {credentials} |
Your Base64 encoded client credentials |
| Content-Type | application/x-www-form-urlencoded |
Required for form data |
Required Parameters
| Parameter | Value | Description |
|---|---|---|
| grant_type | client_credentials |
OAuth 2.0 grant type |
Optional Parameters
| Parameter | Description |
|---|---|
| scope | Space-separated list of permissions. If omitted, all permissions are granted. |
Available Scopes
| Scope | Description |
|---|---|
| igloohomeapi/algopin-permanent | Create permanent access AlgoPIN |
| igloohomeapi/algopin-onetime | Create one-time access AlgoPIN |
| igloohomeapi/algopin-daily | Create daily recurring AlgoPIN |
| igloohomeapi/algopin-hourly | Create hourly recurring AlgoPIN |
| igloohomeapi/create-pin-bridge-proxied-job | Create pins via bridge |
| igloohomeapi/delete-pin-bridge-proxied-job | Delete pins via bridge |
| igloohomeapi/lock-bridge-proxied-job | Lock devices via bridge |
| igloohomeapi/unlock-bridge-proxied-job | Unlock devices via bridge |
| igloohomeapi/get-devices | Retrieve device list |
| igloohomeapi/update-device | Update device setting |
| igloohomeapi/get-master-pin | Get Master PIN |
| igloohomeapi/get-properties | Get Properties |
| igloohomeapi/get-device-status-bridge-proxied-job | Get device status |
| igloohomeapi/get-battery-level-bridge-proxied-job | Get battery levels |
| igloohomeapi/get-activity-logs-bridge-proxied-job | Get activity logs |
| igloohomeapi/get-job-status | Get job status |
| igloohomeapi/create-ekey-access | Generate bluetooth key |
| igloohomeapi/get-device-activity | Get device activity log |
Example Requests
Request all permissions:
Request specific permissions:
Successful Response
When authentication succeeds, you'll receive a JSON response with your access token:
| Field | Description |
|---|---|
| access_token | JWT token for API authentication |
| expires_in | Token lifetime in seconds (86400 = 24 hours) |
| token_type | Always "Bearer" |
Using Your Token
Include your access token in API requests:
Token Management
Token Expiration
Access tokens expire after 24 hours and must be refreshed daily.
Best Practices
- Store tokens securely
- Calculate expiry time:
current_time + expires_in - Implement automatic token refresh before expiration
Error Responses
When authentication fails, you'll receive an error response:
Common Errors
| Error Code | Cause | Solution |
|---|---|---|
| invalid_request | Missing required parameter (e.g., grant_type) | Include all required parameters |
| invalid_client | Invalid Client ID or Secret | Verify credentials in igloohome API portal |
| invalid_scope | Requested scope doesn't exist | Check available scopes list |
Troubleshooting
401 Unauthorized:
- Verify Base64 encoding is correct
- Check Client ID and Secret are valid
400 Bad Request:
- Verify
grant_type=client_credentialsis included - Check Content-Type header is set correctly
- Validate scope parameter format
Usage Examples
Example 1: One-Time PIN Access
For applications that only need to create one-time access pins, limit your scope for better security:
Note: Attempting to create permanent pins with a one-time scope token will result in 403 Forbidden.
Example 2: Device Management Application
For applications that need full device control and monitoring:
Example 3: Property Management System
For comprehensive property management requiring all PIN types and device control: