Vendors

Search vendors by company name or domain.

Discover vendors by name or domain, then drill into each vendor’s product catalog.

Base URL: https://api.salescaddy.ai/api


List vendors

Endpoint: GET /vendors

Query parameters

NameTypeRequiredDefaultDescription
vendorstringNoVendor name or domain (e.g. microsoft.com, Microsoft)
fuzzybooleanNofalseEnable non‑exact matching
pageintNo0Page index (0‑based)
sizeintNo20Page size (max 200)

Example — List vendors

curl -sS "https://api.salescaddy.ai/api/vendors?vendor=microsoft.com&fuzzy=false&page=0&size=10" \
  -H "Authorization: Bearer $TOKEN"
const url = "https://api.salescaddy.ai/api/vendors?vendor=microsoft.com&fuzzy=false&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/vendors",
                 params={"vendor":"microsoft.com","fuzzy":"false","page":0,"size":10},
                 headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
print(r.json())
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/vendors?vendor=microsoft.com&fuzzy=false&page=0&size=10");
Console.WriteLine(await res.Content.ReadAsStringAsync());

Sample response (trimmed):

{
  "totalPages": 2,
  "totalElements": 12,
  "content": [
    { "id": "ven_microsoft", "name": "Microsoft", "domain": "microsoft.com" },
    { "id": "ven_microsoft-azure", "name": "Microsoft Azure", "domain": "azure.microsoft.com" }
  ]
}

Notes

  • Use fuzzy=true to broaden matching for partial names.
  • Pagination defaults are page=0, size=20; upper bound for size is typically 200.

Vendor products

Retrieve products associated with a specific vendor domain.

Endpoint: GET /vendors/{vendorDomain}/products

Path parameters

NameTypeRequiredDescription
vendorDomainstringYesVendor domain (e.g. microsoft.com)

Query parameters

NameTypeRequiredDefaultDescription
productNamestringNoFilter by product name
pageintNo0Page index
sizeintNo20Page size (max 200)

Example — Vendor products

curl -sS "https://api.salescaddy.ai/api/vendors/microsoft.com/products?page=0&size=10" \
  -H "Authorization: Bearer $TOKEN"
const url = "https://api.salescaddy.ai/api/vendors/microsoft.com/products?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/vendors/microsoft.com/products",
                 params={"page":0,"size":10},
                 headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
print(r.json())
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/vendors/microsoft.com/products?page=0&size=10");
Console.WriteLine(await res.Content.ReadAsStringAsync());

Sample response (trimmed):

{
  "totalPages": 100,
  "totalElements": 5000,
  "content": [
    {
      "id": "prod_office365",
      "name": "Microsoft 365",
      "description": "Cloud productivity suite",
      "logo": "https://logo.example/m365.svg",
      "category": "Productivity",
      "features": ["Email", "Docs", "Chat"],
      "reviewCount": 1283,
      "starRating": 4.6,
      "avgRating": 4.5,
      "vendor": { "id": "ven_microsoft", "name": "Microsoft", "domain": "microsoft.com" },
      "categoryId": "cat_productivity"
    },
    {
      "id": "prod_azure",
      "name": "Microsoft Azure",
      "description": "Cloud platform & services",
      "logo": "https://logo.example/azure.svg",
      "category": "IaaS/PaaS",
      "features": ["Compute", "Storage", "Networking"],
      "reviewCount": 842,
      "starRating": 4.5,
      "avgRating": 4.4,
      "vendor": { "id": "ven_microsoft", "name": "Microsoft", "domain": "microsoft.com" },
      "categoryId": "cat_cloud_platforms"
    }
  ]
}

Errors

CodeMeaningHow to fix
400Bad requestCheck query types (page/size int, etc.)
401UnauthorizedProvide/refresh Bearer token
404Not foundUnknown vendorDomain
429Rate limit exceededRetry with exponential backoff
500Internal server errorRetry later; contact support if persistent