--- title: Identifiers description: The prefixed IDs Luigi's Box AI uses for organizations, catalogs, channels and surfaces, plus the identity format for catalog objects. slug: concepts/identifiers docKind: reference hub: luigisbox-ai --- Almost every API call names at least one identifier. Luigi's Box AI uses prefixed IDs: the prefix says what a value refers to, and a value pasted into the wrong parameter is rejected. ## Account identifiers These are assigned by Luigi's Box when the entity is created. You never invent them. | Entity | Prefix | Example | Where you use it | |---|---|---|---| | Organization | `lbo_` | `lbo_r2vn8c` | Scoping list endpoints, creating catalogs | | Catalog | `lbc_` | `lbc_8w3k2p` | Indexing, feed configuration, catalog metadata | | Channel | `lbn_` | `lbn_4hj9tv` | Every discovery request, every analytics event | | Campaign | `lbm_` | `lbm_p7q2zx` | [Business rules](/merchandising/business-rules/overview/) | | Rule | `lbr_` | `lbr_2m8xkd` | [Business rules](/merchandising/business-rules/overview/) | | A/B test | `lba_` | `lba_9v3npc` | Experiment reporting | | Tag | `lbt_` | `lbt_k4d7rq` | Grouping catalogs, channels or surfaces | | Sponsored-products provider | `lbad_` | `lbad_9v3npc` | [Sponsored products](/merchandising/sponsored-products/) | | Integration repository | `lbdr_` | `lbdr_8w3k2p` | [Distribution](/distribution/overview/) | The prefix is part of the value. Store and send `lbc_8w3k2p`, never `8w3k2p`. ### Shape An account identifier is a prefix, an underscore, and six characters from [Crockford base32](https://www.crockford.com/base32.html) — the digits `0`–`9` plus the letters `a`–`z` with `i`, `l`, `o` and `u` left out. The canonical form is lowercase. Input is forgiving: uppercase is accepted, hyphens are ignored, and `i`/`l` are read as `1` and `o` as `0`. `LBC-8W3K2P` and `lbc_8w3k2p` name the same catalog. :::note IDs never change. Renaming a catalog or a channel keeps its identifier, because access grants and analytics history are attached to the ID, not the name. ::: ## Surface identifiers A surface is the configured discovery experience your storefront calls. Its ID has three parts: ```text lbs__ ``` - `lbs` — always. - `` — what kind of discovery the surface performs: `search`, `recommender`, or `collection`. - `` — a readable name chosen when the surface is created: lowercase letters, digits and underscores, starting with a letter, up to 48 characters. ```text lbs_search_main lbs_recommender_homepage_carousel lbs_collection_category_pages ``` The intent in the ID says which endpoint the surface belongs to. Sending `lbs_recommender_homepage_carousel` to `/discovery/v1/search` is rejected, because the intent in the ID does not match the endpoint. Slugs are unique within one catalog and intent, so the same catalog cannot have two `lbs_search_main` surfaces — but two different catalogs can. ## Catalog object identity Catalog objects — products, categories, brands, articles — are identified by values *you* choose, not by Luigi's Box. An identity is typed: ```text / ``` For example: ```text product/sku-1001 category/summer-shirts brand/northwear ``` The type prefix must match the object's `@type`. The value part is yours: a SKU, a slug, a database key. It only has to be unique within the catalog and stable over the object's lifetime. The same `/` form is used everywhere an object is referenced — in `@id`, in `@category` and `@brand` references, in the `reference` field of analytics events, and in `ids` sent to the variants endpoint. :::caution[Identity must be stable] Reusing or changing an object's identity breaks the link between the object and its analytics history, ranking signals and recommendations. If a product's key changes in your system, treat it as a delete plus a create — and expect its learned signals to start over. ::: See [Types and IDs](/concepts/catalog-object-model/#types-and-ids) for the ingestion rules, and [Object types and relationships](/concepts/object-types/) for what each type is for. ## Credentials Credentials are not entity identifiers, and they have their own formats. | Credential | Prefix | Used by | |---|---|---| | Publishable key | `pub_` | Browser integrations — safe to ship in page source | | OAuth client ID | `lbk_` | Server-to-server integrations | | OAuth client secret | `lbe_` | Server-to-server integrations — secret, never in a browser | Both parts of a credential carry the environment and region they belong to, so a test key cannot accidentally authenticate against production, and a European client cannot authenticate in the US region. See [Authentication](/authentication/overview/). ## See also - [Domain model](/concepts/domain-model/) — what these entities are and how they relate - [Catalog object model](/concepts/catalog-object-model/) — the shape of an indexed object - [Requests and responses](/api-basics/requests-and-responses/) — where each identifier goes in a call