Related - Products

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

NameTypeRequiredDescription
companyDomainstringYesCompany domain (e.g. hilton.com)
productIdstringYesAnchor product ID (e.g. prod_office365)

Query parameters

NameTypeRequiredDefaultDescription
cohortCohortTypeEnumYesOne of: Default, Defined, Aspirational
pageintNo0Page index (0-based)
sizeintNo20Page size (max ~200)

The cohort parameter 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 mattersDefault for broad baseline, Defined for curated peer group, Aspirational for 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

CodeMeaningHow to fix
400Bad requestValidate cohort value and page/size.
401UnauthorizedProvide/refresh Bearer token.
403ForbiddenCheck client permissions.
404Not foundUnknown companyDomain or productId; or no related products.
429Rate limit exceededRetry with exponential backoff; respect Retry-After.
500Internal server errorRetry later; contact support if persistent.