Sales Call Intelligence API
Programmatic access to every Fireflies call recorded by TRES — enriched with AI summaries, action items, client domains, meeting types, ICP verticals, and HubSpot CRM data. Plus the full TRES Knowledge Base: 171 documents across products, ICPs, pitches, competitors, and more. Updated daily at 08:00 UTC.
Authentication
All endpoints require an API key issued by the TRES Marketing Hub. Pass it in the x-api-key header.
x-api-key: tres_sk_live_YOUR_KEY
Don't have a key? Go to tres.marketing/admin → API Keys → + New API key → set App to Fireflies Pipeline.
Base URL
https://fireflies-api.vercel.app
Call Endpoints
Query, filter, and retrieve enriched Fireflies call records.
Knowledge Base
Send a query, get back the most relevant TRES knowledge base documents — products, ICPs, pitches, competitors, and sales playbooks. Powered by vector similarity search (VoyageAI + pgvector): each of the 19 master documents has its manifest description embedded as a 512-dim vector. At query time the prompt is embedded and cosine-compared against all 19 — top 4 are returned with full content. Perfect for RAG in downstream services like the copywriter and 1-pager generator.
How the Semantic Router Works
Pass a natural-language topic as the query param — e.g. "VC fund accounting" or "FinOS vs Cryptio". Be specific: a focused phrase routes better than a vague keyword.
Claude Haiku reads the manifest of 19 master documents and returns the 1–6 most relevant ones for your query. If routing fails or no query is provided, all 19 masters are returned as a fallback.
Each doc is ~30k chars of synthesized TRES knowledge. Concatenate docs[].content directly into your system prompt — no chunking or embeddings needed.
Available Master Documents (19)
| Document | Category | What it covers |
|---|---|---|
master-finos | Product | Core FinOS product — accounting, GL, month-end close |
master-proof-of-funds | Product | PoF product — customer wallet balance proofs |
master-staking | Product | Native staking rewards tracking |
master-reconciliation | Product | Multi-source reconciliation |
master-erp-integrations | Product | QuickBooks, Xero, NetSuite, SAP integrations |
master-1099-tax | Product | Tax reporting and 1099 forms |
master-icp-exchanges | ICP / Sales | Sales guide: crypto exchanges |
master-icp-funds-vc | ICP / Sales | Sales guide: funds, VCs, hedge funds |
master-icp-web3-native | ICP / Sales | Sales guide: DeFi protocols, DAOs, foundations |
master-icp-banks | ICP / Sales | Sales guide: banks and neobanks |
master-icp-igaming | ICP / Sales | Sales guide: iGaming and crypto casinos |
master-icp-prop-trading | ICP / Sales | Sales guide: prop trading firms |
master-icp-payments | ICP / Sales | Sales guide: payment processors |
master-vs-cryptio | Competitive | Battle card vs Cryptio |
master-vs-bitwave | Competitive | Battle card vs Bitwave |
master-vs-integral | Competitive | Battle card vs Integral |
master-vs-lukka | Competitive | Battle card vs Lukka |
master-sales-playbook | Sales | Full sales process, discovery, objections |
master-social-proof | Sales | Customer case studies and proof points |
Usage Pattern — RAG with Claude
const BASE = "https://intelligence.tres.marketing";
// 1. Fetch routed KB context for your topic
async function getKbContext(topic: string): Promise<string> {
const res = await fetch(
`${BASE}/api/kb/masters?query=${encodeURIComponent(topic)}`,
{ headers: { "x-api-key": process.env.TRES_API_KEY! } }
);
const { docs } = await res.json() as {
docs: { title: string; content: string }[];
};
// Concatenate into a single context block
return docs.map((d) => `## ${d.title}\n\n${d.content}`).join("\n\n---\n\n");
}
// 2. Inject into your Claude prompt
const kbContext = await getKbContext("VC fund accounting pitch");
const response = await anthropic.messages.create({
model: "claude-sonnet-4-6",
system: `You are a TRES sales expert.\n\n<knowledge_base>\n${kbContext}\n</knowledge_base>`,
messages: [{ role: "user", content: "Draft an outbound email for a Series B fund CFO." }],
});Tip: pass the user's intent or call summary as the query — the router will select the 3–5 most relevant master docs so you never over-fill the context window.
Call Object Reference
| Field | Type | Description |
|---|---|---|
fireflies_id | string | Unique Fireflies call UUID |
date | string | Call date — YYYY-MM-DD |
time_utc | string | Start time in UTC — HH:MM |
title | string | Auto-generated call title from Fireflies |
duration_min | string | Duration in minutes |
type | string | Classification: External · Internal · Demo · Other |
client_domains | string | Comma-separated client email domains |
client_emails | string | Comma-separated client email addresses |
tres_participants | string | TRES team members on the call |
meeting_type | string | Stage: Discovery · Demo · Follow-up · QBR … |
keywords | string | AI-extracted topic keywords |
overview | string | Claude-generated call summary |
action_items | string | Claude-extracted next steps |
transcript_url | string | Link to full transcript on Fireflies |
vertical | string | ICP vertical (Exchange · VC · Custodian …) |
hubspot_company_id | string | HubSpot company ID — matched via CRM Bridge |
hubspot_company_name | string | HubSpot company name — matched by domain or email |
Error Codes
| Status | Meaning |
|---|---|
200 | OK — request succeeded |
401 | Missing or invalid API key |
404 | Call ID not found |
500 | Server error — retry or contact TRES |