← Protocols
Immutable
NFT / Marketplace·Immutable zkEVM · Immutable X (StarkEx) · EVM

Immutable

01Description

Gaming-focused L2 stack. Immutable zkEVM is a Polygon-CDK-powered zkEVM L2 with gas-free player UX and a built-in orderbook; Passport is the SDK that wraps OAuth-style identity, an embedded MPC wallet, and a transaction relayer. TypeScript, Unity, and Unreal SDKs share the same Passport identity.

02Best for
  • 01web3 games (Unity / Unreal / web)
  • 02gas-free player wallets via Passport
  • 03global orderbook listings/bids
  • 04ERC-721 / ERC-1155 minting at scale via the Minting API
  • 05social login + embedded MPC wallets
03Install
  • pnpm add @imtbl/sdk
04Environment variables
VariableScopeDescription
NEXT_PUBLIC_IMMUTABLE_PUBLISHABLE_KEYClientPublishable API key from Immutable Hub (client-safe).
NEXT_PUBLIC_IMMUTABLE_CLIENT_IDClientPassport OAuth client ID registered in Immutable Hub for your app.
IMMUTABLE_API_KEYServerServer-side API key for Minting API and other privileged endpoints.
05Prompt snippet
Install `@imtbl/sdk` and configure `config.Environment.PRODUCTION` (or SANDBOX). Initialise Passport with `new passport.Passport({ baseConfig, clientId, redirectUri, audience: 'platform_api', scope: 'openid offline_access email transact' })`, then call `passport.login()` and `passport.connectEvm()` to get a viem-compatible provider. Read orderbook state with `orderbookClient.listListings()` / `createListing()`, and mint via the server-side Minting API (queued, gasless for the player). For Unity/Unreal, use `unity-immutable-sdk` / `unreal-immutable-sdk` — same Passport session bridges across.
06Gotchas
  • Passport requires the OAuth `transact` scope to send transactions — apps that only request `openid email` get a wallet that can read but not sign, with confusing 'unauthorized' errors at signTime.
  • zkEVM enforces a global royalty allowlist (Operator Allowlist) — your marketplace contract must be allowlisted, otherwise NFT transfers from it revert. This is the inverse of OpenSea's Operator Filter and trips up devs porting Ethereum L1 marketplaces.
  • Immutable X (StarkEx) and Immutable zkEVM are different chains with different SDKs and asset registries; an NFT minted on IMX is not on zkEVM and vice versa. Migration tooling exists but is not automatic.
  • Minting API is asynchronous and queued — the API returns immediately with a reference ID; poll `getMintRequest` for completion before showing the NFT in UI.
  • Passport uses Auth0-hosted login flows; mobile webviews and embedded browsers (Discord, Twitter in-app) often block the OAuth redirect — recommend external browser or native deep links.
  • Unity SDK requires git-lfs to clone (`.dll` files via Git Large File Storage); skipping this leaves you with broken stub binaries.
07Alternatives