Update product
Update a product. Only the fields you send change. Renaming is safe for reporting: subscription events reference the product by id, so past revenue follows…
Authentication
Authorization<token>A SaaSFlow API key (format sf_…) or an OAuth bearer token. Paste only the key — the proxy adds the Bearer prefix. Create an API key in Settings → Company settings → API keys — see API keys.
companyId*string1 <= lengthproductId*string1 <= lengthapplication/json- body
name?string1 <= lengthproductGroupId?string|nullorder?numberUpdated product
application/json- response
id*stringuuidcompanyId*stringuuidname*stringThe name of the product.
nameManuallyEdited*booleanWhether the name is protected from integration updates after a manual rename.
productGroupId*|The ID of the product group this product belongs to. Null if ungrouped.
uuidorder*numberA number used for ordering products within their group in the UI.
-8388608 <= value <= 8388607createdTime*|date-timecreatedUserId*string|nulllastUpdatedTime*|date-timelastUpdatedUserId*string|nullexternalIds*array<string>External IDs (URNs) linked to this product (e.g., Stripe, HubSpot).
curl -X PUT "https://example.com/companies/string/products/string" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "companyId": "8bb73d03-06b4-47c7-80c7-59301f770eda", "name": "string", "nameManuallyEdited": true, "productGroupId": "c416ccc2-c7d5-4733-9136-58a3b93937ed", "order": -8388608, "createdTime": "2019-08-24T14:15:22Z", "createdUserId": "string", "lastUpdatedTime": "2019-08-24T14:15:22Z", "lastUpdatedUserId": "string", "externalIds": [ "string" ]}Delete product
Delete a product. Check eventCount on the list endpoint first: a product still referenced by subscription events is load-bearing for MRR-by-product…
Change group
Move one product into a different product group, or send productGroupId: null to take it out of every group. Use /products/reorder instead when you also…