CF
Carter Intel
CF
Carter Intel
⚡
Carter Intel API
crm.bensmith.co
Full programmatic access to every feature — contacts, properties, pipeline, campaigns, signals, voice commands, and webhooks. All tRPC procedures use the /api/trpc batch endpoint. REST endpoints are available for tracking, webhooks, and file uploads.
Base URL:
https://crm.bensmith.coAuth: API key (Bearer) or OAuth cookie
53 endpoints · 14 routers
tRPC 11 + superjson · CORS open
Authentication
API Key (recommended) — Generate a key in Settings → API Keys. Pass it as a Bearer token in the Authorization header on every request. Works from any origin (CORS fully open). All protectedProcedure endpoints are accessible.
OAuth cookie — For browser-based access. Complete the Manus OAuth flow; the session cookie is set automatically. Include credentials: 'include' on every fetch.
// ── Option A: API Key (recommended for external tools) ──────────────────────
// Pass your key in the Authorization header — no cookies or OAuth required.
const res = await fetch("https://crm.bensmith.co/api/trpc/briefing.today?batch=1&input=" +
encodeURIComponent(JSON.stringify({ "0": { json: null } })), {
headers: {
"Authorization": "Bearer ci_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Content-Type": "application/json",
}
});
const data = await res.json();
// ── Option B: OAuth session cookie (browser / same-origin) ───────────────────
// After completing the Manus OAuth flow, the session cookie is set automatically.
// Include credentials on every request:
const res2 = await fetch("https://crm.bensmith.co/api/trpc/briefing.today?batch=1&input=...", {
credentials: "include",
headers: { "Content-Type": "application/json" },
});QUERY tRPC Query Format
Queries use GET requests with encoded input.
// tRPC Query (GET) — batch format
const url = "https://crm.bensmith.co/api/trpc/contacts.list?batch=1&input=" +
encodeURIComponent(JSON.stringify({
"0": { json: { page: 1, pageSize: 50, search: "panattoni", warmOnly: false } }
}));
const res = await fetch(url, {
headers: { "Authorization": "Bearer ci_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
});
const data = await res.json();
// data[0].result.data.json → { items: [...], total: 1234 }MUTATION tRPC Mutation Format
Mutations use POST requests with JSON body.
// tRPC Mutation (POST) — batch format
const res = await fetch("https://crm.bensmith.co/api/trpc/contacts.addOne?batch=1", {
method: "POST",
headers: {
"Authorization": "Bearer ci_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Content-Type": "application/json",
},
body: JSON.stringify({
"0": {
json: {
firstName: "John", lastName: "Smith",
title: "VP Acquisitions", company: "Panattoni Development",
email: "[email protected]", contactType: "BTS Developer",
}
}
})
});
const data = await res.json();
// data[0].result.data.json → { id: 29815, firstName: "John", ... }