{"schemaVersion":"aura.login-sdk.manifest.v1","generatedAt":"2026-05-03T08:25:48.182Z","sdk":{"global":"Aura","scriptUrl":"https://auramaxx.gg/login-with-aura/sdk.js","manifestUrl":"https://auramaxx.gg/login-with-aura/sdk.manifest.json","docsUrl":"https://auramaxx.gg/docs/sdk-api","apiJsonUrl":"https://auramaxx.gg/docs/sdk-api.json","diagnosticsUrl":"https://auramaxx.gg/login-with-aura/diagnostics","llmsUrl":"https://auramaxx.gg/llms.txt","typesUrl":"https://auramaxx.gg/login-with-aura/sdk.d.ts","apiBaseUrl":"https://api.auramaxx.gg","scope":"browser_read_only"},"guidance":{"firstChoice":"For browser-side user, profile, inventory, pack, catalog, or offer reads, use the hosted Aura SDK before raw /api routes.","rawApiUseOnlyWhen":["server-side integration","non-browser agent","bridge or backend job","SDK gap"],"noBearerTokenExport":true,"inventoryShape":"Inventory helpers return { data, items, meta, pagination }. Prefer items for app code and data for compatibility with paginated API clients."},"intentMap":[{"intent":"current signed-in profile","preferredMethod":"Aura.getUser({ refresh: true })","recipeTitle":"Aura Caps profile and verification","useWhen":"The app already loaded Login with Aura and needs the fresh public profile for the connected user.","avoid":"Do not call /api/users/lookup?username=<wallet> from browser code."},{"intent":"profile by wallet address","preferredMethod":"Aura.getUser({ walletAddress: '0x...' })","recipeTitle":"Aura Caps profile and verification","useWhen":"A partner has only a wallet address and needs username, avatar, X, Discord, followers, or following.","avoid":"Do not pass a valid 0x address as username to a custom proxy route."},{"intent":"current signed-in inventory","preferredMethod":"Aura.getCurrentInventory({ collection?, limit? })","recipeTitle":"Current user and inventory","useWhen":"A browser app needs the logged-in user's owned inventory after Sign in with Aura.","avoid":"Do not hand-build profile lookup plus pack-cards calls."},{"intent":"inventory by wallet","preferredMethod":"Aura.getInventory({ userAddress: '0x...', collection?, limit? })","recipeTitle":"Inventory by wallet with collection art","useWhen":"A partner needs inventory for a wallet-shaped profile ref, optionally scoped to one collection.","avoid":"Do not invent /api/aura-profile or /api/aura-inventory app routes unless the app adds its own aggregation."},{"intent":"collection traits and card details","preferredMethod":"Aura.getInventory({ userAddress, collection, condensed: true })","recipeTitle":"Traits, details, and collection styling","useWhen":"A game or profile UI needs item traits, details text, collection identity, and pack/back art from inventory rows.","avoid":"Do not parse the human details string for traits; use attributes, traits, and traitList."},{"intent":"pack or collection metadata","preferredMethod":"Aura.getPack(slugOrAddress)","recipeTitle":"Pack and market reads","useWhen":"A browser app needs collection-level metadata before reading inventory or market data.","avoid":"Do not hardcode pack ids when a slug or contract address can be resolved by the SDK."},{"intent":"market catalog and offers","preferredMethod":"Aura.getMarketplaceCatalog(options) and Aura.getMarketplaceOffers(options)","recipeTitle":"Pack and market reads","useWhen":"A read-only browser UI needs catalog or offer state without write auth.","avoid":"Do not use delegated-user or service-wallet auth for read-only market surfaces."}],"methods":[{"title":"Setup And Login","methods":[{"name":"Aura.configure","signature":"Aura.configure({ clientId?, readToken?, apiBaseUrl?, auraOrigin?, origin?, theme?, mode? })","returns":"Aura config","description":"Sets SDK defaults for app attribution, read-token rate limits, public API base URL, hosted Aura login origin, and preferred theme."},{"name":"Aura.getConfig","signature":"Aura.getConfig()","returns":"{ apiBaseUrl, auraOrigin, theme }","description":"Returns the normalized runtime SDK configuration."},{"name":"Aura.signIn","signature":"Aura.signIn({ clientId, auraOrigin?, uxMode?, closeOnSuccess?, keepOpen?, mode?, theme?, scopes?, allowGuest?, onSuccess?, onError?, onClose? })","returns":"Promise<LoginResult>","description":"Opens the hosted Login with Aura popup and resolves with the read-only user, email, and wallet payload."},{"aliases":["Aura.SignInButton"],"name":"Aura.SigninButton","signature":"Aura.SigninButton({ container, clientId, uxMode?, mode?, text?, onSuccess?, onError?, onClose? })","returns":"HTMLButtonElement","description":"Renders a branded Login with Aura DOM button into the supplied container."},{"name":"Aura.SignInButton","signature":"Aura.SignInButton(options)","returns":"HTMLButtonElement","description":"Alias for Aura.SigninButton."},{"aliases":["Aura.React.SigninWithAura"],"name":"Aura.SigninWithAura","signature":"<Aura.SigninWithAura clientId=\"your-app\" uxMode=\"popup\" mode=\"light\" onSuccess={fn} />","returns":"React element","description":"React-friendly button factory. Pass React through props.React or expose React on window.React."},{"name":"Aura.React.SigninWithAura","signature":"<Aura.React.SigninWithAura clientId=\"your-app\" />","returns":"React element","description":"React namespace alias for the same SigninWithAura button."}]},{"title":"Session Helpers","methods":[{"name":"Aura.getCurrentUser","signature":"Aura.getCurrentUser()","returns":"UserSummary | null","description":"Returns the user from the most recent successful hosted login."},{"name":"Aura.getSession","signature":"Aura.getSession()","returns":"LoginResult | null","description":"Returns the full read-only login result from the current page session."},{"name":"Aura.getWalletAddress","signature":"Aura.getWalletAddress()","returns":"string | null","description":"Returns the wallet address from the most recent successful hosted login."},{"name":"Aura.clearSession","signature":"Aura.clearSession()","returns":"void","description":"Clears the SDK's locally saved read-only login result for the configured client id."}]},{"title":"Public Read Helpers","methods":[{"name":"Aura.request","signature":"Aura.request(path, { apiBaseUrl?, method?, headers?, body?, raw?, signal? })","returns":"Promise<any>","description":"Low-level JSON request helper against the configured Aura public API base URL."},{"aliases":["Aura.getProfile","Aura.api.getUser"],"name":"Aura.getUser","signature":"Aura.getUser(userRefOrOptions?, options?)","returns":"Promise<User>","description":"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.","preferredFor":["current signed-in profile","profile by wallet","profile by username","profile by user id"],"preferredOverRawApi":true},{"aliases":["Aura.api.getInventory"],"name":"Aura.getInventory","signature":"Aura.getInventory(userRefOrOptions?, { userAddress?, collection?, collections?, limit?, page?, packType?, ownedOnly?, condensed? })","returns":"Promise<InventoryResponse>","description":"Reads a user's owned inventory. collection accepts a slug or contract address and collections accepts multiple.","preferredFor":["profile inventory","inventory by wallet","inventory by collection"],"preferredOverRawApi":true},{"aliases":["Aura.getCurrentInventory","Aura.api.getCurrentInventory","Aura.api.getCurrentUserInventory"],"name":"Aura.getCurrentUserInventory","signature":"Aura.getCurrentUserInventory({ collection?, collections?, limit?, page?, packType?, ownedOnly?, condensed? })","returns":"Promise<InventoryResponse>","description":"Reads inventory for the current page-session user without passing a separate user ref.","preferredFor":["current signed-in inventory","current inventory by collection"],"preferredOverRawApi":true},{"aliases":["Aura.getCurrentUserInventory"],"name":"Aura.getCurrentInventory","signature":"Aura.getCurrentInventory({ collection?, collections?, limit?, page?, packType?, ownedOnly?, condensed? })","returns":"Promise<InventoryResponse>","description":"Friendly alias for Aura.getCurrentUserInventory.","preferredFor":["current signed-in inventory","current inventory by collection"],"preferredOverRawApi":true},{"aliases":["Aura.api.getCreatedPacks"],"name":"Aura.getCreatedPacks","signature":"Aura.getCreatedPacks(userRefOrOptions?, { limit?, page?, sort?, status? })","returns":"Promise<CreatedPacksResponse>","description":"Reads packs created by a user.","preferredFor":["created packs","creator collections"],"preferredOverRawApi":true},{"aliases":["Aura.getPackDetail","Aura.api.getPack"],"name":"Aura.getPack","signature":"Aura.getPack(slugOrAddress, options?)","returns":"Promise<PackDetail>","description":"Reads a pack by slug or contract address.","preferredFor":["pack detail","collection detail"],"preferredOverRawApi":true},{"aliases":["Aura.api.getPackStatic"],"name":"Aura.getPackStatic","signature":"Aura.getPackStatic(slugOrAddress, options?)","returns":"Promise<PackStatic>","description":"Reads static pack metadata.","preferredFor":["static pack metadata"],"preferredOverRawApi":true},{"aliases":["Aura.api.getPackLive"],"name":"Aura.getPackLive","signature":"Aura.getPackLive(slugOrAddress, options?)","returns":"Promise<PackLive>","description":"Reads live pack market and status data.","preferredFor":["live pack status","live pack market state"],"preferredOverRawApi":true},{"aliases":["Aura.getCatalog","Aura.api.getMarketplaceCatalog"],"name":"Aura.getMarketplaceCatalog","signature":"Aura.getMarketplaceCatalog({ project?, limit?, cursor?, ...query })","returns":"Promise<CatalogResponse>","description":"Reads the public marketplace catalog.","preferredFor":["marketplace catalog","public catalog"],"preferredOverRawApi":true},{"aliases":["Aura.getOffers","Aura.api.getMarketplaceOffers"],"name":"Aura.getMarketplaceOffers","signature":"Aura.getMarketplaceOffers(optionsOrAgentId?)","returns":"Promise<OffersResponse>","description":"Reads public marketplace offers. Passing a string delegates to Aura.getMarketplaceSkuOffers.","preferredFor":["marketplace offers","offers by wallet"],"preferredOverRawApi":true},{"aliases":["Aura.api.getMarketplaceSkuOffers"],"name":"Aura.getMarketplaceSkuOffers","signature":"Aura.getMarketplaceSkuOffers(agentId, options?)","returns":"Promise<SkuOffersResponse>","description":"Reads public offers for one marketplace agent or SKU.","preferredFor":["offers by agent id","offers by sku"],"preferredOverRawApi":true},{"aliases":["Aura.api.getMarketplaceV2Offers"],"name":"Aura.getMarketplaceV2Offers","signature":"Aura.getMarketplaceV2Offers(options?)","returns":"Promise<V2OffersResponse>","description":"Reads the v2 public marketplace offers surface.","preferredFor":["v2 marketplace offers","order-book offers"],"preferredOverRawApi":true},{"aliases":["Aura.api.getCapabilities"],"name":"Aura.getCapabilities","signature":"Aura.getCapabilities(options?)","returns":"Promise<TempoCapabilities>","description":"Reads the general Tempo capabilities manifest."},{"aliases":["Aura.api.getDeveloperCapabilities"],"name":"Aura.getDeveloperCapabilities","signature":"Aura.getDeveloperCapabilities(options?)","returns":"Promise<DeveloperCapabilities>","description":"Reads the developer-v1 capabilities manifest."}]},{"title":"Top-Level Aliases","methods":[{"name":"Aura.getProfile","signature":"Aura.getProfile(input?, options?)","returns":"Promise<User>","description":"Alias for Aura.getUser."},{"name":"Aura.getPackDetail","signature":"Aura.getPackDetail(slugOrAddress, options?)","returns":"Promise<PackDetail>","description":"Alias for Aura.getPack."},{"name":"Aura.getCatalog","signature":"Aura.getCatalog(options?)","returns":"Promise<CatalogResponse>","description":"Alias for Aura.getMarketplaceCatalog."},{"name":"Aura.getOffers","signature":"Aura.getOffers(options?)","returns":"Promise<OffersResponse>","description":"Alias for Aura.getMarketplaceOffers."}]},{"title":"Aura.api Namespace","methods":[{"name":"Aura.api.request","signature":"Aura.api.request(path, options?)","returns":"Promise<any>","description":"Namespace copy of Aura.request."},{"name":"Aura.api.getUser","signature":"Aura.api.getUser(input?, options?)","returns":"Promise<User>","description":"Namespace copy of Aura.getUser."},{"name":"Aura.api.getInventory","signature":"Aura.api.getInventory(input?, options?)","returns":"Promise<InventoryResponse>","description":"Namespace copy of Aura.getInventory."},{"name":"Aura.api.getCurrentUserInventory","signature":"Aura.api.getCurrentUserInventory(options?)","returns":"Promise<InventoryResponse>","description":"Namespace copy of Aura.getCurrentUserInventory."},{"name":"Aura.api.getCurrentInventory","signature":"Aura.api.getCurrentInventory(options?)","returns":"Promise<InventoryResponse>","description":"Namespace copy of Aura.getCurrentInventory."},{"name":"Aura.api.getCreatedPacks","signature":"Aura.api.getCreatedPacks(input?, options?)","returns":"Promise<CreatedPacksResponse>","description":"Namespace copy of Aura.getCreatedPacks."},{"name":"Aura.api.getPack","signature":"Aura.api.getPack(slugOrAddress, options?)","returns":"Promise<PackDetail>","description":"Namespace copy of Aura.getPack."},{"name":"Aura.api.getPackStatic","signature":"Aura.api.getPackStatic(slugOrAddress, options?)","returns":"Promise<PackStatic>","description":"Namespace copy of Aura.getPackStatic."},{"name":"Aura.api.getPackLive","signature":"Aura.api.getPackLive(slugOrAddress, options?)","returns":"Promise<PackLive>","description":"Namespace copy of Aura.getPackLive."},{"name":"Aura.api.getMarketplaceCatalog","signature":"Aura.api.getMarketplaceCatalog(options?)","returns":"Promise<CatalogResponse>","description":"Namespace copy of Aura.getMarketplaceCatalog."},{"name":"Aura.api.getMarketplaceOffers","signature":"Aura.api.getMarketplaceOffers(options?)","returns":"Promise<OffersResponse>","description":"Namespace copy of Aura.getMarketplaceOffers."},{"name":"Aura.api.getMarketplaceSkuOffers","signature":"Aura.api.getMarketplaceSkuOffers(agentId, options?)","returns":"Promise<SkuOffersResponse>","description":"Namespace copy of Aura.getMarketplaceSkuOffers."},{"name":"Aura.api.getMarketplaceV2Offers","signature":"Aura.api.getMarketplaceV2Offers(options?)","returns":"Promise<V2OffersResponse>","description":"Namespace copy of Aura.getMarketplaceV2Offers."},{"name":"Aura.api.getCapabilities","signature":"Aura.api.getCapabilities(options?)","returns":"Promise<TempoCapabilities>","description":"Namespace copy of Aura.getCapabilities."},{"name":"Aura.api.getDeveloperCapabilities","signature":"Aura.api.getDeveloperCapabilities(options?)","returns":"Promise<DeveloperCapabilities>","description":"Namespace copy of Aura.getDeveloperCapabilities."}]}],"recipes":[{"title":"Current user and inventory","description":"Use this in browser apps after loading the hosted SDK. It avoids raw user lookup and pack-cards calls.","code":"Aura.configure({ clientId: \"your-app\", readToken: \"aura_pk_...\" });\n\nconst session = Aura.getSession() || await Aura.signIn({ clientId: \"your-app\" });\nconst user = await Aura.getUser({ refresh: true });\nconst inventory = await Aura.getCurrentInventory({ limit: 200 });\nconst items = inventory.items || inventory.data;\n\nconsole.log(session.walletAddress, user.username, items);"},{"title":"Inventory by collection","description":"Use collection slugs or contract addresses; the SDK resolves pack ids and keeps pagination normalized.","code":"const inventory = await Aura.getInventory({\n  userAddress: \"0xUSER...\",\n  collection: \"aura-caps-test\",\n  limit: 200\n});\n\nconst caps = inventory.items.filter((item) => item.type === \"LOOT\");\nconsole.log(caps[0]?.collectionName, caps[0]?.attributes, caps[0]?.traitList);"},{"title":"Pack and market reads","description":"Use SDK read helpers for pack detail, catalog, and offer state in browser apps.","code":"const pack = await Aura.getPack(\"aura-caps-test\");\nconst catalog = await Aura.getMarketplaceCatalog({ project: \"auramaxxgg\" });\nconst offers = await Aura.getMarketplaceOffers({ address: Aura.getWalletAddress() });\n\nconsole.log(pack.pack?.name, catalog, offers);"},{"title":"Aura Caps profile and verification","description":"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.","code":"Aura.configure({ clientId: \"aura-caps\", readToken: \"aura_pk_...\" });\n\nconst session = Aura.getSession() || await Aura.signIn({ clientId: \"aura-caps\" });\nconst profile = await Aura.getUser({ refresh: true });\nconst byWallet = await Aura.getUser({ walletAddress: session.walletAddress });\n\nconsole.log({\n  username: profile.username || byWallet.username,\n  wallet: session.walletAddress,\n  x: profile.xConnected ? profile.xHandle : null,\n  discord: profile.discordConnected\n    ? profile.discordGlobalName || profile.discordUsername\n    : null\n});"},{"title":"Inventory by wallet with collection art","description":"Use this when a game needs owned items for one wallet and one collection, plus the collection/back image fields.","code":"const inventory = await Aura.getInventory({\n  userAddress: \"0xUSER...\",\n  collection: \"aura-caps-test\",\n  limit: 200\n});\n\nconst items = inventory.items || inventory.data;\nconst first = items[0];\n\nconsole.log({\n  collectionName: first?.collectionName,\n  collectionSlug: first?.collectionSlug,\n  collectionImage: first?.collectionImage,\n  packImage: first?.packImage,\n  itemImage: first?.image\n});"},{"title":"Traits, details, and collection styling","description":"Use fields directly from condensed inventory rows; details is display copy, while traits and attributes are structured data.","code":"const inventory = await Aura.getCurrentInventory({\n  collection: \"aura-caps-test\",\n  condensed: true,\n  limit: 200\n});\n\nconst cap = inventory.items.find((item) => item.type === \"LOOT\");\nconst traits = cap?.traitList || Object.entries(cap?.traits || {}).map(([trait_type, value]) => ({\n  trait_type,\n  value\n}));\n\nconsole.log({\n  details: cap?.details,\n  traits,\n  rawAttributes: cap?.attributes,\n  backArt: cap?.packImage || cap?.collectionImage\n});"}],"responseSchemas":{"LoginResult":{"authenticated":"boolean","clientId":"string","hasEmail":"boolean","hasPasskey":"boolean","user":"UserSummary","walletAddress":"string"},"User":{"_id":"string | undefined","address":"string | null","addresses":"string[]","avatar":"string | null","bio":"string | null","displayName":"string | null","discordConnected":"boolean | undefined","discordGlobalName":"string | null | undefined","discordId":"string | null | undefined","discordUsername":"string | null | undefined","email":"string | null","followers":"number | undefined","following":"number | undefined","id":"string","isFollowing":"boolean | undefined","isSelf":"boolean | undefined","username":"string | null","verifiedExternalAddresses":"string[]","xConnected":"boolean | undefined","xHandle":"string | null | undefined","xVerifiedAt":"string | null | undefined"},"InventoryResponse":{"data":"CondensedInventoryItem[]","items":"CondensedInventoryItem[]","meta":"{ total, page, limit, totalPages }","pagination":"{ total, page, limit, totalPages }"},"CondensedInventoryItem":{"attributes":"Record<string, unknown>","collectionAddress":"string | null","collectionId":"string | null","collectionImage":"string | null","collectionName":"string | null","collectionSlug":"string | null","details":"string | null","image":"string | null","name":"string","packImage":"string | null","packName":"string","traitList":"{ trait_type, value }[]","traits":"Record<string, unknown>","type":"AURA | PACK | LOOT","weight":"number | null"},"PackDetail":{"allMetadata":"PackCardMetadata[]","pack":"Pack"}},"related":{"diagnostics":"https://auramaxx.gg/login-with-aura/diagnostics","sdkSkill":"https://auramaxx.gg/agents/sdk/skill.md","types":"https://auramaxx.gg/login-with-aura/sdk.d.ts","compactPublicApiSchema":"https://auramaxx.gg/auramaxxgg-public-api-schema-v1.json","openApi":"https://auramaxx.gg/auramaxxgg-tempo-openapi-v1.json"}}