Errors
Every failed request returns success: false and an errors array, alongside an HTTP
status code.
{
"success": false,
"errors": [
{
"code": 1,
"message": "Unauthorized access."
}
]
}
Validation errors (HTTP 422, code 23) add a field property naming the request field
that failed, with one entry per field:
{
"success": false,
"errors": [
{
"code": 23,
"message": "email must be an email",
"field": "email"
}
]
}
Branch on code, not on the HTTP status
Most domain errors use HTTP 403, whatever the cause: an operation already in
progress, a missing plan feature or an unknown route all return 403. The HTTP status
alone doesn't tell you what went wrong; the code does. Don't parse message; it's
meant for humans and its wording may change.
The codes you'll meet first
| Code | When |
|---|---|
1 | Missing, invalid or revoked token (401). |
23 | The request body failed validation (422); see field. |
30 | Your subscription doesn't include the feature this endpoint needs, for example remote control (403). See Plans and permissions. |
33 | A malformed request, for example an invalid filter or an unknown query parameter (400). See Conventions. |
214 | An earlier operation on this device hasn't finished (403). Wait for its result before sending another. |
704 | No Gateway has seen the device recently, so a command can't be delivered (403). |
A command that was accepted can still fail on the device. That failure arrives as a
realtime gateway_error event, not as an HTTP error;
see Asynchronous operations.
A few codes are shared by two different errors (for example 101 and 301); the
table lists each one.
All error codes
General
| Code | HTTP status | Message |
|---|---|---|
0 | 500 Internal Server Error | Something went wrong and we couldn't process your request. |
1 | 401 Unauthorized | Unauthorized access. |
2 | 401 Unauthorized | Unauthorized access. |
3 | 401 Unauthorized | Authorization header value is missing. |
4 | 403 Forbidden | No permission. |
5 | 429 Too Many Requests | Too many attempts. |
6 | 404 Not Found | Resource not found. |
7 | 404 Not Found | Table doesn't exist or not set. |
8 | 403 Forbidden | Wrong email/password combination. |
9 | 403 Forbidden | Email not confirmed. |
10 | 422 Unprocessable Entity | Invalid URL signature. |
11 | 403 Forbidden | Not allowed for <role> account role. |
12 | 403 Forbidden | Weblink generation not possible; Product doesn't have any gateways. |
13 | 403 Forbidden | Route not found. |
13 | 404 Not Found | Route not found. |
14 | 403 Forbidden | Cache error. |
15 | 403 Forbidden | Can't set start time to future date. |
16 | 403 Forbidden | Not allowed for <role> account user role. |
17 | 403 Forbidden | You are not a parking management system user. Please contact customer support for more info. |
18 | 403 Forbidden | This resource already exists. |
19 | 403 Forbidden | Not a valid json. |
20 | 422 Unprocessable Entity | 48h time frame for password reset has expired, please request another password reset. |
21 | 403 Forbidden | Resource not assigned to lot. |
23 | 422 Unprocessable Entity | Validation error |
24 | 403 Forbidden | Wrong old password. |
25 | 403 Forbidden | Account with that account_id is not a PMS user. |
26 | 422 Unprocessable Entity | 48h time frame account activation has expired. Contact your admin. |
27 | 422 Unprocessable Entity | The file you uploaded is malformed |
28 | 400 Bad Request | No file was uploaded |
29 | 400 Bad Request | Not enough products to subscribe |
30 | 403 Forbidden | Account missing proper authorization |
31 | 400 Bad Request | You cannot mix subscriptions and licenses |
32 | 422 Unprocessable Entity | License has all product zeroed |
33 | 400 Bad Request | This is a generic bad request error (the message varies) |
34 | 403 Forbidden | Please reset your password. |
35 | 403 Forbidden | Wrong email/password combination. |
36 | 404 Not Found | Email not found. |
37 | 401 Unauthorized | No token provided. |
38 | 400 Bad Request | malformed json |
40 | 503 Service Unavailable | the message to the remote device timed out |
41 | 401 Unauthorized | User needs to be authorized |
43 | 400 Bad Request | Logout is only allowed for account users. |
44 | 400 Bad Request | Too many failed attempts |
45 | 400 Bad Request | Lots filter is required |
Gateways
| Code | HTTP status | Message |
|---|---|---|
100 | 403 Forbidden | Communication with gateway failed. Please try again later. |
101 | 404 Not Found | Gateway is not connected. |
101 | 404 Not Found | Gateway not found. |
102 | 403 Forbidden | Please try again with another signed challenge. |
103 | 403 Forbidden | This gateway can't be used. |
104 | 403 Forbidden | Gateway owner already set. |
105 | 403 Forbidden | Invalid challenge. |
Products and licenses
| Code | HTTP status | Message |
|---|---|---|
200 | 403 Forbidden | Communication with product failed. Please try again later. |
201 | 404 Not Found | Product not found. |
202 | 403 Forbidden | Wrong product signature. |
204 | 403 Forbidden | Not a v2 barrier. |
205 | 403 Forbidden | Master key already exists. |
206 | 403 Forbidden | Master key not found. |
209 | 404 Not Found | Product not found. |
210 | 403 Forbidden | Product operation doesn't exist. |
211 | 403 Forbidden | Product can't be assigned to a lot that doesn't have any gateways. |
212 | 403 Forbidden | Product weblink not valid. |
213 | 403 Forbidden | Product can't handle this request. |
214 | 403 Forbidden | Another product operation is in process. |
215 | 403 Forbidden | Product weblink is not yet valid or has expired. |
216 | 403 Forbidden | Product update properties are missing. |
217 | 403 Forbidden | You have reached maximum products for this license. |
218 | 403 Forbidden | You don't have licenses for this product. |
219 | 403 Forbidden | You can't reduce license purchased count. |
220 | 403 Forbidden | You can't add lpr and product at the same time. |
221 | 403 Forbidden | You can't add license without any products. |
222 | 403 Forbidden | You can't purchase license that is unavailable. |
223 | 403 Forbidden | Lpr camera owner already set. |
224 | 403 Forbidden | You can't update license that has been purchased. |
225 | 403 Forbidden | License with those products already exists. |
226 | 403 Forbidden | You can't request license without any products. |
227 | 403 Forbidden | Previous subscription for that lpr camera doesn't have an activation date set. |
228 | 403 Forbidden | Can't extend lpr storage subscription that is ON HOLD. |
229 | 403 Forbidden | You don't have lpr storage subscription for this camera. |
230 | 403 Forbidden | You can't set end time if is_unlimited is true. |
232 | 400 Bad Request | Lpr Channel not implemented. |
233 | 404 Not Found | No product online. |
234 | 404 Not Found | No product eligible. |
235 | 400 Bad Request | LPR camera is not a HIK device. |
236 | 400 Bad Request | LPR camera is not a AXIS device. |
237 | 403 Forbidden | Product weblink has reached its maximum number of uses. |
Lots and zones
| Code | HTTP status | Message |
|---|---|---|
300 | 403 Forbidden | Communication with lot failed. Please try again later. |
301 | 404 Not Found | Lot not found |
301 | 409 Conflict | LPR Camera not assigned to zone |
302 | 403 Forbidden | Lot maximum products reached. Please add another gateway to lot. |
303 | 404 Not Found | Zone not found. |
304 | 400 Bad Request | No Parking detection active for lot. |
305 | 400 Bad Request | Duplicate parking detection. |
306 | 403 Forbidden | End time is before start time. |
307 | 400 Bad Request | Zone does not belong to lot. |
308 | 400 Bad Request | At zone must have a parking detection camera for live camera view type. |
309 | 400 Bad Request | Zones do not have a vector map. |
310 | 404 Not Found | Zone does not have a vector map. |
Sharing and operation keys
| Code | HTTP status | Message |
|---|---|---|
400 | 500 Internal Server Error | Something went wrong and we couldn't process your request. |
401 | 404 Not Found | Operation key not found. |
402 | 403 Forbidden | End time is required when 'is_unlimited' is false. |
403 | 403 Forbidden | End time must be a future date. |
404 | 403 Forbidden | You can't set <time> time after 2038. |
405 | 403 Forbidden | End time is before start time. |
406 | 404 Not Found | Key file not found. |
407 | 403 Forbidden | Max file rows is <allowedRows> while your file has <uploadedFileRows>. |
408 | 403 Forbidden | <first> time is before <second> time. |
409 | 403 Forbidden | Start time must be a future date. |
410 | 403 Forbidden | Recurring start time must be a future date. |
Updates
| Code | HTTP status | Message |
|---|---|---|
500 | 500 Internal Server Error | Something went wrong with uploading the file. |
501 | 404 Not Found | Update not found. |
Account users
| Code | HTTP status | Message |
|---|---|---|
600 | 403 Forbidden | Account user invitation already exists. |
601 | 400 Bad Request | Account user already exists. |
602 | 403 Forbidden | Phone number has been taken. |
Delivery to devices
| Code | HTTP status | Message |
|---|---|---|
701 | 403 Forbidden | Emit unsuccessful. |
702 | 403 Forbidden | No available gateway was able to execute the command. |
703 | 403 Forbidden | All gateways are offline. |
704 | 403 Forbidden | No rssi signal. |
LPR cameras
| Code | HTTP status | Message |
|---|---|---|
800 | 422 Unprocessable Entity | Socket data invalid. |
801 | 422 Unprocessable Entity | Socket data type handler not found. |
802 | 503 Service Unavailable | LPR camera is offline. |
803 | 403 Forbidden | LPR camera socket cache not found. |
Other
| Code | HTTP status | Message |
|---|---|---|
901 | 404 Not Found | Entry image not found. |
1000 | 400 Bad Request | Cannot move to different lot. |
Terminals
| Code | HTTP status | Message |
|---|---|---|
1100 | 404 Not Found | Terminal challenge not found |
1101 | 401 Unauthorized | Bad challenge signature |
1102 | 400 Bad Request | Challenge expired |
1103 | 503 Service Unavailable | no viable connection to the terminal |
1104 | 428 Precondition Required | Terminal not assigned to zone |
Receivers
| Code | HTTP status | Message |
|---|---|---|
1300 | 403 Forbidden | Receiver not allowed on this zone. |
Tariffs
| Code | HTTP status | Message |
|---|---|---|
1400 | 400 Bad Request | Tariff cannot be deleted because some groups contain members. |
RGB displays
| Code | HTTP status | Message |
|---|---|---|
1500 | 403 Forbidden | Rgb display owner already set. |
1501 | 400 Bad Request | Serial number is not unique. |
1502 | 400 Bad Request | valueTo is required when operator is between. |
1503 | 404 Not Found | RGB display does not exist. |
Sessions
| Code | HTTP status | Message |
|---|---|---|
1501 | 404 Not Found | Associated session not found |
1501 | 409 Conflict | Maximum members per tariff exceeded |
1502 | 403 Forbidden | Member not allowed |
1503 | 422 Unprocessable Entity | Unkown direction |
1505 | 400 Bad Request | No plate reading associated with session |
1506 | 404 Not Found | Session not found |
Next step
See Rate Limits for the 429 case, or the
API Reference for the errors each endpoint can return.