Registering Build Identifiers
Register your platform identifiers in Console so the customizer accepts requests from your build. This is the one-time setup every shipping app needs — and the most common cause of 403 errors when it's missed.
Why register?
Every customizer session is minted on Ava-Twin's server, and every mint is gated by the platform identifier of the build making the request. Console is where you tell us which builds are allowed: register an origin (web) or bundle ID (native), and only requests from that build will succeed.
This means an API key on its own can't be used to mint sessions from a build you don't control. Stolen keys without a matching registered identifier get rejected at the edge.
Per-platform identifier formats
The format you register depends on which platform Unity reports at runtime via Application.platform. Here's what to register for each:
| Platform | Register | Examples |
|---|---|---|
WebGL WebGLPlayer | Origin (host) — wildcards supported | mygame.com *.mygame.com mygame.com:8080 |
Android Android | Java package name | com.mycompany.mygame |
iOS IPhonePlayer | CFBundleIdentifier | com.mycompany.mygame |
Windows standalone WindowsPlayer | reverse-DNS bundle ID | com.mycompany.mygame.win |
macOS standalone OSXPlayer | reverse-DNS bundle ID | com.mycompany.mygame.mac |
Linux standalone LinuxPlayer | reverse-DNS bundle ID | com.mycompany.mygame.linux |
BUNDLE_NOT_ALLOWED.How registration works in Console
WebGL wildcards
Wildcards let one registered origin cover multiple subdomains:
*.example.commatchesapp.example.comandstaging.example.com— but not bareexample.com.- TLD wildcards (
*.com,*.io,*.co.uk) are rejected — too broad. - Use a wildcard if you have multiple subdomain environments (dev / staging / prod) and want to cover them with one entry.
Localhost auto-allow (development convenience)
localhost and 127.0.0.1 (any port) are always allowed for WebGL — you don't need to register them. Local dev just works.Plan-tier filter
Which platforms can be registered depends on your plan:
| Plan | Registerable platforms |
|---|---|
| Free | WebGL only |
| Indie | WebGL + iOS + Android |
| Studio / Agency / Enterprise | All 6 platforms (incl. Windows / macOS / Linux) |
See Pricing & Plans for the full plan comparison.
Error reference
When the customizer rejects a session mint, the response includes a machine-readable code. Match it to the table below for the fix:
| Code | When | Fix |
|---|---|---|
| ORIGIN_NOT_REGISTERED | WebGL request to a platform with no origin registered. | Register an origin in Console for this app's WebGL slot. |
| ORIGIN_NOT_ALLOWED | The browser's Origin doesn't match the registered value. | Update Console to match (typo? wrong subdomain?). |
| BUNDLE_NOT_REGISTERED | Native build with no bundle ID registered for that platform. | Register the bundle ID in Console for that platform. |
| BUNDLE_NOT_ALLOWED | SDK-reported bundle doesn't match registered. | Update Console (typo? case mismatch — must be lowercase). |
| PARENT_ORIGIN_REQUIRED | Customizer iframe couldn't determine parent origin. | Browser referrer-policy issue — see notes below. |
| PARENT_ORIGIN_INVALID | document.referrer not a valid URL. | Rare; usually browser misconfig. |
Browser referrer policy
If your game's pages set <meta name="referrer" content="no-referrer"> or Referrer-Policy: no-referrer, the customizer can't determine its parent origin and you'll see PARENT_ORIGIN_REQUIRED. Use strict-origin-when-cross-origin (the default) or origin.