Add a product
Add a product to the catalogue. A price is required (use 0 for a free product). A subscription product needs a billing interval. A field that is not on a product answers 400 unknown_field, and a value that is too long or out of range is refused rather than changed. A SKU already used in the workspace answers 409 sku_exists.
https://app.softsolz.uk/api/v1/services/catalog/catalog/productsRecent Requests
Kept only in this browserHeaders
AuthorizationstringrequiredBearer token: Bearer sk_live_... (or sk_test_... for sandbox). A login token will not work here.
Idempotency-KeystringOptional idempotency key for safe retries.
Body Params
namestringrequiredProduct name.
kindstringSold once, or billed again every interval. Defaults to one_off.
billing_intervalstringHow often a subscription bills. Required when kind is subscription, ignored otherwise.
unit_price_centsintegerrequiredPrice of one unit in minor units (pence or cents). Required. Use 0 for a free product.
currencystringThree-letter currency code, for example GBP. It is stored in capitals, so gbp becomes GBP. Defaults to GBP.
tax_rate_percentnumberTax rate from 0 to 100. Defaults to 0.
trial_daysintegerFree days before a subscription first bills, a whole number from 0 to 365. Defaults to 0.
skustring | nullYour stock code. It must be unique in the workspace.
descriptionstring | nullLonger description.
activebooleanWhether the product can be sold. Defaults to true.
Response
Response Body
idstringProduct id.namestringProduct name.skustring | nullYour stock code, unique in the workspace when set.descriptionstring | nullLonger description.kindstringSold once, or billed again every interval.currencystringThree-letter currency code, always stored in capitals (gbp becomes GBP).unit_price_centsintegerPrice of one unit in minor units.tax_rate_percentnumberTax rate, 0 to 100.billing_intervalstring | nullHow often a subscription bills. Null for a one-off product.trial_daysintegerFree days before a subscription first bills.activebooleanWhether the product can still be sold. A retired product is false.created_atstringWhen the product was added.updated_atstringWhen the product last changed.Request
curl --request POST \ --url https://app.softsolz.uk/api/v1/services/catalog/catalog/products \ --header 'Authorization: Bearer sk_live_your_key' \ --header 'Content-Type: application/json' \ --data '{ "name": "Pro plan", "kind": "subscription", "billing_interval": "month", "unit_price_cents": 2900, "currency": "GBP", "tax_rate_percent": 20, "trial_days": 14, "description": "Everything in Basic plus priority support."}'Credentials
Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.
Response · 201
{ "data": { "id": "17", "name": "Pro plan", "sku": "PRO-MONTHLY", "description": "Everything in Basic plus priority support.", "kind": "subscription", "currency": "GBP", "unit_price_cents": 2900, "tax_rate_percent": 20, "billing_interval": "month", "trial_days": 14, "active": true, "created_at": "2026-10-01T09:00:00.000Z", "updated_at": "2026-10-01T09:00:00.000Z" }}