Retrieve a product
Returns one catalog entry. POS-synced products carry a read-only pos_ref (the mapping to the location’s till - sync-owned, vendor never surfaced); manual and API entries have pos_ref: null. Scope: products:read.
Archived products (is_active: false) remain retrievable forever - historical transaction line items keep resolving to them.
Authorizations
Your secret API key as a Bearer token: Authorization: Bearer vxn_sk_.... Keys are created and scoped in the dashboard - see Authentication.
Response
Product.
A catalog entry for correlating transaction line items to real products. Catalogs are per-location (each location can run a different POS with a different menu), unified under the organization: list org-wide, filter by location_id.
This is a loyalty correlation catalog, not an inventory system - no variants, modifiers, or stock levels.
Display name - plain string or per-language object, the same localization pattern as Card.name. POS-synced entries arrive with the till's single-language name; supply per-language names on manual/API entries when your audience is multilingual (border stores, tourist areas). Notifications and future product-facing surfaces resolve the name in the customer's language.
1 - 200"Flat White"
Merchant-owned filing aid, and part of the search haystack alongside the name. NEVER populated by POS sync: no POS system sends tags, so a source: "pos" entry arrives untagged. You can tag one yourself with PATCH /v1/products/{id} (tags are an overlay field, unlike pos_ref and source, which sync owns), and it becomes findable by that tag immediately. Sending [] clears them and removes them from the search haystack.