Error Codes
What got blocked and how to get through — a guide to the error codes
Error codes aren't dead ends — they're signposts that tell you what to do next. Find your code below, follow the "How to fix" column, and most issues clear up in a few minutes.
One word first — plan
Throughout the docs, plan means your subscription level: Basic · Standard · Pro. In the license verification API response this value arrives in the tier field ("basic" · "standard" · "pro") — so the tier field is simply the plan you're on.
License Errors
These come from the license check when the app starts. If the app won't run, start here.
| Code | HTTP | What it means | How to fix |
|---|---|---|---|
LICENSE_NOT_FOUND | 404 | The license key wasn't found | Check that assets/license.key exists |
LICENSE_EXPIRED | 403 | The license period has ended | Renew your subscription and it clears immediately |
LICENSE_INACTIVE | 403 | Not activated yet | Activate it in My Page |
PACKAGE_MISMATCH | 403 | The package name differs from what's registered | Match the package name in your app settings |
SIGNATURE_MISMATCH | 403 | The signature hash differs from what's registered | Re-register the signature hash |
INVALID_SIGNATURE | 401 | HMAC verification failed | Re-issue the license key file |
Authentication Errors
These come from dashboard / account requests.
| Code | HTTP | What it means |
|---|---|---|
UNAUTHORIZED | 401 | The sign-in token is missing or expired — sign in again |
FORBIDDEN | 403 | You don't have permission for this action |
Bridge Errors
These arrive in the result callback when your in-app JavaScript calls window.unveilyBridge.
The shape varies a little
Each bridge returns a slightly different result shape. Cancellation is usually { cancelled: true }, and failure is { error: "..." } or { success: false, error: "..." }. The exact shape is in the "Callback" section of each bridge's page.
| Code | What it means |
|---|---|
CANCELLED | The user cancelled (e.g. closed the scanner) |
PERMISSION_DENIED | No system permission — uncomment the manifest permission / check the iOS Info.plist usage key |
FEATURE_NOT_ALLOWED | Not included in your current plan — it unlocks on a higher plan |
SDK_NOT_READY | Not ready on iOS yet (e.g. Kakao/Naver/Line/Meta login is planned for a future iOS SDK update) |
NOT_SUPPORTED | Not supported on your current plan |
UNAVAILABLE | The device itself doesn't support this (no hardware, etc.) |
TIMEOUT | The response took too long — try again |
When a plan blocks you
You can sidestep these errors by checking availability before you call a feature. Read your current plan from unveilyBridge.app.getInfo() (the tier value), and check module activation with unveilyBridge.modules.isEnabled("...").