Your product identifier, e.g. pro_monthly. Chosen by you and stable.
Catalog
Products, entitlements, and store mappings for an app.
Your catalog is the set of products a user can buy and the entitlements those products unlock. A product maps to one or more store SKUs (Apple / Google) and grants one or more entitlements. See Concepts for how these fit together.
The product object#
idstringtypestringOne of subscription, non_subscription, or consumable.
entitlementsstring[]The entitlement IDs this product grants.
store_idsobjectThe store-specific SKU for each platform.
Show store_ids
applestringThe App Store product identifier.
googlestringThe Google Play product / base plan identifier.
The entitlement object#
idstringYour entitlement identifier, e.g. pro.
is_activebooleanWhether the entitlement currently grants access (contextual to a customer).
product_idstringThe product that granted the entitlement.
expires_atstringISO 8601 expiry, or null for lifetime access.
storestringThe source store, e.g. app_store or play_store.
Retrieve the catalog#
GET /v1/apps/{app}/catalog
Returns the app's full catalog — products and entitlements.
appstringrequiredThe app ID.
curl https://api.cashsdk.com/v1/apps/app_2mK4pQ/catalog \
-H "Authorization: Bearer csk_sk_..."
{
"products": [
{
"id": "pro_monthly",
"type": "subscription",
"entitlements": ["pro"],
"store_ids": {
"apple": "com.example.focustimer.pro.monthly",
"google": "pro_monthly"
}
}
],
"entitlements": [
{ "id": "pro", "product_id": "pro_monthly" }
]
}
Create a product#
POST /v1/apps/{app}/products
appstringrequiredThe app ID.
idstringrequiredYour product identifier, e.g. pro_monthly.
typestringrequiredsubscription, non_subscription, or consumable.
entitlementsstring[]Entitlement IDs this product grants.
store_idsobjectStore SKUs keyed by apple and/or google.
curl -X POST https://api.cashsdk.com/v1/apps/app_2mK4pQ/products \
-H "Authorization: Bearer csk_sk_..." \
-H "Content-Type: application/json" \
-d '{
"id": "pro_monthly",
"type": "subscription",
"entitlements": ["pro"],
"store_ids": {
"apple": "com.example.focustimer.pro.monthly",
"google": "pro_monthly"
}
}'
{
"id": "pro_monthly",
"type": "subscription",
"entitlements": ["pro"],
"store_ids": {
"apple": "com.example.focustimer.pro.monthly",
"google": "pro_monthly"
}
}
Reusing an existing product id returns 409 Conflict. Use
PATCH /v1/apps/{app} style updates
are not applied here — recreate with a new id or edit in the dashboard.
Create an entitlement#
POST /v1/apps/{app}/entitlements
Define an entitlement that products can grant.
appstringrequiredThe app ID.
idstringrequiredYour entitlement identifier, e.g. pro.
descriptionstringOptional human-readable description.
curl -X POST https://api.cashsdk.com/v1/apps/app_2mK4pQ/entitlements \
-H "Authorization: Bearer csk_sk_..." \
-H "Content-Type: application/json" \
-d '{ "id": "pro", "description": "Full access to Pro features" }'
{
"id": "pro",
"description": "Full access to Pro features"
}