AURA
DOCS
AuraMaxxGG
wallet-core/src/loginWithAuraSdk.ts

SDK API

Every method currently exposed by the hosted Login with Aura browser SDK.

SDK API

Aura Browser SDK API

Install

Script

Load the hosted SDK from https://auramaxx.gg/login-with-aura/sdk.js. It exposes a global Aura object in the browser.

<script src="https://auramaxx.gg/login-with-aura/sdk.js" data-aura-origin="https://auramaxx.gg"></script>
<script>
  Aura.configure({
    clientId: "your-app",
    readToken: "aura_pk_..."
  });
</script>

Quick Login

Aura.SigninButton({
  container: "#aura-login",
  clientId: "your-app",
  mode: "light",
  onSuccess(result) {
    console.log(result.walletAddress);
  }
});

Machine-Readable Manifest

Agents and tooling should read https://auramaxx.gg/login-with-aura/sdk.manifest.json or https://auramaxx.gg/docs/sdk-api.json before falling back to raw public API routes. For agent instructions, start with https://auramaxx.gg/agents/sdk/skill.md.

Types And Diagnostics

Intent Map

current signed-in profile
Aura.getUser({ refresh: true })
The app already loaded Login with Aura and needs the fresh public profile for the connected user.
Do not call /api/users/lookup?username=<wallet> from browser code.
profile by wallet address
Aura.getUser({ walletAddress: '0x...' })
A partner has only a wallet address and needs username, avatar, X, Discord, followers, or following.
Do not pass a valid 0x address as username to a custom proxy route.
current signed-in inventory
Aura.getCurrentInventory({ collection?, limit? })
A browser app needs the logged-in user's owned inventory after Sign in with Aura.
Do not hand-build profile lookup plus pack-cards calls.
inventory by wallet
Aura.getInventory({ userAddress: '0x...', collection?, limit? })
A partner needs inventory for a wallet-shaped profile ref, optionally scoped to one collection.
Do not invent /api/aura-profile or /api/aura-inventory app routes unless the app adds its own aggregation.
collection traits and card details
Aura.getInventory({ userAddress, collection, condensed: true })
A game or profile UI needs item traits, details text, collection identity, and pack/back art from inventory rows.
Do not parse the human details string for traits; use attributes, traits, and traitList.
pack or collection metadata
Aura.getPack(slugOrAddress)
A browser app needs collection-level metadata before reading inventory or market data.
Do not hardcode pack ids when a slug or contract address can be resolved by the SDK.
market catalog and offers
Aura.getMarketplaceCatalog(options) and Aura.getMarketplaceOffers(options)
A read-only browser UI needs catalog or offer state without write auth.
Do not use delegated-user or service-wallet auth for read-only market surfaces.

Recipes

Current user and inventory

Use this in browser apps after loading the hosted SDK. It avoids raw user lookup and pack-cards calls.

Aura.configure({ clientId: "your-app", readToken: "aura_pk_..." });

const session = Aura.getSession() || await Aura.signIn({ clientId: "your-app" });
const user = await Aura.getUser({ refresh: true });
const inventory = await Aura.getCurrentInventory({ limit: 200 });
const items = inventory.items || inventory.data;

console.log(session.walletAddress, user.username, items);
Inventory by collection

Use collection slugs or contract addresses; the SDK resolves pack ids and keeps pagination normalized.

const inventory = await Aura.getInventory({
  userAddress: "0xUSER...",
  collection: "aura-caps-test",
  limit: 200
});

const caps = inventory.items.filter((item) => item.type === "LOOT");
console.log(caps[0]?.collectionName, caps[0]?.attributes, caps[0]?.traitList);
Pack and market reads

Use SDK read helpers for pack detail, catalog, and offer state in browser apps.

const pack = await Aura.getPack("aura-caps-test");
const catalog = await Aura.getMarketplaceCatalog({ project: "auramaxxgg" });
const offers = await Aura.getMarketplaceOffers({ address: Aura.getWalletAddress() });

console.log(pack.pack?.name, catalog, offers);
Aura Caps profile and verification

Use this when a partner has a wallet or current session and wants profile, X, and Discord state without a custom /api/aura-profile route.

Aura.configure({ clientId: "aura-caps", readToken: "aura_pk_..." });

const session = Aura.getSession() || await Aura.signIn({ clientId: "aura-caps" });
const profile = await Aura.getUser({ refresh: true });
const byWallet = await Aura.getUser({ walletAddress: session.walletAddress });

console.log({
  username: profile.username || byWallet.username,
  wallet: session.walletAddress,
  x: profile.xConnected ? profile.xHandle : null,
  discord: profile.discordConnected
    ? profile.discordGlobalName || profile.discordUsername
    : null
});
Inventory by wallet with collection art

Use this when a game needs owned items for one wallet and one collection, plus the collection/back image fields.

const inventory = await Aura.getInventory({
  userAddress: "0xUSER...",
  collection: "aura-caps-test",
  limit: 200
});

