List storefront products
List active, cart-eligible products with browser-safe display data, active prices, and derived availability. Only products listed on the Storefront are returned (store_visibility visible, or scheduled and due). Intended for publishable-key storefront and CMS-picker use; never returns product metadata or internal fields.
/storefront/productsList active, cart-eligible products with browser-safe display data, active prices, and derived availability. Only products listed on the Storefront are returned (store_visibility visible, or scheduled and due). Intended for publishable-key storefront and CMS-picker use; never returns product metadata or internal fields.
Related endpoints
GET /storefront/products/{productId}— Get a storefront productGET /storefront/origins— List storefront originsPOST /storefront/origins— Register a storefront originDELETE /storefront/origins/{originId}— Remove a storefront originGET /storefront/status— Get storefront integration status
Common errors
401 authentication_error— missing, invalid, expired, or revoked credential. Codes:authentication_failed,invalid_api_key,expired_api_key,api_key_revoked,session_invalid,merchant_required. Carries aWWW-Authenticate: Bearerchallenge.403 authorization_error— the caller is identified but the action is denied. Codes includeinsufficient_permissions,ip_not_allowed,merchant_mismatch, andorigin_not_allowed.
Pagination
Offset-based with limit (default 25, max 100) and offset. The response pagination block includes total and hasMore. See the pagination guide for SDK auto-paging helpers.
Your RevKeen merchant API key. Create and manage keys in Dashboard → Settings → Developer. Use rk_sandbox_* for staging/test and rk_live_* for production. The same key may be sent as Authorization: Bearer <key> if that suits your HTTP client better. A missing, invalid, expired, or revoked key returns 401 with a WWW-Authenticate: Bearer challenge; a valid key without the required scope returns 403.
In: header
Query Parameters
Maximum products to return (default 50, max 100).
1 <= value <= 100Products to skip, for pagination.
0 <= value <= 10000Only products in this product collection (id or URL handle).
1 <= length <= 80Only products carrying this tag.
1 <= length <= 50Case-insensitive match on product name or description.
1 <= length <= 100featured (collection order, else newest), newest, name, price_asc or price_desc.
Value in
- "featured"
- "newest"
- "name"
- "price_asc"
- "price_desc"
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://api.revkeen.com/v2/storefront/products?limit=10&offset=1" \
-H "x-api-key: $REVKEEN_API_KEY"Synthetic documentation data, validated against the response schema; not a live API result.
{ "data": [ { "id": "00000000-0000-4000-8000-000000000001", "object": "product", "product_id": "string", "slug": "string", "name": "Example customer", "description": "string", "kind": "string", "pricing_model": "string", "currency": "string", "image_url": "string", "default_price_id": "string", "prices": [ { "id": "00000000-0000-4000-8000-000000000001", "product_id": "00000000-0000-4000-8000-000000000001", "currency": "string", "unit_amount": 0, "unit_amount_decimal": "string", "type": "string", "interval": "string", "interval_count": 0, "billing_scheme": "string", "usage_type": "string", "package_size": 0, "trial_period_days": 0, "option_values": { "property1": "string", "property2": "string" }, "sku": "string", "image_url": "string" } ], "trial_days": 0, "usage_meter_id": "string", "tax_behavior": "string", "tax_code": "string", "availability": { "status": "unknown", "remaining": 0, "display_mode": "string", "low_stock_threshold": 0 }, "tags": [ "string" ], "images": [ { "url": "https://example.com/webhooks/revkeen", "alt": "string", "source": "string", "photographer": "string", "attribution_url": "string" } ], "seo_title": "string", "seo_description": "string" } ]}