Nosmai  Effects Nosmai  Moderation Nosmai Try-ons coming soon
Docs menu License key
How-to guide

License key

Create an app-bound key in Nosmai Console, match it to the signed application identity, and understand every verification state.

SDK version Android/iOS 3.0.4 · Flutter 1.0.2 · React Native 1.0.0 · Web preview Updated Aug 22, 2026 Time 6 min

Prerequisites

  • A Nosmai Console account
  • The final Android application ID, iOS bundle identifier, or Web origin
  • The installed Nosmai Effects package for the target platform

Create a project

  1. Sign in to Nosmai Console.
  2. Create a project for the application.
  3. Select the target platform.
  4. Enter the final application identity exactly.
  5. Enable the required Nosmai Effects capabilities.
  6. Copy the generated key into private build configuration.

Do not paste a real key into a public repository, issue, screenshot, analytics event, or support message.

Match the application identity

PlatformRegistered identityCheck it in
AndroidApplication IDApp module applicationId
iOSSigned bundle identifierXcode Signing & Capabilities
Flutter or React NativeThe corresponding native identityAndroid and iOS host projects
WebLicensed originlocation.origin, including scheme and configured port rules

Android and iOS normally use separate keys even when they share one Flutter or React Native codebase.

Initialize once

Initialize at the application or camera-session boundary. Do not initialize in a widget build, render function, list item, or frame callback.

Use the platform quickstart for the exact released method:

An accepted initialization starts the native session. Final online verification can complete asynchronously, so observe the license-status callback where the platform exposes it.

Understand each state

The current native enforcement keeps the host application alive. It does not intentionally crash the process after a delay.

Valid, unverified, invalid, and expired Nosmai license verification states

StateCamera outputApplication action
VALIDNormal output without an enforcement watermarkEnable entitled controls
UNVERIFIEDWatermarked while verification is pending or temporarily unavailableWait, retry with bounded backoff, and keep the state visible
INVALIDStrong full-frame blur plus watermark on native outputBlock the production camera flow and correct the rejection
EXPIREDStrong full-frame blur plus watermark on native output; application remains aliveRestore the project or subscription

The Web preview remains watermarked until verification succeeds, but its current visual enforcement is not identical to native invalid-key blur.

Native 3.0.4 also renders a short enforcement message inside the processed output. LICENSE_EXPIRED shows Nosmai Effects license has expired. Please contact your administrator. MAU_LIMIT_EXCEEDED is treated as an invalid state and shows Monthly usage limit reached. Please contact your administrator. Other confirmed invalid states show Nosmai Effects unavailable. Please contact your administrator. Keep any additional product UI outside the camera preview concise and consistent with the SDK state.

Diagnose a rejection

Server codeWhat to check
API_KEY_INVALIDThe key is complete, active, and not revoked
PACKAGE_ID_MISMATCHThe installed package or bundle identity matches Console exactly
PLATFORM_MISMATCHThe key belongs to the current platform
SDK_VERSION_UNSUPPORTEDThe linked native release is allowed by the project
MAU_LIMIT_EXCEEDEDThe current project usage policy and account status
DEVICE_NOT_REGISTEREDThe device is accepted by project policy
LICENSE_EXPIREDThe project license is current

DNS failures, timeouts, and other transport errors are temporary UNVERIFIED conditions, not proof that a key is invalid.

Plan for offline use

The first successful verification requires the Nosmai licensing service. A signed cached state can support a limited offline period where current account policy allows it. Retry when connectivity returns; never run a tight loop or reuse one key's cached validity for another key.

Keep environments separate

Use different Console projects and identities for development, staging, and production. Inject the selected key through build or runtime configuration and redact it from release logs.

Verify it worked

  1. Start with an active network connection.
  2. Confirm initialization is accepted.
  3. Confirm the final status becomes VALID.
  4. Open the camera and confirm there is no enforcement watermark or blur.
  5. Repeat with the final signed application identity.
  6. Confirm logs and analytics do not contain the complete key.

Common errors

SymptomCauseFix
Initialization returns falseNative startup rejected the requestCheck the complete platform log before starting the preview
Preview remains watermarkedVerification is pending or temporarily unavailableCheck network and status callbacks, then retry with backoff
Preview is blurred and watermarkedVerification returned confirmed INVALID or EXPIREDRead the server code and correct the key, identity, usage limit, or project
Camera error appears after a valid licenseAnother camera owner or device-specific Camera2/AVFoundation failureSeparate camera lifecycle diagnostics from license verification

Next steps

References

Was this page helpful?

Your response helps us prioritize documentation improvements.

Nosmai

An AR and AI company. Founded on the idea that the next decade of software will be visual, and that the tools for it should be within reach of anyone building.

Newsletter

Product updates and release notes. No spam.

© 2026 nosmai, inc · all rights reserved