15. Error Handling
| Status | Meaning |
|---|---|
200 | Success (including "confirmed no match," e.g. {"item": null}) |
400 | Malformed request (host bug or bad query) |
401 | Missing/invalid auth credential (Locked Addon) |
403 | Valid credential, but access denied - e.g. clients.enforced rejection, or a used-up/expired license |
404 | Resource/id not found |
410 | Addon permanently discontinued (hosts should uninstall/hide it) |
429 | Rate limited - Retry-After header recommended |
5xx | Server error - host should fail over to fallback sources |
Compiled modules should throw a typed error (e.g.
{ code: "UNLOCK_FAILED" | "NOT_FOUND" | "RATE_LIMITED", message }) rather
than a bare string, so hosts can branch the same way they would on an HTTP
status.