Dictionary - Product Categories

The categories dictionary provides the taxonomy of all product categories.
Use it to enrich products, build filters, or power a category tree in your UI.

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


Endpoints

  • GET /categories
    Returns the full dictionary (JSON). With export=true → CSV file (binary).

  • GET /categories/{categoryId}
    Returns details for a specific category.

Headers

  • Authorization: Bearer <token> — required
  • X-On-Behalf-Of-User: [email protected] — required only when export=true

Example — Get all categories (JSON)

curl -sS "https://api.salescaddy.ai/api/categories"   -H "Authorization: Bearer $TOKEN"
const url = "https://api.salescaddy.ai/api/categories";
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/categories",
                 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/categories");
Console.WriteLine(await res.Content.ReadAsStringAsync());

Sample response (trimmed):

[
  { "id":"cat_crm", "name":"CRM", "description":"Customer Relationship Management", "parentId":null },
  { "id":"cat_marketing", "name":"Marketing Automation", "description":"Tools for marketing automation", "parentId":null },
  { "id":"cat_email", "name":"Email Marketing", "description":"Campaign and email tools", "parentId":"cat_marketing" }
]

Example — Export categories (CSV)

curl -sS "https://api.salescaddy.ai/api/categories?export=true"   -H "Authorization: Bearer $TOKEN"   -H "X-On-Behalf-Of-User: [email protected]"   --output categories.csv
import fs from "fs";
const res = await fetch("https://api.salescaddy.ai/api/categories?export=true", {
  headers: { Authorization: `Bearer ${process.env.TOKEN}`, "X-On-Behalf-Of-User":"[email protected]" }
});
const file = fs.createWriteStream("categories.csv");
res.body.pipe(file);
with requests.get("https://api.salescaddy.ai/api/categories",
                  params={"export":"true"},
                  headers={
                    "Authorization": f"Bearer {os.environ['TOKEN']}",
                    "X-On-Behalf-Of-User":"[email protected]"
                  },
                  stream=True) as r:
    with open("categories.csv","wb") as f:
        for chunk in r.iter_content(8192):
            if chunk: f.write(chunk)
http.DefaultRequestHeaders.Add("X-On-Behalf-Of-User","[email protected]");
var bytes = await http.GetByteArrayAsync("https://api.salescaddy.ai/api/categories?export=true");
System.IO.File.WriteAllBytes("categories.csv", bytes);

CSV snippet:

id,name,description,parentId
cat_crm,CRM,Customer Relationship Management,
cat_marketing,Marketing Automation,Tools for marketing automation,
cat_email,Email Marketing,Campaign and email tools,cat_marketing

Example — Single category by ID

curl -sS "https://api.salescaddy.ai/api/categories/cat_crm"   -H "Authorization: Bearer $TOKEN"
const res = await fetch("https://api.salescaddy.ai/api/categories/cat_crm", {
  headers: { Authorization: `Bearer ${process.env.TOKEN}` }
});
console.log(await res.json());
r = requests.get("https://api.salescaddy.ai/api/categories/cat_crm",
                 headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
print(r.json())
var res2 = await http.GetAsync("https://api.salescaddy.ai/api/categories/cat_crm");
Console.WriteLine(await res2.Content.ReadAsStringAsync());

Sample response:

{ "id":"cat_crm", "name":"CRM", "description":"Customer Relationship Management", "parentId":null }

Tips & best practices

  • Categories form a hierarchy (use parentId to build a tree).
  • Use categoryId when searching products or joining usage metrics.
  • Cache this dictionary (changes infrequently).
  • For large analytics, prefer CSV export.

Errors

CodeMeaningHow to fix
400Bad requestValidate query/path.
401UnauthorizedProvide/refresh Bearer token.
403ForbiddenCheck client permissions; include X-On-Behalf-Of-User for CSV.
404Not foundCategory not found.
429Rate limit exceededRetry with exponential backoff.
500Internal server errorRetry later; contact support if persistent.