Pre-launch API. The concepts described here are settled, but the API shape is not: request and response fields, parameters and defaults can still change. Build against it, and talk to your Luigi's Box contact before you put an integration into production.
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
Section titled “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 |
| Rule | lbr_ | lbr_2m8xkd | Business rules |
| 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 |
| Integration repository | lbdr_ | lbdr_8w3k2p | Distribution |
The prefix is part of the value. Store and send lbc_8w3k2p, never 8w3k2p.
An account identifier is a prefix, an underscore, and six characters from
Crockford base32 — 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.
Surface identifiers
Section titled “Surface identifiers”A surface is the configured discovery experience your storefront calls. Its ID has three parts:
lbs_<intent>_<slug>lbs— always.<intent>— what kind of discovery the surface performs:search,recommender, orcollection.<slug>— a readable name chosen when the surface is created: lowercase letters, digits and underscores, starting with a letter, up to 48 characters.
lbs_search_mainlbs_recommender_homepage_carousellbs_collection_category_pagesThe 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
Section titled “Catalog object identity”Catalog objects — products, categories, brands, articles — are identified by values you choose, not by Luigi’s Box. An identity is typed:
<type>/<value>For example:
product/sku-1001category/summer-shirtsbrand/northwearThe 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 <type>/<value> 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.
See Types and IDs for the ingestion rules, and Object types and relationships for what each type is for.
Credentials
Section titled “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.
See also
Section titled “See also”- Domain model — what these entities are and how they relate
- Catalog object model — the shape of an indexed object
- Requests and responses — where each identifier goes in a call
Was this page helpful?
Thanks.