const items = inventory.items || inventory.data;
const first = items[0];

console.log({
  collectionName: first?.collectionName,
  collectionSlug: first?.collectionSlug,
  collectionImage: first?.collectionImage,
  packImage: first?.packImage,
  itemImage: first?.image
});
Traits, details, and collection styling

Use fields directly from condensed inventory rows; details is display copy, while traits and attributes are structured data.

const inventory = await Aura.getCurrentInventory({
  collection: "aura-caps-test",
  condensed: true,
  limit: 200
});

const cap = inventory.items.find((item) => item.type === "LOOT");
const traits = cap?.traitList || Object.entries(cap?.traits || {}).map(([trait_type, value]) => ({
  trait_type,
  value
}));

console.log({
  details: cap?.details,
  traits,
  rawAttributes: cap?.attributes,
  backArt: cap?.packImage || cap?.collectionImage
});

Response Shapes

Inventory

const inventory = await Aura.getCurrentInventory({ limit: 200 });
const items = inventory.items || inventory.data;
const pageInfo = inventory.meta || inventory.pagination;

const firstCap = items.find((item) => item.type === "LOOT");
console.log(pageInfo, firstCap?.collectionName, firstCap?.attributes, firstCap?.traitList);

Methods

Setup And Login
Aura.configureAura config
Aura.configure({ clientId?, readToken?, apiBaseUrl?, auraOrigin?, origin?, theme?, mode? })
Sets SDK defaults for app attribution, read-token rate limits, the public API base URL, hosted Aura login origin, and preferred button or popup theme.
Aura.getConfig{ apiBaseUrl, auraOrigin, theme }
Aura.getConfig()
Returns the normalized runtime SDK configuration.
Aura.signInPromise<LoginResult>
Aura.signIn({ clientId, auraOrigin?, uxMode?, closeOnSuccess?, keepOpen?, mode?, theme?, scopes?, allowGuest?, onSuccess?, onError?, onClose? })
Opens the hosted Login with Aura popup and resolves with the read-only user, email, and wallet payload. Use uxMode: 'iframe' only for legacy embedded integrations.
Aura.SigninButtonHTMLButtonElement
Aura.SigninButton({ container, clientId, uxMode?, mode?, text?, onSuccess?, onError?, onClose? })
Renders a branded Login with Aura DOM button into the supplied container.
Aura.SignInButtonHTMLButtonElement
Aura.SignInButton(options)
Alias for Aura.SigninButton for integrations that prefer the capital-I spelling.
Aura.SigninWithAuraReact element
<Aura.SigninWithAura clientId="your-app" uxMode="popup" mode="light" onSuccess={fn} />
React-friendly button factory. Pass React through props.React or expose React on window.React.
Aura.React.SigninWithAuraReact element
<Aura.React.SigninWithAura clientId="your-app" />
React namespace alias for the same SigninWithAura button.
Session Helpers
Aura.getCurrentUserUserSummary | null
Aura.getCurrentUser()
Returns the user from the most recent successful hosted login.
Aura.getSessionLoginResult | null
Aura.getSession()
Returns the full read-only login result from the current page session.
Aura.getWalletAddressstring | null
Aura.getWalletAddress()
Returns the wallet address from the most recent successful hosted login.
Aura.clearSessionvoid
Aura.clearSession()
Clears the SDK's locally saved read-only login result for the configured client id.
Public Read Helpers
Aura.requestPromise<any>
Aura.request(path, { apiBaseUrl?, method?, headers?, body?, raw?, signal? })
Low-level JSON request helper against the configured Aura public API base URL.
Aura.getUserPromise<User>
Aura.getUser(userRefOrOptions?, options?)
Looks up the current user, a username, a wallet address, or a user id. Pass `refresh: true` to fetch the full public profile for the signed-in user.
Aura.getInventoryPromise<InventoryResponse>
Aura.getInventory(userRefOrOptions?, { userAddress?, collection?, collections?, limit?, page?, packType?, ownedOnly?, condensed? })
Reads a user's owned inventory through the public pack-cards route. `collection` accepts a slug or contract address and `collections` accepts multiple.
Aura.getCurrentUserInventoryPromise<InventoryResponse>
Aura.getCurrentUserInventory({ collection?, collections?, limit?, page?, packType?, ownedOnly?, condensed? })
Reads inventory for the current page-session user without passing a separate user ref.
Aura.getCurrentInventoryPromise<InventoryResponse>
Aura.getCurrentInventory({ collection?, collections?, limit?, page?, packType?, ownedOnly?, condensed? })
Friendly alias for Aura.getCurrentUserInventory.
Aura.getCreatedPacksPromise<CreatedPacksResponse>
Aura.getCreatedPacks(userRefOrOptions?, { limit?, page?, sort?, status? })
Reads packs created by a user.
Aura.getPackPromise<PackDetail>
Aura.getPack(slugOrAddress, options?)
Reads a pack by slug or contract address.
Aura.getPackStaticPromise<PackStatic>
Aura.getPackStatic(slugOrAddress, options?)
Reads static pack metadata.
Aura.getPackLivePromise<PackLive>
Aura.getPackLive(slugOrAddress, options?)
Reads live pack market and status data.
Aura.getMarketplaceCatalogPromise<CatalogResponse>
Aura.getMarketplaceCatalog({ project?, limit?, cursor?, ...query })
Reads the public marketplace catalog.
Aura.getMarketplaceOffersPromise<OffersResponse>
Aura.getMarketplaceOffers(optionsOrAgentId?)
Reads public marketplace offers. Passing a string delegates to Aura.getMarketplaceSkuOffers.
Aura.getMarketplaceSkuOffersPromise<SkuOffersResponse>
Aura.getMarketplaceSkuOffers(agentId, options?)
Reads public offers for one marketplace agent or SKU.
Aura.getMarketplaceV2OffersPromise<V2OffersResponse>
Aura.getMarketplaceV2Offers(options?)
Reads the v2 public marketplace offers surface.
Aura.getCapabilitiesPromise<TempoCapabilities>
Aura.getCapabilities(options?)
Reads the general Tempo capabilities manifest.
Aura.getDeveloperCapabilitiesPromise<DeveloperCapabilities>
Aura.getDeveloperCapabilities(options?)
Reads the developer-v1 capabilities manifest.
Top-Level Aliases
Aura.getProfilePromise<User>
Aura.getProfile(input?, options?)
Alias for Aura.getUser.
Aura.getPackDetailPromise<PackDetail>
Aura.getPackDetail(slugOrAddress, options?)
Alias for Aura.getPack.
Aura.getCatalogPromise<CatalogResponse>
Aura.getCatalog(options?)
Alias for Aura.getMarketplaceCatalog.
Aura.getOffersPromise<OffersResponse>
Aura.getOffers(options?)
Alias for Aura.getMarketplaceOffers.
Aura.api Namespace
Aura.api.requestPromise<any>
Aura.api.request(path, options?)
Namespace copy of Aura.request.
Aura.api.getUserPromise<User>
Aura.api.getUser(input?, options?)
Namespace copy of Aura.getUser.
Aura.api.getInventoryPromise<InventoryResponse>
Aura.api.getInventory(input?, options?)
Namespace copy of Aura.getInventory.
Aura.api.getCurrentUserInventoryPromise<InventoryResponse>
Aura.api.getCurrentUserInventory(options?)
Namespace copy of Aura.getCurrentUserInventory.
Aura.api.getCurrentInventoryPromise<InventoryResponse>
Aura.api.getCurrentInventory(options?)
Namespace copy of Aura.getCurrentInventory.
Aura.api.getCreatedPacksPromise<CreatedPacksResponse>
Aura.api.getCreatedPacks(input?, options?)
Namespace copy of Aura.getCreatedPacks.
Aura.api.getPackPromise<PackDetail>
Aura.api.getPack(slugOrAddress, options?)
Namespace copy of Aura.getPack.
Aura.api.getPackStaticPromise<PackStatic>
Aura.api.getPackStatic(slugOrAddress, options?)
Namespace copy of Aura.getPackStatic.
Aura.api.getPackLivePromise<PackLive>
Aura.api.getPackLive(slugOrAddress, options?)
Namespace copy of Aura.getPackLive.
Aura.api.getMarketplaceCatalogPromise<CatalogResponse>
Aura.api.getMarketplaceCatalog(options?)
Namespace copy of Aura.getMarketplaceCatalog.
Aura.api.getMarketplaceOffersPromise<OffersResponse>
Aura.api.getMarketplaceOffers(options?)
Namespace copy of Aura.getMarketplaceOffers.
Aura.api.getMarketplaceSkuOffersPromise<SkuOffersResponse>
Aura.api.getMarketplaceSkuOffers(agentId, options?)
Namespace copy of Aura.getMarketplaceSkuOffers.
Aura.api.getMarketplaceV2OffersPromise<V2OffersResponse>
Aura.api.getMarketplaceV2Offers(options?)
Namespace copy of Aura.getMarketplaceV2Offers.
Aura.api.getCapabilitiesPromise<TempoCapabilities>
Aura.api.getCapabilities(options?)
Namespace copy of Aura.getCapabilities.
Aura.api.getDeveloperCapabilitiesPromise<DeveloperCapabilities>
Aura.api.getDeveloperCapabilities(options?)
Namespace copy of Aura.getDeveloperCapabilities.
Need Higher Rate Limits?
Register your app and use its browser-safe read token with the SDK. Unregistered calls fall back to dev-mode attribution.
Current Scope
The browser SDK is read-only after login. It does not export bearer tokens, signing keys, or write permissions.
Document Reference
wallet-core/src/loginWithAuraSdk.ts