Individual Account
Overview
This guide helps 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 Partner Account.
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 reauthenticating 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 | Configure device settings |
| 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 |
| igloohomeapi/store-device-activity | Push device activity logs |
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" |
Token Management
Access tokens expire after 24 hours. Client credentials issue no refresh token, so when a token expires, reauthenticate by requesting a new access token with the same call.
Best Practices
- Store tokens securely
- Calculate expiry time:
current_time + expires_in - Request a new token shortly before the current one expires
Implementation
Using Your Token
Include your access token in API requests:
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:
Quick Start Checklist
Before You Begin
- Sign in to the igloohome API portal and open API Access
- Copy your Client ID and Client Secret
Implementation Steps
- Base64 encode your Client ID and Client Secret
- Request an access token with
grant_type=client_credentialsand the scopes your application needs - Call the API with the
Authorization: Bearer {access_token}header - Reauthenticate when the token expires, 24 hours after issue
Testing Your Integration
- Request a token and confirm the response includes
access_tokenandexpires_in - Call
GET https://api.igloohome.co/home/devicesand confirm a 200 response
Troubleshooting
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 |
Status Codes
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
402 Payment Required (on API calls):
- The account's igloohome API trial has ended, or its billing grace period has expired. Check the account's billing status.