tRPC type-safe API
Voor TypeScript-projecten kun je rechtstreeks onze AppRouter-types importeren en compile-time gevalideerde calls maken. Geen handgeschreven types, geen OpenAPI-generators.
Installeren
pnpm add @pitchfire/types @trpc/client superjson
Client opzetten
import { createTRPCClient, httpBatchLink } from '@trpc/client';
import superjson from 'superjson';
import type { AppRouter } from '@pitchfire/types';
export const pitchfire = createTRPCClient<AppRouter>({
links: [
httpBatchLink({
url: `https://${SLUG}.pitchfire.app/api/trpc`,
transformer: superjson,
headers: () => ({
authorization: `Bearer ${process.env.PITCHFIRE_TOKEN}`,
}),
}),
],
});Gebruik
// Volledig type-safe — Cmd+Click een procedure-naam voor de definitie
const { campaigns, pagination } = await pitchfire.campaign.list.query({
status: 'ACTIVE',
pageSize: 50,
});
const newCampaign = await pitchfire.campaign.create.mutate({
name: 'Spring promo',
status: 'PLANNED',
budgetCents: 250000,
budgetCurrency: 'EUR',
});
const suggestions = await pitchfire.ai.suggestions.query({
status: 'PENDING',
priority: 'HIGH',
});Beschikbare routers
Alle 19 routers met hun procedure-namen:
workspace— list, current, switch, create, update, archiveteam— list, invite, remove, updateRolesettings— tenant, updateTenant, updateCustomDomain, updateBrandingcampaign— list, byId, create, update, archive, duplicateasset— list, byId, create, update, deletepillarPage— list, byId, create, update, deletelinkedinPost— list, calendar, byId, create, update, deletemediaAsset— list, byId, create, update, deleteautomation— list, byId, create, update, toggleActive, deleteleadScoring— list, create, update, deletesalesAsset— list, create, update, deleteevent— list, upcoming, create, update, deleteadvertising— connections, campaigns, totals, spendTimeline, campaignByIdadCreative— list, byId, create, update, approve, deleteai— suggestions, applySuggestion, dismiss, snooze, injectdashboard— overview, spendByPlatform, campaignActivitycomment— list, create, deleteactivity— listbilling— details, updateDetails, invoices, invoice
Voor elke procedure: .query() (lezen) of .mutate() (schrijven). Inputs en outputs zijn volledig getypeerd via Zod schemas in onze codebase.
Real-time updates
Voor live data (zoals advertising metrics) abonneer je op websocket-updates via Pusher-compatible kanalen — zie Webhooks.