In addition to standard HTTP status codes, the API returns control device response codes to give more precise, business-specific details about successes or errors encountered during requests. Those codes enable more granular handling of control device logic, useful for IoT devices and developers implementing success-aware and error-aware systems.
| Code | Message | Meaning | Category | 
|---|---|---|---|
| 2000 | Ok | Successful requests | Success | 
| 4000 | Bad Request | Invalid input, malformed request | Client Error | 
| 4001 | Unauthorized | No valid authentication provided | Client Error | 
| 4002 | Payment Required | License or payment required | Client Error | 
| 4003 | Forbidden | Access forbidden due to device policy | Client Error | 
| 4004 | Not Found | Resource not found | Client Error | 
| 4013 | Request Entity Too Large | Payload exceeds allowed size | Client Error | 
| 4022 | Unprocessable Entity | Semantic errors | Client Error | 
| 4029 | Too Many Requests | Rate limit exceeded | Client Error | 
Notes:
Each API response includes both:
For example:
          {
            "code": 4002,
            "error": "You cannot view the control device for the following reasons: the subscription is not active."
          }
        Locally, the control device may use the HTTP status to classify the success or error, and the code to apply specific handling logic (e.g. user-facing messages, conditional retries, or escalation).