Deterministically verify whether a company uses specific products.
You send a list of productIds
; the API returns inUse
and a confidence
score per product.
Base URL: https://api.salescaddy.ai/api
Endpoint
POST /companies/{companyDomain}/products-in-use
Path parameters
Name | Type | Required | Description |
---|---|---|---|
companyDomain | string | Yes | Company domain (e.g., hilton.com ) |
Request body
{ "productIds": ["prod_office365", "prod_slack"] }
Send 1–N product IDs. The response is an array with verification results (not paginated).
Example — Verify products in use
curl -sS -X POST "https://api.salescaddy.ai/api/companies/hilton.com/products-in-use" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{ "productIds": ["prod_office365","prod_slack"] }'
const res = await fetch("https://api.salescaddy.ai/api/companies/hilton.com/products-in-use", {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.TOKEN}`, "Content-Type": "application/json" },
body: JSON.stringify({ productIds: ["prod_office365","prod_slack"] })
});
console.log(await res.json());
import os, requests
r = requests.post("https://api.salescaddy.ai/api/companies/hilton.com/products-in-use",
headers={"Authorization": f"Bearer {os.environ['TOKEN']}", "Content-Type":"application/json"},
json={"productIds":["prod_office365","prod_slack"]})
print(r.json())
using System.Text;
var http = new HttpClient();
var payload = new StringContent("{"productIds":["prod_office365","prod_slack"]}", Encoding.UTF8, "application/json");
var res = await http.PostAsync("https://api.salescaddy.ai/api/companies/hilton.com/products-in-use", payload);
Console.WriteLine(await res.Content.ReadAsStringAsync());
Sample response (trimmed):
[
{ "productId": "prod_office365", "inUse": true, "confidence": 0.93 },
{ "productId": "prod_slack", "inUse": false, "confidence": 0.21 }
]
Interpreting results
- inUse — boolean: current belief whether the product is deployed at the company.
- confidence — float 0.0–1.0: strength of evidence supporting the
inUse
value. - Results are independent per product ID you queried.
Tips & best practices
- Idempotency: When retrying POST on transient errors (429/5xx), deduplicate by the exact
(companyDomain, productIds[])
you sent. - Batch intelligently: Send up to dozens of product IDs at once; avoid hundreds/thousands in a single call.
- Pair with discovery: Use Products — Search or Company Products (Paged) to collect candidate
productId
s first. - Gate workflow: Use a confidence threshold (e.g.,
>= 0.8
) before triggering downstream actions. - Monitoring: Track match rates and average confidence by vendor/category to tune your pipeline.
Errors
Code | Meaning | How to fix |
---|---|---|
400 | Bad request | Validate JSON body and productIds array (non-empty strings). |
401 | Unauthorized | Provide/refresh Bearer token. |
403 | Forbidden | Check client permissions. |
404 | Not found | Unknown companyDomain . |
413 | Payload too large | Reduce number of productIds per request; send in smaller batches. |
429 | Rate limit exceeded | Retry with exponential backoff; respect Retry-After . |
500 | Internal server error | Retry later; contact support if persistent. |