Get a storefront product
Fetch one active, cart-eligible product by UUID, product reference, or slug. Same browser-safe projection as the list endpoint.
Related endpoints
GET /storefront/products— List storefront productsGET /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 unauthenticated— missing, malformed, or revoked API key.403 permission_denied— key lacks the required scope, or the resource belongs to a different merchant.404 resource_missing— the referenced resource does not exist or is not visible to your key.
x-api-key<token>
Your RevKeen API key (powered by Unkey). Get it from Dashboard > Settings > API Keys. Use rk_sandbox_* for test mode and rk_live_* for production.
In: header
Path Parameters
productId*string
Product UUID, merchant product reference, or slug.
Response Body
application/json
application/json
application/json
application/json
Stuck on an error response? Ask the RevKeen assistant to explain it.
curl "https://api.revkeen.com/v2/storefront/products/string" \
-H "x-api-key: $REVKEEN_API_KEY"{
"data": {
"id": "string",
"object": "product",
"product_id": "string",
"slug": "string",
"name": "string",
"description": "string",
"kind": "string",
"pricing_model": "string",
"currency": "string",
"image_url": "string",
"default_price_id": "string",
"prices": [
{
"id": "string",
"product_id": "string",
"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
}
],
"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
}
}
}{
"error": "string",
"message": "string"
}{
"error": "string",
"message": "string"
}{
"error": "string",
"message": "string"
}