Skip to main content
POST
Record a storefront product event

Authorizations

Authorization
string
header
required

API Key Authentication

Use your API key in the Authorization header:

Key Types:

Secret Keys (Server-Side Only):

  • Format: tybrite_sk_live_* (production) or tybrite_sk_test_* (sandbox)
  • Full read/write access to all endpoints
  • ⚠️ NEVER expose in client-side code or public repositories
  • Required for: every write a shopper does not make for themselves, authentication, payment verification, AI recommendations

Publishable Keys (Client-Safe):

  • Format: tybrite_pk_live_* (production) or tybrite_pk_test_* (sandbox)
  • Catalogue reads, plus the actions a shopper takes for themselves
  • ✅ Safe for client-side JavaScript, mobile apps, and public code
  • Allowed for: browsing products, search, CMS content, pricing queries, cart and wishlist, reviews, storefront events, and the Agent API's quotes, cart drafts and checkout intents

Endpoint-Specific Requirements:

  • Authentication endpoints (/v1/auth/*): Secret key required
  • Payment verification (POST /v1/payments/verify): Secret key required
  • AI Recommendations (POST /v1/recommendations): Secret key required
  • Semantic Search (POST /v1/search): Both key types allowed (read-only operation)
  • Shopper actions (cart, wishlist, reviews, storefront events, Agent API quotes, cart drafts and checkout intents): Both key types allowed
  • All other write operations: Secret key required
  • All read operations: Both key types allowed

Using a publishable key for restricted operations returns 403 Forbidden.

Headers

x-tybrite-channel
enum<string>

Where the shopper was, when it is easier to set a header than to add a body field — marketplace from a marketplace storefront, storefront (or omitted) for a seller's own site. Equivalent to the channel body field; the body wins if both are sent. The marketplace itself is resolved server-side from the store, so this says which channel and cannot name one.

Available options:
storefront,
marketplace

Body

application/json
event_type
enum<string>
required
Available options:
view,
add_to_cart,
add_to_wishlist
variant_id
string<uuid>

The product variant the shopper interacted with. Either variant_id or product_id is required.

product_id
string<uuid>

The product the shopper interacted with. Either variant_id or product_id is required.

session_id
string

The shopper's browsing-session identifier (same concept as the anonymous cart session). May also be sent as the x-session-id header.

customer_id
string<uuid>

The signed-in shopper, when known.

channel
enum<string>

Where the shopper was when this happened. Send marketplace from a marketplace storefront so the event is attributed to that marketplace rather than to the seller's own shop; omit it, or send storefront, for a seller's own site. The marketplace itself is resolved server-side from the store, so this only says which channel — it cannot name one. May also be sent as the x-tybrite-channel header.

Available options:
storefront,
marketplace

Response

The event was accepted.

recorded
boolean