Find complementary or alternative products related to a given product for a specific company and cohort context.
Use this to power “customers who use X also use Y” and “alternatives to X” surfacing in your UI.
Base URL: https://api.salescaddy.ai/api
Endpoint
GET /companies/{companyDomain}/products/{productId}/related
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
companyDomain | string | Yes | Company domain (e.g. hilton.com) |
productId | string | Yes | Anchor product ID (e.g. prod_office365) |
Query parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
cohort | CohortTypeEnum | Yes | — | One of: Default, Defined, Aspirational |
page | int | No | 0 | Page index (0-based) |
size | int | No | 20 | Page size (max ~200) |
The
cohortparameter ensures “relatedness” is computed within the peer context that matters for benchmarking.
Example — Related products in Default cohort
curl -sS "https://api.salescaddy.ai/api/companies/hilton.com/products/prod_office365/related?cohort=Default&page=0&size=10" \
-H "Authorization: Bearer $TOKEN"const url = "https://api.salescaddy.ai/api/companies/hilton.com/products/prod_office365/related?cohort=Default&page=0&size=10";
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.TOKEN}` } });
console.log(await res.json());import os, requests
r = requests.get("https://api.salescaddy.ai/api/companies/hilton.com/products/prod_office365/related",
params={"cohort":"Default","page":0,"size":10},
headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
print(r.json())
``]
```csharp
using System.Net.Http.Headers;
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", TOKEN);
var res = await http.GetAsync("https://api.salescaddy.ai/api/companies/hilton.com/products/prod_office365/related?cohort=Default&page=0&size=10");
Console.WriteLine(await res.Content.ReadAsStringAsync());Sample response (trimmed):
[
{ "id":"prod_slack", "name":"Slack", "category":"Collaboration", "vendor":{ "domain":"salesforce.com" } },
{ "id":"prod_zoom", "name":"Zoom", "category":"Collaboration", "vendor":{ "domain":"zoom.us" } }
]Example — Aspirational cohort
curl -sS "https://api.salescaddy.ai/api/companies/hilton.com/products/prod_azure/related?cohort=Aspirational&page=0&size=10" \
-H "Authorization: Bearer $TOKEN"const url = "https://api.salescaddy.ai/api/companies/hilton.com/products/prod_azure/related?cohort=Aspirational&page=0&size=10";
console.log(await (await fetch(url, { headers: { Authorization: `Bearer ${process.env.TOKEN}` } })).json());r = requests.get("https://api.salescaddy.ai/api/companies/hilton.com/products/prod_azure/related",
params={"cohort":"Aspirational","page":0,"size":10},
headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
print(r.json())var res = await http.GetAsync("https://api.salescaddy.ai/api/companies/hilton.com/products/prod_azure/related?cohort=Aspirational&page=0&size=10");
Console.WriteLine(await res.Content.ReadAsStringAsync());Use cases & tips
- Cross‑sell and attach — show complementary tools commonly found with the anchor product in the chosen cohort.
- Alternatives comparison — surface nearby substitutes users evaluate alongside the anchor.
- Cohort matters —
Defaultfor broad baseline,Definedfor curated peer group,Aspirationalfor forward‑looking stacks. - Pair with Usage Metrics to rank related items by adoption/intensity in the cohort.
- For deterministic presence checks, call Products‑in‑Use for the returned
productIds.
Errors
| Code | Meaning | How to fix |
|---|---|---|
| 400 | Bad request | Validate cohort value and page/size. |
| 401 | Unauthorized | Provide/refresh Bearer token. |
| 403 | Forbidden | Check client permissions. |
| 404 | Not found | Unknown companyDomain or productId; or no related products. |
| 429 | Rate limit exceeded | Retry with exponential backoff; respect Retry-After. |
| 500 | Internal server error | Retry later; contact support if persistent. |
