Reorder
Reorder products inside one group, and move them into it in the same call. Every id in `productIds` is assigned to `productGroupId` (send null for the ungrouped list) and given an `order` matching its position. This is the endpoint behind drag-and-drop between groups, so send the full contents of the target group, not just the product that moved. Fails with 404 if the group does not exist.
Authentication
sf_… API key in the bearerAuth field below.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.
In: header
Path Parameters
1 <= lengthRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X PUT "https://example.com/companies/string/products/reorder" \ -H "Content-Type: application/json" \ -d '{ "productGroupId": "string", "productIds": [ "string" ] }'{ "success": true}Create product
Create a product. Pass `productGroupId` to file it under a group straight away, or leave it null or absent for an ungrouped product. Fails with 404 if the named group does not exist. Products imported from a billing provider are created by the importer, so create by hand only for revenue you track yourself.
Retrieve product
Retrieve a single product by id. Unlike the list endpoint, this returns the plain product without the cMRR and event-count enrichment. Returns 404 if the product does not exist or belongs to another company.