Get comprehensive store information
Returns comprehensive store metadata and configuration in a single API call. Designed for LLMs and AI agents to quickly understand store context without making multiple API calls.
Purpose: This endpoint consolidates store metadata that would normally require 10+ separate API calls:
- Store basic info (name, currencies, timezone, the shopping assistant’s name and logo, and the
design system as
store.brand, which isnullwhen the store has none; thestore.design_system_updatedwebhook event signals that it changed) - Catalog overview (products, categories, collections, brands, specifications)
- Pricing configuration (dynamic pricing, customer tiers, rules)
- Active promotions (types, counts)
- Payment methods (providers, configurations)
- Shipping zones (delivery fees, free thresholds)
- CMS content (posts, lookbooks)
- Feature flags (enabled capabilities)
- Store profile summary (support contact, social profiles, published legal documents)
Use Cases:
- AI agents understanding store capabilities before making recommendations
- Admin dashboards showing store overview
- Integration setup wizards checking store configuration
- Mobile apps caching store metadata on startup
- Third-party tools discovering available features
Performance:
- Cached for 5 minutes (300 seconds)
- Parallel data fetching for all sections
- Optional section filtering to reduce payload size
- Typical response time: 50-150ms (cached: 10-20ms)
Selective Loading:
Use the sections parameter to request only specific data sections, reducing payload size
by 50-80% when you don’t need all information.
Single-store only. This endpoint describes one store. A marketplace operator key has no
single store here and receives 403 — use GET /v1/marketplace/info for the marketplace’s own
information, or GET /v1/marketplace/info?store_id=<merchant> for one merchant within it.
curl --request GET \
--url https://api.tybritelabs.com/v1/store/info \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tybritelabs.com/v1/store/info"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tybritelabs.com/v1/store/info', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tybritelabs.com/v1/store/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tybritelabs.com/v1/store/info"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tybritelabs.com/v1/store/info")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tybritelabs.com/v1/store/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"store": {
"store_id": "ef7b07d3-424b-4b03-b1d4-30a2d2073b61",
"name": "Galactic Test Store",
"default_currency": "USD",
"currencies": [
"USD",
"GBP",
"EUR"
],
"timezone": "America/New_York",
"created_at": "2026-06-19T19:59:48.799138+00:00",
"commerce_model": "retail",
"vendor_type": null,
"shopping_assistant": {
"name": null,
"logo_url": null
}
},
"catalog": {
"products": {
"total": 53,
"has_variants": 13,
"simple_products": 40,
"active": 53,
"inactive": 0,
"featured": 1,
"with_images": 13,
"low_stock": 0
},
"collections": {
"total": 3,
"names": [
"Featured",
"New Arrivals",
"Best Sellers"
],
"list": [
{
"id": "45e28d12-9381-45f6-98bb-cb3a34c0a215",
"name": "Featured",
"slug": "featured",
"type": "featured_collections",
"show_on_homepage": true,
"display_priority": 0,
"image": "https://cdn.example.com/collections/featured-desktop.jpg",
"image_mobile": "https://cdn.example.com/collections/featured-mobile.jpg",
"video": null
},
{
"id": "e9810818-5051-4b74-a53b-2ff843b4f435",
"name": "New Arrivals",
"slug": "new-arrivals",
"type": "new_arrivals",
"show_on_homepage": true,
"display_priority": 1,
"image": null,
"image_mobile": null,
"video": null
}
]
},
"taxonomy": {
"categories": {
"total": 23,
"list": [
{
"id": "49f084e5-9ded-429c-aeb7-5918a2234953",
"name": "Laptops",
"image": "https://images.unsplash.com/photo-1496181133206-80ce9b88a853?w=800&q=80",
"product_count": 2
}
]
},
"subcategories": {
"total": 14,
"list": [
{
"id": "6dbda630-ad89-4659-a5ef-3b0aae0dba7b",
"name": "Keyboards",
"image": "https://images.unsplash.com/photo-1587829741301-dc798b83add3?w=800&q=80",
"category": "Electronics",
"category_id": "7bf671dd-f49e-492c-b89f-a2892931f88f",
"parent_id": "9c8f0a1b-1111-2222-3333-444455556666",
"parent_name": "Computer Peripherals",
"children": [],
"product_count": 1
}
]
}
},
"specifications": {
"total": 6,
"types": [
"brand",
"color",
"model",
"product_type",
"storage_type"
]
},
"brands": {
"total": 18,
"list": [
"Apple",
"Samsung",
"Dell",
"Sony",
"Pulsewave",
"Trailhead",
"Lumitech",
"Hearthstone",
"Northwind"
]
}
},
"pricing": {
"has_dynamic_pricing": true,
"features": {
"customer_tiers": false,
"customer_segments": false,
"volume_discounts": false,
"location_based": false,
"time_based": false
},
"customer_tiers": [],
"pricing_rules": {
"total": 1,
"active": 1
}
},
"promotions": {
"total": 3,
"active": 3,
"types": {
"percentage_discount": 1,
"fixed_discount": 1,
"bogo": 0,
"bundle": 1,
"free_shipping": 0
}
},
"payments": {
"providers": [
"cash",
"stripe"
],
"methods": [
{
"name": "cash",
"display_name": "Cash on Delivery",
"type": "manual"
},
{
"name": "stripe",
"display_name": "Stripe",
"type": "redirect"
}
]
},
"shipping": {
"configured": true,
"delivers": true,
"delivers_everywhere": true,
"offers_pickup": true,
"zones": {
"total": 3,
"list": [
{
"name": "Lower 48 states",
"type": "zone",
"coverage": "region",
"countries": [
"US"
],
"delivery_fee": 12.99,
"free_threshold": 200
},
{
"name": "Local (within 10 km)",
"type": "distance_tier",
"coverage": "distance",
"countries": [],
"delivery_fee": 5.99,
"free_threshold": 75
},
{
"name": "Metro (10–50 km)",
"type": "distance_tier",
"coverage": "distance",
"countries": [],
"delivery_fee": 9.99,
"free_threshold": 150
}
]
},
"everywhere_else": {
"refuse": false,
"delivery_fee": 29.99,
"free_delivery_threshold": null
},
"pickup_locations": [
{
"id": "3d5c7a10-8b2e-4f61-9c4d-1a2b3c4d5e6f",
"name": "Brooklyn store",
"address": {
"line1": "145 Atlantic Avenue",
"city": "Brooklyn",
"state": "NY",
"postal_code": "11201",
"country": "US"
},
"latitude": 40.6907,
"longitude": -73.9956,
"hours": "Mon–Sat 10:00–19:00",
"pickup_fee": 0,
"minimum_order": null,
"ready_text": "Ready in 2 hours",
"instructions": "Collect from the counter at the back of the store."
}
],
"has_free_shipping_threshold": true
},
"cms": {
"posts": {
"total": 2,
"published": 2,
"draft": 0
},
"lookbooks": {
"total": 1,
"published": 1
}
},
"features": {
"ai_recommendations": false,
"semantic_search": false,
"multi_currency": true,
"dynamic_pricing": false,
"cms": true,
"lookbooks": true,
"returns": true,
"collections": true,
"gift_cards": true,
"promotions": true,
"messaging": true,
"specifications": true,
"agentic_commerce": true,
"agent_hosted_helpers": false,
"feature_status": {
"ai_recommendations": "awaiting_data",
"semantic_search": "awaiting_data",
"multi_currency": "available",
"dynamic_pricing": "awaiting_data",
"cms": "available",
"lookbooks": "available",
"returns": "available",
"collections": "available",
"gift_cards": "available",
"promotions": "available",
"messaging": "available",
"specifications": "available",
"agentic_commerce": "available",
"agent_hosted_helpers": "unavailable"
}
}
}Authorizations
API Key Authentication
Use your API key in the Authorization header:
Authorization: Bearer tybrite_sk_live_YOUR_KEY
Key Types:
Secret Keys (Server-Side Only):
- Format:
tybrite_sk_live_*(production) ortybrite_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) ortybrite_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.
Query Parameters
Comma-separated list of sections to include in the response. Omit to return all sections.
Available Sections:
catalog- Products, categories, collections, brands, specificationspricing- Dynamic pricing configuration and rulespromotions- Active promotions and typespayments- Payment providers and methodsshipping- Delivery zones and feescms- CMS posts and lookbooksfeatures- Feature flags and capabilitiescustom_fields- The custom fields the merchant has defined, by record typeprofile- Contact details, social profiles, published legal documents and legal identity, in summary
Note: The store section is always included regardless of this parameter.
Examples:
sections=catalog,features- Only catalog and featuressections=payments,shipping- Only payment and shipping info- Omit parameter - All sections included
Payload Size Reduction:
- Full response: ~15-25KB
catalogonly: ~8-12KB (50% reduction)features,payments: ~2-3KB (85% reduction)
SDK Usage:
"catalog,features"
Control cache behavior. Set to false to bypass cache and fetch fresh data.
Default: true (use cache if available)
Cache Duration: 5 minutes (300 seconds)
With cache=false the response is built from the store's current data, including the
features flags and their feature_status, and X-Cache is MISS.
When to Bypass Cache:
- After updating store configuration
- When a feature's availability matters at this moment (for example
features.agent_hosted_helpersbefore calling a hosted helper) - After adding/removing products or categories
- After changing payment or shipping settings
- When you need real-time data
Cache Headers:
X-Cache: HIT- Response served from cacheX-Cache: MISS- Response fetched from databaseCache-Control: public, max-age=300- Browser/CDN caching
SDK Usage:
Response
Store information retrieved successfully
Basic store information (always included)
Show child attributes
Show child attributes
Catalog overview (optional, included when requested)
Show child attributes
Show child attributes
Pricing configuration (optional, included when requested)
Show child attributes
Show child attributes
Promotions overview (optional, included when requested)
Show child attributes
Show child attributes
Payment configuration (optional, included when requested)
Show child attributes
Show child attributes
How the store delivers and where it offers pickup (optional, included when requested). The flags summarise the rates below: a store with no zones, distance rates or "everywhere else" choice charges nothing for delivery through these rates, so it is configured: false and still delivers. Exact prices for an address come from POST /v1/shipping/calculate.
Show child attributes
Show child attributes
CMS content overview (optional, included when requested)
Show child attributes
Show child attributes
Feature flags (optional, included when requested). Each flag is a boolean answering "should the storefront show this capability right now?" — use them to decide which UI to render.
What true / false mean. A flag is true only when the capability is BOTH available to the store AND has data/config to surface. false is deliberately broad — it can mean any of: the store's plan doesn't include the feature, the plan includes it but it isn't set up/has no data yet, or both. A false flag therefore does NOT tell you why it's off; treat it simply as "don't render this yet."
Two kinds of flag:
-
Plan-gated —
ai_recommendations,semantic_search,dynamic_pricing,cms,lookbooks,returns.truerequires the store's plan to include the feature AND it to be configured. By plan: Starter includes none of these; Growth adds content pages/lookbooks (cms,lookbooks) andreturns; Premium and Enterprise add smart search & recommendations (ai_recommendations,semantic_search) anddynamic_pricing. -
Data-presence (every plan) —
multi_currency,gift_cards,promotions,messaging,specifications,collections. Not plan-gated at all;truesimply means the store currently has at least one of that item (e.g.gift_cards: true= the store has issued one or more gift cards).falsemeans none exist yet, not that the feature is forbidden. -
Shopping assistants —
agentic_commerceandagent_hosted_helpersdescribe the Agent API for assistants shopping the store.agentic_commerceistrueon every store;agent_hosted_helpersistruewhile the model-backed helper tools can be called.
Pass cache=false to read the flags as they are at this moment rather than as cached.
Show child attributes
Show child attributes
The extra fields this merchant has added to their own records (optional, included when requested), grouped by the kind of record each one describes.
Why this is here rather than on the record. Reading a product tells you nothing about which of its fields the merchant defined, and a field you have never seen a value for is invisible until some record happens to carry one. This is the shape of the merchant's records, so a storefront or an agent knows in advance what a product, a customer or an order may carry, and can label and format it correctly.
Grouped by entity, because a field is not a store-wide fact. fabric describes a product; buyer_po describes an order. A flat list would leave you guessing which records a field applies to.
Public fields only. A merchant may mark a field private, and private is the default — such a field can hold a cost, a margin or an internal note, so it is omitted entirely here, including its name.
Definitions only. A field's VALUE belongs to a record and is returned with that record.
Show child attributes
Show child attributes
{
"entities": [
{
"entity": "products",
"fields": [
{
"name": "fabric",
"label": "Fabric",
"type": "text"
},
{
"name": "country_of_origin",
"label": "Country of origin",
"type": "text"
}
]
},
{
"entity": "online_orders",
"fields": [
{
"name": "priority",
"label": "Priority",
"type": "select",
"options": ["Standard", "Express"]
}
]
}
],
"total_fields": 3
}
A compact form of the store profile, returned as the profile section of GET /v1/store/info. GET /v1/store/profile returns the full profile.
Show child attributes
Show child attributes
Indicates whether this store is part of a marketplace, so a storefront can adapt its experience accordingly.
Show child attributes
Show child attributes
curl --request GET \
--url https://api.tybritelabs.com/v1/store/info \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tybritelabs.com/v1/store/info"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tybritelabs.com/v1/store/info', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tybritelabs.com/v1/store/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tybritelabs.com/v1/store/info"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tybritelabs.com/v1/store/info")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tybritelabs.com/v1/store/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"store": {
"store_id": "ef7b07d3-424b-4b03-b1d4-30a2d2073b61",
"name": "Galactic Test Store",
"default_currency": "USD",
"currencies": [
"USD",
"GBP",
"EUR"
],
"timezone": "America/New_York",
"created_at": "2026-06-19T19:59:48.799138+00:00",
"commerce_model": "retail",
"vendor_type": null,
"shopping_assistant": {
"name": null,
"logo_url": null
}
},
"catalog": {
"products": {
"total": 53,
"has_variants": 13,
"simple_products": 40,
"active": 53,
"inactive": 0,
"featured": 1,
"with_images": 13,
"low_stock": 0
},
"collections": {
"total": 3,
"names": [
"Featured",
"New Arrivals",
"Best Sellers"
],
"list": [
{
"id": "45e28d12-9381-45f6-98bb-cb3a34c0a215",
"name": "Featured",
"slug": "featured",
"type": "featured_collections",
"show_on_homepage": true,
"display_priority": 0,
"image": "https://cdn.example.com/collections/featured-desktop.jpg",
"image_mobile": "https://cdn.example.com/collections/featured-mobile.jpg",
"video": null
},
{
"id": "e9810818-5051-4b74-a53b-2ff843b4f435",
"name": "New Arrivals",
"slug": "new-arrivals",
"type": "new_arrivals",
"show_on_homepage": true,
"display_priority": 1,
"image": null,
"image_mobile": null,
"video": null
}
]
},
"taxonomy": {
"categories": {
"total": 23,
"list": [
{
"id": "49f084e5-9ded-429c-aeb7-5918a2234953",
"name": "Laptops",
"image": "https://images.unsplash.com/photo-1496181133206-80ce9b88a853?w=800&q=80",
"product_count": 2
}
]
},
"subcategories": {
"total": 14,
"list": [
{
"id": "6dbda630-ad89-4659-a5ef-3b0aae0dba7b",
"name": "Keyboards",
"image": "https://images.unsplash.com/photo-1587829741301-dc798b83add3?w=800&q=80",
"category": "Electronics",
"category_id": "7bf671dd-f49e-492c-b89f-a2892931f88f",
"parent_id": "9c8f0a1b-1111-2222-3333-444455556666",
"parent_name": "Computer Peripherals",
"children": [],
"product_count": 1
}
]
}
},
"specifications": {
"total": 6,
"types": [
"brand",
"color",
"model",
"product_type",
"storage_type"
]
},
"brands": {
"total": 18,
"list": [
"Apple",
"Samsung",
"Dell",
"Sony",
"Pulsewave",
"Trailhead",
"Lumitech",
"Hearthstone",
"Northwind"
]
}
},
"pricing": {
"has_dynamic_pricing": true,
"features": {
"customer_tiers": false,
"customer_segments": false,
"volume_discounts": false,
"location_based": false,
"time_based": false
},
"customer_tiers": [],
"pricing_rules": {
"total": 1,
"active": 1
}
},
"promotions": {
"total": 3,
"active": 3,
"types": {
"percentage_discount": 1,
"fixed_discount": 1,
"bogo": 0,
"bundle": 1,
"free_shipping": 0
}
},
"payments": {
"providers": [
"cash",
"stripe"
],
"methods": [
{
"name": "cash",
"display_name": "Cash on Delivery",
"type": "manual"
},
{
"name": "stripe",
"display_name": "Stripe",
"type": "redirect"
}
]
},
"shipping": {
"configured": true,
"delivers": true,
"delivers_everywhere": true,
"offers_pickup": true,
"zones": {
"total": 3,
"list": [
{
"name": "Lower 48 states",
"type": "zone",
"coverage": "region",
"countries": [
"US"
],
"delivery_fee": 12.99,
"free_threshold": 200
},
{
"name": "Local (within 10 km)",
"type": "distance_tier",
"coverage": "distance",
"countries": [],
"delivery_fee": 5.99,
"free_threshold": 75
},
{
"name": "Metro (10–50 km)",
"type": "distance_tier",
"coverage": "distance",
"countries": [],
"delivery_fee": 9.99,
"free_threshold": 150
}
]
},
"everywhere_else": {
"refuse": false,
"delivery_fee": 29.99,
"free_delivery_threshold": null
},
"pickup_locations": [
{
"id": "3d5c7a10-8b2e-4f61-9c4d-1a2b3c4d5e6f",
"name": "Brooklyn store",
"address": {
"line1": "145 Atlantic Avenue",
"city": "Brooklyn",
"state": "NY",
"postal_code": "11201",
"country": "US"
},
"latitude": 40.6907,
"longitude": -73.9956,
"hours": "Mon–Sat 10:00–19:00",
"pickup_fee": 0,
"minimum_order": null,
"ready_text": "Ready in 2 hours",
"instructions": "Collect from the counter at the back of the store."
}
],
"has_free_shipping_threshold": true
},
"cms": {
"posts": {
"total": 2,
"published": 2,
"draft": 0
},
"lookbooks": {
"total": 1,
"published": 1
}
},
"features": {
"ai_recommendations": false,
"semantic_search": false,
"multi_currency": true,
"dynamic_pricing": false,
"cms": true,
"lookbooks": true,
"returns": true,
"collections": true,
"gift_cards": true,
"promotions": true,
"messaging": true,
"specifications": true,
"agentic_commerce": true,
"agent_hosted_helpers": false,
"feature_status": {
"ai_recommendations": "awaiting_data",
"semantic_search": "awaiting_data",
"multi_currency": "available",
"dynamic_pricing": "awaiting_data",
"cms": "available",
"lookbooks": "available",
"returns": "available",
"collections": "available",
"gift_cards": "available",
"promotions": "available",
"messaging": "available",
"specifications": "available",
"agentic_commerce": "available",
"agent_hosted_helpers": "unavailable"
}
}
}
