Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling
These are recipes for the same handful of problems most integrations run into, built against the real request and response shapes from the API introduction. Adapt the endpoint, fields, and scopes to the resource you’re working with — the patterns themselves (not the exact payloads) are what’s worth reusing.
Never call the API directly from browser or mobile code — that exposes your key to anyone who opens dev tools. Put a thin proxy in front of it instead: your frontend calls your own backend, and only your backend holds the Famulor key.
// server.js — Express route the frontend can safely callimport express from "express";const app = express();app.use(express.json());app.post("/api/trigger-call", async (req, res) => { const { to_number, assistant_id, lead } = req.body; if (!to_number || !assistant_id) { return res.status(400).json({ error: "to_number and assistant_id are required" }); } const famulorRes = await fetch("https://app.famulor.io/api/v1/calls", { method: "POST", headers: { Authorization: `Bearer ${process.env.FAMULOR_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ to_number, assistant_id, lead }), }); const body = await famulorRes.json(); res.status(famulorRes.status).json(body);});
The frontend never sees FAMULOR_API_KEY — it only talks to /api/trigger-call on your own domain.
Booking webhooks are signed: set a URL on a booking event type, and every delivery carries X-Famulor-Signature: sha256=<hex digest> — an HMAC-SHA256 of the raw request body using the secret shown once when you save the URL. Variable webhooks use the same scheme with their own secret, while assistant-level post-call webhooks are unsigned. Verify the signature before trusting the payload:
import express from "express";import crypto from "node:crypto";const app = express();// express.raw() keeps the exact bytes — required for signature verificationapp.post( "/webhooks/famulor-booking", express.raw({ type: "application/json" }), (req, res) => { const expected = "sha256=" + crypto.createHmac("sha256", process.env.FAMULOR_BOOKING_WEBHOOK_SECRET).update(req.body).digest("hex"); const signature = req.header("X-Famulor-Signature") ?? ""; const a = Buffer.from(signature); const b = Buffer.from(expected); if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) { return res.status(401).send("invalid signature"); } const event = JSON.parse(req.body.toString("utf8")); if (event.event === "booking.created") { // event.data.booking_id, .invitee, .start_time, .end_time, ... } res.status(200).send("ok"); });
Verify against the raw bytes, before any JSON parsing. Re-serializing the body first can change whitespace or key order and silently break the signature check.
To dial a list rather than one number, cap how many calls you fire at once — the API rejects requests once your credit hold or concurrency limit is reached, so an unbounded loop just produces a wall of errors instead of finishing faster.
import { parse } from "csv-parse/sync";import { readFileSync } from "node:fs";const rows = parse(readFileSync("leads.csv"), { columns: true });const CONCURRENCY = 5;async function processBatch(rows) { const results = []; for (let i = 0; i < rows.length; i += CONCURRENCY) { const batch = rows.slice(i, i + CONCURRENCY); const batchResults = await Promise.allSettled( batch.map((row) => famulorRequest("/calls", { method: "POST", body: JSON.stringify({ assistant_id: process.env.ASSISTANT_ID, to_number: row.phone, lead: { name: row.name, company: row.company }, }), }) ) ); results.push(...batchResults); } return results;}
famulorRequest here is the retry-with-backoff helper above — batching gets you controlled concurrency, and the helper absorbs the occasional 429 without failing the whole run. For volume beyond a one-off script, a Campaign or an Automation triggered by CRM data usually needs less custom code to maintain than a batch script you have to keep running.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Famulor","description":"Famulor documentation — build, deploy, and operate AI voice assistants.","colors":{"primary":"#1FD5FA","light":"#67E8FC","dark":"#0BA8C9"},"logo":{"light":"https://mintcdn.com/ouraicall/baoJp-MLrp4Nh8VX/logo/lockup-light.svg?fit=max\u0026auto=format\u0026n=baoJp-MLrp4Nh8VX\u0026q=85\u0026s=fd2b4cadd4821a549ba9fa5783ed619d","dark":"https://mintcdn.com/ouraicall/baoJp-MLrp4Nh8VX/logo/lockup-dark.svg?fit=max\u0026auto=format\u0026n=baoJp-MLrp4Nh8VX\u0026q=85\u0026s=8c5966ded7ffff8de6db3a09bd55f712"},"favicon":"https://mintcdn.com/ouraicall/2UgcT6Kzg4NlgPC2/favicon.svg?fit=max\u0026auto=format\u0026n=2UgcT6Kzg4NlgPC2\u0026q=85\u0026s=b7b1116d604f04ce5ebedef057e0580f","navbar":{"links":[{"href":"https://status.famulor.io","label":"Platform Status"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.famulor.io"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/Famulor"}},"seo":{"metatags":{"twitter:card":"summary_large_image"},"organization":{"name":"Famulor","logo":"https://docs.famulor.io/logo/lockup-light.svg"}},"integrations":{"clarity":{"projectId":"sop2kcwotx"},"ga4":{"measurementId":"G-WPTBT13HB0"}},"banner":{"content":"For AI agents: see the complete **[llms.txt](https://docs.famulor.io/llms.txt)** documentation index.","dismissible":true,"color":{"light":"#000000","dark":"#000000"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":""},{"language":"fr","href":"fr"},{"language":"es","href":"es"},{"language":"de","href":"de"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ouraicall","hasAudioNarration":false,"actualSubdomain":"ouraicall","customDomains":["docs.famulor.io"],"gitSource":{"type":"github","owner":"bekservice","repo":"famulor-multi-tenancy","deployBranch":"main","contentDirectory":"mintlify","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"837052af-37d0-49a0-b690-4af7a4b0dde2","liveDeploymentHistoryId":"6addaf84aa71df2f0249f4d9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6addaf84aa71df2f0249f4d9"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6addaf84aa71df2f0249f4d9","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"API Reference","count":425},{"language":"en","tag":"Documentation","count":132},{"language":"de","tag":"Dokumentation","count":132},{"language":"es","tag":"Documentación","count":132},{"language":"fr","tag":"Documentation","count":132},{"language":"en","tag":"API 1.0 (Legacy)","count":102},{"language":"de","tag":"API 1.0 (Legacy)","count":102},{"language":"es","tag":"API 1.0 (Legacy)","count":102},{"language":"fr","tag":"API 1.0 (Legacy)","count":102},{"language":"default","tag":"Famulor Loop","count":37},{"language":"en","tag":"API Reference","count":35},{"language":"en","tag":"Assistants","count":35},{"language":"default","tag":"Messaging","count":35},{"language":"de","tag":"Assistenten","count":35},{"language":"es","tag":"Asistentes","count":35},{"language":"fr","tag":"Assistants","count":35},{"language":"en","tag":"Channels","count":32},{"language":"de","tag":"API-Referenz","count":32},{"language":"de","tag":"Kanäle","count":32},{"language":"es","tag":"Canales","count":32},{"language":"fr","tag":"Canaux","count":32},{"language":"default","tag":"Knowledge Bases","count":31},{"language":"default","tag":"Automations","count":28},{"language":"en","tag":"Automation","count":27},{"language":"default","tag":"Settings","count":27},{"language":"de","tag":"Automatisierung","count":27},{"language":"es","tag":"Automatización","count":27},{"language":"es","tag":"Referencia de la API","count":27},{"language":"fr","tag":"Automatisation","count":27},{"language":"fr","tag":"Référence API","count":27},{"language":"en","tag":"Telephony","count":25},{"language":"de","tag":"Telefonie","count":25},{"language":"es","tag":"Telefonía","count":25},{"language":"fr","tag":"Téléphonie","count":25},{"language":"en","tag":"AI Assistants","count":24},{"language":"de","tag":"KI-Assistants","count":24},{"language":"es","tag":"Asistentes de IA","count":24},{"language":"fr","tag":"Assistants IA","count":24},{"language":"default","tag":"Assistants","count":20},{"language":"default","tag":"White Label","count":20},{"language":"default","tag":"Tools","count":18},{"language":"en","tag":"Shopify","count":16},{"language":"default","tag":"Integrations","count":16},{"language":"de","tag":"Shopify","count":16},{"language":"es","tag":"Shopify","count":16},{"language":"fr","tag":"Shopify","count":16},{"language":"en","tag":"Getting started","count":11},{"language":"de","tag":"Erste Schritte","count":11},{"language":"es","tag":"Primeros pasos","count":11},{"language":"fr","tag":"Bien démarrer","count":11}],"searchSettings":{"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/integration-examples","slug":"/api-reference/integration-examples","pageMetadata":{"title":"API integration examples","description":"Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling","href":"/api-reference/integration-examples"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`These are recipes for the same handful of problems most integrations run into, built against the real request and response shapes from the `,_jsx(_components.a,{href:`/api-reference/introduction`,children:`API introduction`}),`. Adapt the endpoint, fields, and scopes to the resource you’re working with — the patterns themselves (not the exact payloads) are what’s worth reusing.`]}),`\n`,_jsx(Heading,{level:`2`,id:`keep-the-api-key-off-the-client`,children:`Keep the API key off the client`}),`\n`,_jsx(_components.p,{children:`Never call the API directly from browser or mobile code — that exposes your key to anyone who opens dev tools. Put a thin proxy in front of it instead: your frontend calls your own backend, and only your backend holds the Famulor key.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`24`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`24`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// server.js — Express route the frontend can safely call`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` express`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"express\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` app`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` express`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`app`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`use`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`express`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`());`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`app`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`post`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/api/trigger-call\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`req`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`to_number`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`assistant_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`lead`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` req`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`to_number`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`assistant_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`error:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"to_number and assistant_id are required\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` famulorRes`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://app.famulor.io/api/v1/calls\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` method:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"POST\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Authorization:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `Bearer \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`process`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`FAMULOR_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"application/json\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`to_number`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`assistant_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`lead`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` body`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` famulorRes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`famulorRes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The frontend never sees `,_jsx(_components.code,{children:`FAMULOR_API_KEY`}),` — it only talks to `,_jsx(_components.code,{children:`/api/trigger-call`}),` on your own domain.`]}),`\n`,_jsx(Heading,{level:`2`,id:`retry-with-backoff`,children:`Retry with backoff`}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.code,{children:`429`}),` or a `,_jsx(_components.code,{children:`5xx`}),` is usually worth retrying, not failing on immediately. Back off between attempts instead of hammering the API:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`21`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` famulorRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`options`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`maxRetries`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` attempt`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`attempt`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` maxRetries`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`attempt`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`++`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` res`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`https://app.famulor.io/api/v1\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`path`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ...`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Authorization:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `Bearer \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`process`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`FAMULOR_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"application/json\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ...`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`headers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ok`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`429`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`500`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`502`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`503`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`].`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`includes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`||`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` attempt`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` maxRetries`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` body`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`catch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ({}));`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` throw`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`?.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`?.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `Request failed with \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` delayMs`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 2`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` **`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` attempt`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 500`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Math`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`random`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 250`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` Promise`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`r`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` setTimeout`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`r`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`delayMs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Each failed attempt roughly doubles the wait (500ms, 1s, 2s…) with a little random jitter so parallel callers don’t all retry in lockstep.`}),`\n`,_jsx(Heading,{level:`2`,id:`receive-webhooks`,children:`Receive webhooks`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/assistants/native-calendar#webhooks`,children:`Booking webhooks`}),` are signed: set a URL on a booking event type, and every delivery carries `,_jsx(_components.code,{children:`X-Famulor-Signature: sha256=\u003chex digest>`}),` — an HMAC-SHA256 of the `,_jsx(_components.strong,{children:`raw`}),` request body using the secret shown once when you save the URL. `,_jsx(_components.a,{href:`/assistants/variables#verifying-the-signature`,children:`Variable webhooks`}),` use the same scheme with their own secret, while assistant-level `,_jsx(_components.a,{href:`/assistants/webhooks`,children:`post-call webhooks`}),` are unsigned. Verify the signature before trusting the payload:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`27`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`27`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` express`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"express\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` crypto`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"node:crypto\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` app`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` express`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// express.raw() keeps the exact bytes — required for signature verification`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`app`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`post`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/webhooks/famulor-booking\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` express`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`raw`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"application/json\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`req`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` expected`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"sha256=\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` crypto`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`createHmac`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sha256\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`FAMULOR_BOOKING_WEBHOOK_SECRET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`update`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`req`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`digest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"hex\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` signature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` req`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`header`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"X-Famulor-Signature\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`??`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` a`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signature`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` b`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`expected`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`a`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !==`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` b`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`crypto`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`timingSafeEqual`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`a`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`b`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`401`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`send`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"invalid signature\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` event`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`parse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`req`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"utf8\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`event`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"booking.created\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // event.data.booking_id, .invitee, .start_time, .end_time, ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`200`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`send`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ok\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Verify against the raw bytes, before any JSON parsing. Re-serializing the body first can change whitespace or key order and silently break the signature check.`})}),`\n`,_jsx(Heading,{level:`2`,id:`batch-call-a-csv`,children:`Batch-call a CSV`}),`\n`,_jsx(_components.p,{children:`To dial a list rather than one number, cap how many calls you fire at once — the API rejects requests once your credit hold or concurrency limit is reached, so an unbounded loop just produces a wall of errors instead of finishing faster.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`26`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`26`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`parse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"csv-parse/sync\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`readFileSync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"node:fs\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` rows`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` parse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`readFileSync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"leads.csv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`), { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`columns:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` CONCURRENCY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` processBatch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`rows`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` results`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [];`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` rows`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` CONCURRENCY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` batch`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` rows`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`slice`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`i`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` CONCURRENCY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` batchResults`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` Promise`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`allSettled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` batch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`row`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` famulorRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/calls\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` method:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"POST\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` assistant_id:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`ASSISTANT_ID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` to_number:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` row`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`phone`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` lead:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`name:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` row`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`company:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` row`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`company`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` })`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` );`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` results`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`push`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`...`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`batchResults`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` results`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`famulorRequest`}),` here is the retry-with-backoff helper above — batching gets you controlled concurrency, and the helper absorbs the occasional `,_jsx(_components.code,{children:`429`}),` without failing the whole run. For volume beyond a one-off script, a `,_jsx(_components.a,{href:`/campaigns/overview`,children:`Campaign`}),` or an `,_jsx(_components.a,{href:`/automations/overview`,children:`Automation`}),` triggered by CRM data usually needs less custom code to maintain than a batch script you have to keep running.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"API integration examples","description":"Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling","href":"/api-reference/integration-examples"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Keep the API key off the client","slug":"keep-the-api-key-off-the-client","depth":2,"children":[]},{"title":"Retry with backoff","slug":"retry-with-backoff","depth":2,"children":[]},{"title":"Receive webhooks","slug":"receive-webhooks","depth":2,"children":[]},{"title":"Batch-call a CSV","slug":"batch-call-a-csv","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ouraicall","siteName":"Famulor","title":"API integration examples - Famulor","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/integration-examples","matchLevel":0},"fr":{"href":"/fr/api-reference/integration-examples","matchLevel":1},"es":{"href":"/es/api-reference/integration-examples","matchLevel":1},"de":{"href":"/de/api-reference/integration-examples","matchLevel":1}}},"lastModified":"2026-08-27T20:18:41.549Z","originalFileLocation":"api-reference/integration-examples.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling\">\u003cmeta data-mint-head name=\"application-name\" content=\"Famulor\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"API integration examples - Famulor\">\u003cmeta data-mint-head property=\"og:description\" content=\"Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Famulor\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.famulor.io/api-reference/integration-examples\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ouraicall.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=API+integration+examples\u0026amp;description=Common+patterns+for+wiring+the+API+into+your+own+backend%3A+proxying+keys%2C+retrying+safely%2C+receiving+webhooks%2C+and+batch+calling\u0026amp;theme=cc4516d305bac9e7bd8e915a\u0026amp;signature=c8c95fbf20c27f5060c37738a9cd09a17f96d39e21608c3b1cb47407ed6cee34\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"API integration examples - Famulor\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ouraicall.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=API+integration+examples\u0026amp;description=Common+patterns+for+wiring+the+API+into+your+own+backend%3A+proxying+keys%2C+retrying+safely%2C+receiving+webhooks%2C+and+batch+calling\u0026amp;theme=cc4516d305bac9e7bd8e915a\u0026amp;signature=c8c95fbf20c27f5060c37738a9cd09a17f96d39e21608c3b1cb47407ed6cee34\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/ouraicall/rrdiFjUhl62ZvRGI/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Famulor\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1FD5FA\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.famulor.io/api-reference/integration-examples\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/integration-examples.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.famulor.io/api-reference/integration-examples\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.famulor.io/fr/api-reference/integration-examples\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.famulor.io/es/api-reference/integration-examples\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://docs.famulor.io/de/api-reference/integration-examples\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.famulor.io/api-reference/integration-examples\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.famulor.io/#organization\",\"name\":\"Famulor\",\"url\":\"https://docs.famulor.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.famulor.io/logo/lockup-light.svg\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.famulor.io#website\",\"name\":\"Famulor\",\"url\":\"https://docs.famulor.io\",\"publisher\":{\"@id\":\"https://docs.famulor.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.famulor.io/api-reference/integration-examples#webpage\",\"url\":\"https://docs.famulor.io/api-reference/integration-examples\",\"name\":\"API integration examples\",\"description\":\"Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling\",\"dateModified\":\"2026-08-27T20:18:41.549Z\",\"isPartOf\":{\"@id\":\"https://docs.famulor.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.famulor.io/api-reference/integration-examples#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.famulor.io/api-reference/integration-examples#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.famulor.io/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API integration examples\",\"item\":\"https://docs.famulor.io/api-reference/integration-examples\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.famulor.io/api-reference/integration-examples#article\",\"headline\":\"API integration examples\",\"name\":\"API integration examples\",\"description\":\"Common patterns for wiring the API into your own backend: proxying keys, retrying safely, receiving webhooks, and batch calling\",\"url\":\"https://docs.famulor.io/api-reference/integration-examples\",\"mainEntityOfPage\":{\"@id\":\"https://docs.famulor.io/api-reference/integration-examples#webpage\"},\"dateModified\":\"2026-08-27T20:18:41.549Z\",\"publisher\":{\"@id\":\"https://docs.famulor.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.famulor.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Famulor\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Famulor","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"Automation","pages":[{"title":"Automation","href":"/automations/overview"}]},{"tab":"White Label","pages":[{"title":"White Label","href":"/admin/tenants-and-whitelabel"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"API introduction","description":"Authenticate with the REST API and start building","href":"/api-reference/introduction"},{"title":"API integration examples","href":"/api-reference/integration-examples"},{"title":"Outbound SMS","description":"Send text messages from a workspace phone number — requirements, segment billing, and the send endpoint","href":"/api-reference/sms"},{"title":"Signed webhook subscriptions","openapi":"GET /webhooks","href":"/api-reference/webhooks/list-webhook-subscriptions"},{"title":"Signed webhook subscriptions","openapi":"POST /webhooks","href":"/api-reference/webhooks/create-webhook-subscription"},{"title":"Signed webhook subscriptions","openapi":"GET /webhooks/{id}","href":"/api-reference/webhooks/get-webhook-subscription"},{"title":"Signed webhook subscriptions","openapi":"DELETE /webhooks/{id}","href":"/api-reference/webhooks/delete-webhook-subscription"},{"title":"Ask Milian","href":"/api-reference/milian"}]},{"group":"Account","pages":[{"title":"Get current credential","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me","href":"/api-reference/account/get-current-credential"},{"title":"Get Academy progress","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /academy","href":"/api-reference/account/get-academy-progress"},{"title":"Get low-credit warning preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/credit-notifications","href":"/api-reference/account/get-low-credit-warning-preferences"},{"title":"Update low-credit warning preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /me/credit-notifications","href":"/api-reference/account/update-low-credit-warning-preferences"}]},{"group":"Billing","pages":[{"title":"Get balance","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /balance","href":"/api-reference/billing/get-balance"},{"title":"Get workspace usage rates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /usage/rates","href":"/api-reference/billing/get-workspace-usage-rates"},{"title":"Estimate assistant or Loop phone rates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /usage/telephony-rates","href":"/api-reference/billing/estimate-assistant-or-loop-phone-rates"},{"title":"Get referrals","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /referrals","href":"/api-reference/billing/get-referrals"},{"title":"Get workspace payment status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /billing/payment-status","href":"/api-reference/billing/get-workspace-payment-status"},{"title":"Create invoice payment link","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /billing/invoice-payment","href":"/api-reference/billing/create-invoice-payment-link"},{"title":"Create billing management link","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /billing/portal","href":"/api-reference/billing/create-billing-management-link"},{"title":"List add-on trials","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /billing/addon-trials","href":"/api-reference/billing/list-add-on-trials"},{"title":"Start add-on trial checkout","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /billing/addon-trials","href":"/api-reference/billing/start-add-on-trial-checkout"},{"title":"Cancel add-on trial renewal","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /billing/addon-trials","href":"/api-reference/billing/cancel-add-on-trial-renewal"},{"title":"Review subscription change","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /billing/subscription-change/review","href":"/api-reference/billing/review-subscription-change"},{"title":"Confirm subscription change","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /billing/subscription-change/confirm","href":"/api-reference/billing/confirm-subscription-change"},{"title":"List transactions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /transactions","href":"/api-reference/billing/list-transactions"}]},{"group":"API Keys","pages":[{"title":"List API keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api-keys","href":"/api-reference/api-keys/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api-keys","href":"/api-reference/api-keys/create-an-api-key"},{"title":"Get an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api-keys/{id}","href":"/api-reference/api-keys/get-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api-keys/{id}","href":"/api-reference/api-keys/revoke-an-api-key"}]},{"group":"Workspaces","pages":[{"title":"Create an API key for a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /workspaces/{workspace_id}/api-keys","href":"/api-reference/workspaces/create-an-api-key-for-a-workspace"},{"title":"List workspaces","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /workspaces","href":"/api-reference/workspaces/list-workspaces"},{"title":"Create a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /workspaces","href":"/api-reference/workspaces/create-a-workspace"},{"title":"List team members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /team-members","href":"/api-reference/workspaces/list-team-members"},{"title":"Invite team member","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /team-members","href":"/api-reference/workspaces/invite-team-member"},{"title":"Change team member role","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /team-members/{id}","href":"/api-reference/workspaces/change-team-member-role"},{"title":"Remove team member","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /team-members/{id}","href":"/api-reference/workspaces/remove-team-member"},{"title":"Transfer workspace ownership","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /workspace/transfer-ownership","href":"/api-reference/workspaces/transfer-workspace-ownership"}]},{"group":"Assistants","pages":[{"title":"List assistants","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants","href":"/api-reference/assistants/list-assistants"},{"title":"Create an assistant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants","href":"/api-reference/assistants/create-an-assistant"},{"title":"Get an assistant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}","href":"/api-reference/assistants/get-an-assistant"},{"title":"Tidy up an assistant flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/flow/layout","href":"/api-reference/assistants/tidy-up-an-assistant-flow"},{"title":"Get saved announcement audio","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/announcements","href":"/api-reference/assistants/get-saved-announcement-audio"},{"title":"Prepare saved announcement audio","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/announcements","href":"/api-reference/assistants/prepare-saved-announcement-audio"},{"title":"Play saved announcement audio","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/announcements/{assetId}/audio","href":"/api-reference/assistants/play-saved-announcement-audio"},{"title":"Update an assistant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /assistants/{id}","href":"/api-reference/assistants/update-an-assistant"},{"title":"Update an assistant (PUT alias)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /assistants/{id}","href":"/api-reference/assistants/update-an-assistant-put-alias"},{"title":"Delete an assistant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /assistants/{id}","href":"/api-reference/assistants/delete-an-assistant"},{"title":"Get assistant compliance review","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/compliance-review","href":"/api-reference/assistants/get-assistant-compliance-review"},{"title":"Request manual compliance review","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/compliance-review","href":"/api-reference/assistants/request-manual-compliance-review"},{"title":"Get assistant backup voices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/fallback-voices","href":"/api-reference/assistants/get-assistant-backup-voices"},{"title":"Update assistant backup voices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /assistants/{id}/fallback-voices","href":"/api-reference/assistants/update-assistant-backup-voices"},{"title":"Get assistant variables","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/variables","href":"/api-reference/assistants/get-assistant-variables"},{"title":"Update assistant variables","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /assistants/{id}/variables","href":"/api-reference/assistants/update-assistant-variables"},{"title":"Set audio first message","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/greeting-audio","href":"/api-reference/assistants/set-audio-first-message"},{"title":"Remove audio first message","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /assistants/{id}/greeting-audio","href":"/api-reference/assistants/remove-audio-first-message"},{"title":"Set assistant picture","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/avatar","href":"/api-reference/assistants/set-assistant-picture"},{"title":"Remove assistant picture","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /assistants/{id}/avatar","href":"/api-reference/assistants/remove-assistant-picture"}]},{"group":"Translate","pages":[{"title":"Create translation room","openapi":"POST /translation-sessions","href":"/api-reference/translation/create"},{"title":"List translation room","openapi":"GET /translation-sessions","href":"/api-reference/translation/list"},{"title":"Get translation room","openapi":"GET /translation-sessions/{id}","href":"/api-reference/translation/get"},{"title":"Start translation room","openapi":"POST /translation-sessions/{id}/start","href":"/api-reference/translation/start"},{"title":"Call translation participant","openapi":"POST /translation-sessions/{id}/call","href":"/api-reference/translation/call"},{"title":"Invite translation room","openapi":"POST /translation-sessions/{id}/invite","href":"/api-reference/translation/invite"},{"title":"End translation room","openapi":"POST /translation-sessions/{id}/end","href":"/api-reference/translation/end"}]},{"group":"Versions","pages":[{"title":"List assistant versions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/versions","href":"/api-reference/versions/list-assistant-versions"},{"title":"Get assistant version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/versions/{versionId}","href":"/api-reference/versions/get-assistant-version"},{"title":"Rename assistant version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /assistants/{id}/versions/{versionId}","href":"/api-reference/versions/rename-assistant-version"},{"title":"Delete assistant version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /assistants/{id}/versions/{versionId}","href":"/api-reference/versions/delete-assistant-version"},{"title":"Restore assistant version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/versions/{versionId}/restore","href":"/api-reference/versions/restore-assistant-version"}]},{"group":"Simulations","pages":[{"title":"List simulation tests","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/tests","href":"/api-reference/simulations/list-simulation-tests"},{"title":"Create simulation test","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/tests","href":"/api-reference/simulations/create-simulation-test"},{"title":"Create simulation test from call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/tests/from-call","href":"/api-reference/simulations/create-simulation-test-from-call"},{"title":"Update simulation test","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /assistants/{id}/tests/{testId}","href":"/api-reference/simulations/update-simulation-test"},{"title":"Delete simulation test","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /assistants/{id}/tests/{testId}","href":"/api-reference/simulations/delete-simulation-test"},{"title":"Run simulation test","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/tests/{testId}/run","href":"/api-reference/simulations/run-simulation-test"}]},{"group":"Voices","pages":[{"title":"List voices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /voices","href":"/api-reference/voices/list-voices"},{"title":"Submit voice clone job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /voices/clone","href":"/api-reference/voices/submit-voice-clone-job"}]},{"group":"Avatars","pages":[{"title":"Check custom avatar creation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /avatars/capability","href":"/api-reference/avatars/check-custom-avatar-creation"},{"title":"Prepare custom avatar upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /avatars/uploads","href":"/api-reference/avatars/prepare-custom-avatar-upload"},{"title":"Create private custom avatar","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /avatars","href":"/api-reference/avatars/create-private-custom-avatar"},{"title":"List private custom avatars","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /avatars","href":"/api-reference/avatars/list-private-custom-avatars"},{"title":"Get custom avatar","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /avatars/{id}","href":"/api-reference/avatars/get-custom-avatar"},{"title":"Delete custom avatar","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /avatars/{id}","href":"/api-reference/avatars/delete-custom-avatar"},{"title":"Browse avatar library","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /avatars/catalog","href":"/api-reference/avatars/browse-avatar-library"}]},{"group":"Tools","pages":[{"title":"List Perplexity models","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools/perplexity/models","href":"/api-reference/tools/list-perplexity-models"},{"title":"Connect Magicline Open API","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools/magicline","href":"/api-reference/tools/connect-magicline-open-api"},{"title":"Connect Magicline Connect API","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools/magicline-connect","href":"/api-reference/tools/connect-magicline-connect-api"},{"title":"Find Magicline Connect API studios","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools/magicline-connect/studios","href":"/api-reference/tools/find-magicline-connect-api-studios"},{"title":"List reusable tools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tools","href":"/api-reference/tools/list-reusable-tools"},{"title":"Create a tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools","href":"/api-reference/tools/create-a-tool"},{"title":"List assigned tools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/tools","href":"/api-reference/tools/list-assigned-tools"},{"title":"Replace assigned tools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /assistants/{id}/tools","href":"/api-reference/tools/replace-assigned-tools"},{"title":"Get a tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tools/{id}","href":"/api-reference/tools/get-a-tool"},{"title":"Update a tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /tools/{id}","href":"/api-reference/tools/update-a-tool"},{"title":"Archive an unused tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /tools/{id}","href":"/api-reference/tools/archive-an-unused-tool"},{"title":"Get tool usage and impact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tools/{id}/usage","href":"/api-reference/tools/get-tool-usage-and-impact"},{"title":"List reusable tool runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tools/{id}/runs","href":"/api-reference/tools/list-reusable-tool-runs"},{"title":"Test HTTP tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools/test","href":"/api-reference/tools/test-http-tool"},{"title":"Discover MCP tool functions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools/discover","href":"/api-reference/tools/discover-mcp-tool-functions"},{"title":"Reauthorize an OAuth MCP tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools/{id}/reauthorize","href":"/api-reference/tools/reauthorize-an-oauth-mcp-tool"},{"title":"List tool versions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tools/{id}/versions","href":"/api-reference/tools/list-tool-versions"},{"title":"Restore a tool version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tools/{id}/versions/{revision}/restore","href":"/api-reference/tools/restore-a-tool-version"}]},{"group":"Knowledge Bases","pages":[{"title":"List knowledge bases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases","href":"/api-reference/knowledge-bases/list-knowledge-bases"},{"title":"Create a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases","href":"/api-reference/knowledge-bases/create-a-knowledge-base"},{"title":"Get a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}","href":"/api-reference/knowledge-bases/get-a-knowledge-base"},{"title":"Search knowledge or query a table","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/search","href":"/api-reference/knowledge-bases/search-knowledge-or-query-a-table"},{"title":"Delete a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /knowledge-bases/{id}","href":"/api-reference/knowledge-bases/delete-a-knowledge-base"},{"title":"List assistants using a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/assistants","href":"/api-reference/knowledge-bases/list-assistants-using-a-knowledge-base"},{"title":"Replace assistants using a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /knowledge-bases/{id}/assistants","href":"/api-reference/knowledge-bases/replace-assistants-using-a-knowledge-base"},{"title":"List FAQ entries and knowledge gaps","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/faqs","href":"/api-reference/knowledge-bases/list-faq-entries-and-knowledge-gaps"},{"title":"Create and publish an FAQ entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/faqs","href":"/api-reference/knowledge-bases/create-and-publish-an-faq-entry"},{"title":"Get an FAQ entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/faqs/{faqId}","href":"/api-reference/knowledge-bases/get-an-faq-entry"},{"title":"Review or update an FAQ entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /knowledge-bases/{id}/faqs/{faqId}","href":"/api-reference/knowledge-bases/review-or-update-an-faq-entry"},{"title":"Delete an FAQ entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /knowledge-bases/{id}/faqs/{faqId}","href":"/api-reference/knowledge-bases/delete-an-faq-entry"},{"title":"List documents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/documents","href":"/api-reference/knowledge-bases/list-documents"},{"title":"Add or retry a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/documents","href":"/api-reference/knowledge-bases/add-or-retry-a-document"},{"title":"List document chunks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/documents/{docId}/chunks","href":"/api-reference/knowledge-bases/list-document-chunks"},{"title":"Delete a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /knowledge-bases/{id}/documents/{docId}","href":"/api-reference/knowledge-bases/delete-a-document"},{"title":"Delete documents in bulk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/documents/delete","href":"/api-reference/knowledge-bases/delete-documents-in-bulk"},{"title":"List crawl sources","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/crawl-sources","href":"/api-reference/knowledge-bases/list-crawl-sources"},{"title":"Create a crawl source","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/crawl-sources","href":"/api-reference/knowledge-bases/create-a-crawl-source"},{"title":"Discover website crawl paths","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/crawl-sources/discover","href":"/api-reference/knowledge-bases/discover-website-crawl-paths"},{"title":"Get a crawl source","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/crawl-sources/{sourceId}","href":"/api-reference/knowledge-bases/get-a-crawl-source"},{"title":"Update a crawl source","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /knowledge-bases/{id}/crawl-sources/{sourceId}","href":"/api-reference/knowledge-bases/update-a-crawl-source"},{"title":"Delete a crawl source","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /knowledge-bases/{id}/crawl-sources/{sourceId}","href":"/api-reference/knowledge-bases/delete-a-crawl-source"},{"title":"List indexed crawl-source pages","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/crawl-sources/{sourceId}/pages","href":"/api-reference/knowledge-bases/list-indexed-crawl-source-pages"},{"title":"Run a crawl now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/crawl-sources/{sourceId}/run","href":"/api-reference/knowledge-bases/run-a-crawl-now"},{"title":"List cloud drive sources","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/drive-sources","href":"/api-reference/knowledge-bases/list-cloud-drive-sources"},{"title":"Create a cloud drive source","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/drive-sources","href":"/api-reference/knowledge-bases/create-a-cloud-drive-source"},{"title":"Get a cloud drive source","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases/{id}/drive-sources/{sourceId}","href":"/api-reference/knowledge-bases/get-a-cloud-drive-source"},{"title":"Update a cloud drive source","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /knowledge-bases/{id}/drive-sources/{sourceId}","href":"/api-reference/knowledge-bases/update-a-cloud-drive-source"},{"title":"Delete a cloud drive source","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /knowledge-bases/{id}/drive-sources/{sourceId}","href":"/api-reference/knowledge-bases/delete-a-cloud-drive-source"},{"title":"Run a cloud drive sync now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/{id}/drive-sources/{sourceId}/run","href":"/api-reference/knowledge-bases/run-a-cloud-drive-sync-now"}]},{"group":"Calls","pages":[{"title":"List calls","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /calls","href":"/api-reference/calls/list-calls"},{"title":"Start an outbound call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /calls","href":"/api-reference/calls/start-an-outbound-call"},{"title":"Get a call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /calls/{id}","href":"/api-reference/calls/get-a-call"},{"title":"Verify call inputs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /calls/{id}/verify-inputs","href":"/api-reference/calls/verify-call-inputs"},{"title":"Live call control","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /calls/{id}/live-control","href":"/api-reference/calls/live-call-control"},{"title":"Get a call recording URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /calls/{id}/recording","href":"/api-reference/calls/get-a-call-recording-url"},{"title":"Run call history actions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /calls/actions","href":"/api-reference/calls/run-call-history-actions"},{"title":"Start outbound WhatsApp voice call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /calls/whatsapp-outbound","href":"/api-reference/calls/start-outbound-whatsapp-voice-call"}]},{"group":"History","pages":[{"title":"List conversation history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /history","href":"/api-reference/history/list-conversation-history"},{"title":"List saved History views","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /history/views","href":"/api-reference/history/list-saved-history-views"},{"title":"Create a saved History view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /history/views","href":"/api-reference/history/create-a-saved-history-view"},{"title":"Get a saved History view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /history/views/{id}","href":"/api-reference/history/get-a-saved-history-view"},{"title":"Update a saved History view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /history/views/{id}","href":"/api-reference/history/update-a-saved-history-view"},{"title":"Delete a saved History view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /history/views/{id}","href":"/api-reference/history/delete-a-saved-history-view"},{"title":"Get an email conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /history/emails/{id}","href":"/api-reference/history/get-an-email-conversation"},{"title":"Get a messaging conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /history/messaging/{id}","href":"/api-reference/history/get-a-messaging-conversation"},{"title":"Run history actions on any channel","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /history/actions","href":"/api-reference/history/run-history-actions-on-any-channel"},{"title":"Dismiss a message label","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /history/inbox-labels/{id}/dismiss","href":"/api-reference/history/dismiss-a-message-label"},{"title":"Get message label settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /inbox-labels/settings","href":"/api-reference/history/get-message-label-settings"},{"title":"Update message label settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /inbox-labels/settings","href":"/api-reference/history/update-message-label-settings"}]},{"group":"QA","pages":[{"title":"List QA runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /qa/runs","href":"/api-reference/qa/list-qa-runs"},{"title":"Create QA run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /qa/runs","href":"/api-reference/qa/create-qa-run"},{"title":"Get QA run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /qa/runs/{id}","href":"/api-reference/qa/get-qa-run"}]},{"group":"Callbacks","pages":[{"title":"List scheduled callbacks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /scheduled-callbacks","href":"/api-reference/callbacks/list-scheduled-callbacks"},{"title":"Cancel a scheduled callback","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /scheduled-callbacks/{id}","href":"/api-reference/callbacks/cancel-a-scheduled-callback"}]},{"group":"Campaigns","pages":[{"title":"List campaigns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns","href":"/api-reference/campaigns/list-campaigns"},{"title":"Create a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /campaigns","href":"/api-reference/campaigns/create-a-campaign"},{"title":"Get a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns/{id}","href":"/api-reference/campaigns/get-a-campaign"},{"title":"Update a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /campaigns/{id}","href":"/api-reference/campaigns/update-a-campaign"},{"title":"Delete a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /campaigns/{id}","href":"/api-reference/campaigns/delete-a-campaign"},{"title":"Start a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /campaigns/{id}/start","href":"/api-reference/campaigns/start-a-campaign"},{"title":"Stop a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /campaigns/{id}/stop","href":"/api-reference/campaigns/stop-a-campaign"},{"title":"List campaign deliveries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns/{id}/deliveries","href":"/api-reference/campaigns/list-campaign-deliveries"},{"title":"Get campaign stats","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns/{id}/stats","href":"/api-reference/campaigns/get-campaign-stats"}]},{"group":"Leads","pages":[{"title":"List leads","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns/{id}/leads","href":"/api-reference/leads/list-leads"},{"title":"Add leads","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /campaigns/{id}/leads","href":"/api-reference/leads/add-leads"},{"title":"Get a campaign lead","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns/{id}/leads/{leadId}","href":"/api-reference/leads/get-a-campaign-lead"},{"title":"Update a campaign lead","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /campaigns/{id}/leads/{leadId}","href":"/api-reference/leads/update-a-campaign-lead"},{"title":"Remove a lead from a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /campaigns/{id}/leads/{leadId}","href":"/api-reference/leads/remove-a-lead-from-a-campaign"},{"title":"List campaign variable sources","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /variables/catalog","href":"/api-reference/leads/list-campaign-variable-sources"},{"title":"List customer memories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /contacts/memory","href":"/api-reference/leads/list-customer-memories"},{"title":"Get customer memory","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /contacts/{id}/memory","href":"/api-reference/leads/get-customer-memory"},{"title":"Update customer memory","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /contacts/{id}/memory","href":"/api-reference/leads/update-customer-memory"},{"title":"Erase customer memory","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /contacts/{id}/memory","href":"/api-reference/leads/erase-customer-memory"},{"title":"Assign leads to a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /campaigns/{id}/leads/assign","href":"/api-reference/leads/assign-leads-to-a-campaign"},{"title":"List Audience contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /leads","href":"/api-reference/leads/list-audience-contacts"},{"title":"Create an Audience contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /leads","href":"/api-reference/leads/create-an-audience-contact"},{"title":"List contact channels","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /leads/{id}/channels","href":"/api-reference/leads/list-contact-channels"},{"title":"Replace contact channels","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /leads/{id}/channels","href":"/api-reference/leads/replace-contact-channels"},{"title":"Merge Audience contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /leads/{id}/merge","href":"/api-reference/leads/merge-audience-contacts"}]},{"group":"Segments","pages":[{"title":"List segments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /segments","href":"/api-reference/segments/list-segments"},{"title":"Create a segment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /segments","href":"/api-reference/segments/create-a-segment"},{"title":"Get a segment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /segments/{id}","href":"/api-reference/segments/get-a-segment"},{"title":"Update a segment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /segments/{id}","href":"/api-reference/segments/update-a-segment"},{"title":"Delete a segment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /segments/{id}","href":"/api-reference/segments/delete-a-segment"},{"title":"List a segment's leads","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /segments/{id}/leads","href":"/api-reference/segments/list-a-segments-leads"}]},{"group":"Suppression","pages":[{"title":"List suppression entries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /suppression-list","href":"/api-reference/suppression/list-suppression-entries"},{"title":"Add a suppression entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /suppression-list","href":"/api-reference/suppression/add-a-suppression-entry"},{"title":"Restore contact consent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /suppression-list/{id}","href":"/api-reference/suppression/restore-contact-consent"}]},{"group":"Phone Numbers","pages":[{"title":"List phone numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers","href":"/api-reference/phone-numbers/list-phone-numbers"},{"title":"Buy a phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /phone-numbers","href":"/api-reference/phone-numbers/buy-a-phone-number"},{"title":"List regulatory number verifications","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers/verifications","href":"/api-reference/phone-numbers/list-regulatory-number-verifications"},{"title":"Submit regulatory number verification","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /phone-numbers/verifications","href":"/api-reference/phone-numbers/submit-regulatory-number-verification"},{"title":"List countries requiring number verification","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers/verifications/catalog","href":"/api-reference/phone-numbers/list-countries-requiring-number-verification"},{"title":"Get number verification requirements","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers/verifications/requirements","href":"/api-reference/phone-numbers/get-number-verification-requirements"},{"title":"Get regulatory number verification","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers/verifications/{id}","href":"/api-reference/phone-numbers/get-regulatory-number-verification"},{"title":"Search purchasable numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers/available","href":"/api-reference/phone-numbers/search-purchasable-numbers"},{"title":"Get a phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers/{id}","href":"/api-reference/phone-numbers/get-a-phone-number"},{"title":"Get SMS registration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers/{id}/sms-registration","href":"/api-reference/phone-numbers/get-sms-registration"},{"title":"Prepare, check, correct or attach SMS registration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /phone-numbers/{id}/sms-registration","href":"/api-reference/phone-numbers/prepare-check-correct-or-attach-sms-registration"},{"title":"Update a phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /phone-numbers/{id}","href":"/api-reference/phone-numbers/update-a-phone-number"},{"title":"Release or delete a phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /phone-numbers/{id}","href":"/api-reference/phone-numbers/release-or-delete-a-phone-number"},{"title":"Get workspace SMS registration billing","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /billing/sms-registration","href":"/api-reference/billing/get-workspace-sms-registration-billing"},{"title":"Pay for or cancel SMS registration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /billing/sms-registration","href":"/api-reference/billing/pay-for-or-cancel-sms-registration"}]},{"group":"Caller IDs","pages":[{"title":"List caller IDs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /caller-ids","href":"/api-reference/caller-ids/list-caller-ids"},{"title":"Start caller ID verification","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /caller-ids","href":"/api-reference/caller-ids/start-caller-id-verification"},{"title":"Update caller ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /caller-ids/{id}","href":"/api-reference/caller-ids/update-caller-id"},{"title":"Delete caller ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /caller-ids/{id}","href":"/api-reference/caller-ids/delete-caller-id"}]},{"group":"SIP Trunks","pages":[{"title":"List SIP trunks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /sip-trunks","href":"/api-reference/sip-trunks/list-sip-trunks"},{"title":"Create a SIP trunk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /sip-trunks","href":"/api-reference/sip-trunks/create-a-sip-trunk"},{"title":"Get a SIP trunk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /sip-trunks/{id}","href":"/api-reference/sip-trunks/get-a-sip-trunk"},{"title":"Update outbound SIP identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /sip-trunks/{id}","href":"/api-reference/sip-trunks/update-outbound-sip-identity"},{"title":"Delete a SIP trunk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /sip-trunks/{id}","href":"/api-reference/sip-trunks/delete-a-sip-trunk"}]},{"group":"Carrier Connections","pages":[{"title":"List carrier connections","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /carrier-connections","href":"/api-reference/carrier-connections/list-carrier-connections"},{"title":"Create a carrier connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /carrier-connections","href":"/api-reference/carrier-connections/create-a-carrier-connection"},{"title":"Get a carrier connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /carrier-connections/{id}","href":"/api-reference/carrier-connections/get-a-carrier-connection"},{"title":"Update a carrier connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /carrier-connections/{id}","href":"/api-reference/carrier-connections/update-a-carrier-connection"},{"title":"Disconnect a carrier connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /carrier-connections/{id}","href":"/api-reference/carrier-connections/disconnect-a-carrier-connection"},{"title":"List carrier numbers available to import","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /carrier-connections/{id}/available-numbers","href":"/api-reference/carrier-connections/list-carrier-numbers-available-to-import"},{"title":"Import carrier numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /carrier-connections/{id}/import","href":"/api-reference/carrier-connections/import-carrier-numbers"},{"title":"Remove an imported carrier number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /carrier-connections/{id}/numbers/{numberId}","href":"/api-reference/carrier-connections/remove-an-imported-carrier-number"},{"title":"Troubleshoot a carrier connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /carrier-connections/{id}/troubleshoot","href":"/api-reference/carrier-connections/troubleshoot-a-carrier-connection"}]},{"group":"Famulor Loop","pages":[{"title":"Get Famulor Loop access and settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop","href":"/api-reference/famulor-loop/get-famulor-loop-access-and-settings"},{"title":"Update Famulor Loop settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /loop","href":"/api-reference/famulor-loop/update-famulor-loop-settings"},{"title":"List Loop ring groups","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/ring-groups","href":"/api-reference/famulor-loop/list-loop-ring-groups"},{"title":"Create a Loop ring group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /loop/ring-groups","href":"/api-reference/famulor-loop/create-a-loop-ring-group"},{"title":"Get a Loop ring group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/ring-groups/{id}","href":"/api-reference/famulor-loop/get-a-loop-ring-group"},{"title":"Update a Loop ring group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /loop/ring-groups/{id}","href":"/api-reference/famulor-loop/update-a-loop-ring-group"},{"title":"Delete a Loop ring group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /loop/ring-groups/{id}","href":"/api-reference/famulor-loop/delete-a-loop-ring-group"},{"title":"List Loop call queues","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/queues","href":"/api-reference/famulor-loop/list-loop-call-queues"},{"title":"Create a Loop call queue","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /loop/queues","href":"/api-reference/famulor-loop/create-a-loop-call-queue"},{"title":"Get a Loop call queue","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/queues/{id}","href":"/api-reference/famulor-loop/get-a-loop-call-queue"},{"title":"Update a Loop call queue","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /loop/queues/{id}","href":"/api-reference/famulor-loop/update-a-loop-call-queue"},{"title":"Delete a Loop call queue","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /loop/queues/{id}","href":"/api-reference/famulor-loop/delete-a-loop-call-queue"},{"title":"List Loop routing rules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/routing-rules","href":"/api-reference/famulor-loop/list-loop-routing-rules"},{"title":"Create a Loop routing rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /loop/routing-rules","href":"/api-reference/famulor-loop/create-a-loop-routing-rule"},{"title":"Get a Loop routing rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/routing-rules/{id}","href":"/api-reference/famulor-loop/get-a-loop-routing-rule"},{"title":"Update a Loop routing rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /loop/routing-rules/{id}","href":"/api-reference/famulor-loop/update-a-loop-routing-rule"},{"title":"Delete a Loop routing rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /loop/routing-rules/{id}","href":"/api-reference/famulor-loop/delete-a-loop-routing-rule"},{"title":"List Loop phone number routes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/number-routes","href":"/api-reference/famulor-loop/list-loop-phone-number-routes"},{"title":"Get a Loop phone number route","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/number-routes/{id}","href":"/api-reference/famulor-loop/get-a-loop-phone-number-route"},{"title":"Set a Loop phone number route","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /loop/number-routes/{id}","href":"/api-reference/famulor-loop/set-a-loop-phone-number-route"},{"title":"Delete a Loop phone number route","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /loop/number-routes/{id}","href":"/api-reference/famulor-loop/delete-a-loop-phone-number-route"},{"title":"List the Loop directory","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/directory","href":"/api-reference/famulor-loop/list-the-loop-directory"},{"title":"Get personal Loop presence","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/presence","href":"/api-reference/famulor-loop/get-personal-loop-presence"},{"title":"Set personal Loop presence","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /loop/presence","href":"/api-reference/famulor-loop/set-personal-loop-presence"},{"title":"List personal Loop devices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/devices","href":"/api-reference/famulor-loop/list-personal-loop-devices"},{"title":"Rename a personal Loop device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /loop/devices/{id}","href":"/api-reference/famulor-loop/rename-a-personal-loop-device"},{"title":"Revoke a personal Loop device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /loop/devices/{id}","href":"/api-reference/famulor-loop/revoke-a-personal-loop-device"},{"title":"List Loop calls","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/calls","href":"/api-reference/famulor-loop/list-loop-calls"},{"title":"Get a Loop call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/calls/{id}","href":"/api-reference/famulor-loop/get-a-loop-call"},{"title":"Get Loop call recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/recording","href":"/api-reference/famulor-loop/get-loop-call-recording"},{"title":"Start or stop Loop recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /loop/recording","href":"/api-reference/famulor-loop/start-or-stop-loop-recording"},{"title":"Get personal Loop availability","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/availability","href":"/api-reference/famulor-loop/get-personal-loop-availability"},{"title":"Update personal Loop availability","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /loop/availability","href":"/api-reference/famulor-loop/update-personal-loop-availability"},{"title":"Get personal Loop dialing preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/preferences","href":"/api-reference/famulor-loop/get-personal-loop-dialing-preferences"},{"title":"Update personal Loop dialing preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /loop/preferences","href":"/api-reference/famulor-loop/update-personal-loop-dialing-preferences"},{"title":"List personal Loop Recall items","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /loop/recalls","href":"/api-reference/famulor-loop/list-personal-loop-recall-items"},{"title":"Act on a personal Loop Recall item","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /loop/recalls/{id}/actions","href":"/api-reference/famulor-loop/act-on-a-personal-loop-recall-item"}]},{"group":"Messaging","pages":[{"title":"List messaging connectors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /messaging-connectors","href":"/api-reference/messaging/list-messaging-connectors"},{"title":"Create messaging connector","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /messaging-connectors","href":"/api-reference/messaging/create-messaging-connector"},{"title":"List mailbox watch options","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /messaging-connectors/{id}/watch-options","href":"/api-reference/messaging/list-mailbox-watch-options"},{"title":"Update messaging connector","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /messaging-connectors/{id}","href":"/api-reference/messaging/update-messaging-connector"},{"title":"Delete messaging connector","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /messaging-connectors/{id}","href":"/api-reference/messaging/delete-messaging-connector"},{"title":"Send a test conversation.ended webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /messaging-connectors/{id}/ended-webhook-test","href":"/api-reference/messaging/send-a-test-conversationended-webhook"},{"title":"Get WhatsApp sender profile","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /whatsapp/connectors/{id}/profile","href":"/api-reference/messaging/get-whatsapp-sender-profile"},{"title":"Run a WhatsApp sender profile action","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /whatsapp/connectors/{id}/profile","href":"/api-reference/messaging/run-a-whatsapp-sender-profile-action"},{"title":"Update WhatsApp sender profile","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /whatsapp/connectors/{id}/profile","href":"/api-reference/messaging/update-whatsapp-sender-profile"},{"title":"WhatsApp calling readiness","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /whatsapp/calling","href":"/api-reference/messaging/whatsapp-calling-readiness"},{"title":"Enable / resubscribe WhatsApp calling","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /whatsapp/calling","href":"/api-reference/messaging/enable-resubscribe-whatsapp-calling"},{"title":"Upload WhatsApp sender logo / banner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /whatsapp/connectors/{id}/assets","href":"/api-reference/messaging/upload-whatsapp-sender-logo-banner"},{"title":"Remove WhatsApp sender logo / banner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /whatsapp/connectors/{id}/assets","href":"/api-reference/messaging/remove-whatsapp-sender-logo-banner"},{"title":"WhatsApp Embedded Signup public config","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /whatsapp/embedded-signup","href":"/api-reference/messaging/whatsapp-embedded-signup-public-config"},{"title":"Complete WhatsApp Embedded Signup","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /whatsapp/embedded-signup","href":"/api-reference/messaging/complete-whatsapp-embedded-signup"},{"title":"Messenger Facebook Login public config","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /messenger/facebook-login","href":"/api-reference/messaging/messenger-facebook-login-public-config"},{"title":"Complete Messenger Facebook Login","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /messenger/facebook-login","href":"/api-reference/messaging/complete-messenger-facebook-login"},{"title":"List Facebook Pages for a user access token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /messenger/facebook-login/pages","href":"/api-reference/messaging/list-facebook-pages-for-a-user-access-token"},{"title":"Slack Add to Slack public config","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /slack/oauth","href":"/api-reference/messaging/slack-add-to-slack-public-config"},{"title":"Start Slack OAuth (Add to Slack)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /slack/oauth","href":"/api-reference/messaging/start-slack-oauth-add-to-slack"},{"title":"List WhatsApp message templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /whatsapp/templates","href":"/api-reference/messaging/list-whatsapp-message-templates"},{"title":"Create / update / submit / sync / send / delete WhatsApp templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /whatsapp/templates","href":"/api-reference/messaging/create-update-submit-sync-send-delete-whatsapp-templates"},{"title":"Get email channel options","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/options","href":"/api-reference/messaging/get-email-channel-options"},{"title":"Check hosted email name","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/availability","href":"/api-reference/messaging/check-hosted-email-name"},{"title":"List email domains","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/domains","href":"/api-reference/messaging/list-email-domains"},{"title":"Connect an email domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/domains","href":"/api-reference/messaging/connect-an-email-domain"},{"title":"Get an email domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/domains/{id}","href":"/api-reference/messaging/get-an-email-domain"},{"title":"Disconnect an email domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /email/domains/{id}","href":"/api-reference/messaging/disconnect-an-email-domain"},{"title":"Verify an email domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/domains/{id}/verify","href":"/api-reference/messaging/verify-an-email-domain"},{"title":"List email addresses","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/addresses","href":"/api-reference/messaging/list-email-addresses"},{"title":"Create an email address","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/addresses","href":"/api-reference/messaging/create-an-email-address"},{"title":"Update an email address","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /email/addresses/{id}","href":"/api-reference/messaging/update-an-email-address"},{"title":"Delete an email address","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /email/addresses/{id}","href":"/api-reference/messaging/delete-an-email-address"},{"title":"Get email channel defaults","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/settings","href":"/api-reference/messaging/get-email-channel-defaults"},{"title":"Replace email channel defaults","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /email/settings","href":"/api-reference/messaging/replace-email-channel-defaults"}]},{"group":"SMS","pages":[{"title":"Send an SMS","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /sms/send","href":"/api-reference/sms/send-an-sms"}]},{"group":"Widgets","pages":[{"title":"List web widgets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /widget-connectors","href":"/api-reference/widgets/list-web-widgets"},{"title":"Create web widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /widget-connectors","href":"/api-reference/widgets/create-web-widget"},{"title":"Get web widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /widget-connectors/{id}","href":"/api-reference/widgets/get-web-widget"},{"title":"Update web widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /widget-connectors/{id}","href":"/api-reference/widgets/update-web-widget"},{"title":"Delete web widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /widget-connectors/{id}","href":"/api-reference/widgets/delete-web-widget"},{"title":"Upload widget header logo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /widget-connectors/{id}/logo","href":"/api-reference/widgets/upload-widget-header-logo"},{"title":"Remove widget header logo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /widget-connectors/{id}/logo","href":"/api-reference/widgets/remove-widget-header-logo"}]},{"group":"Integrations","pages":[{"title":"Start Calendly OAuth","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /integrations/calendly/oauth-url","href":"/api-reference/integrations/start-calendly-oauth"},{"title":"List connected Calendly accounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /integrations/calendly/connections","href":"/api-reference/integrations/list-connected-calendly-accounts"},{"title":"List active Calendly event types","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /integrations/calendly/event-types","href":"/api-reference/integrations/list-active-calendly-event-types"},{"title":"Start Acuity OAuth","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /integrations/acuity/oauth-url","href":"/api-reference/integrations/start-acuity-oauth"},{"title":"List connected Acuity accounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /integrations/acuity/connections","href":"/api-reference/integrations/list-connected-acuity-accounts"},{"title":"List Acuity appointment types","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /integrations/acuity/appointment-types","href":"/api-reference/integrations/list-acuity-appointment-types"},{"title":"List Acuity calendars","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /integrations/acuity/calendars","href":"/api-reference/integrations/list-acuity-calendars"},{"title":"List meetergo meeting types","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /integrations/meetergo/meeting-types","href":"/api-reference/integrations/list-meetergo-meeting-types"},{"title":"Check availability or book with meetergo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /integrations/meetergo/action","href":"/api-reference/integrations/check-availability-or-book-with-meetergo"},{"title":"List calendar integrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /integrations","href":"/api-reference/integrations/list-calendar-integrations"},{"title":"Create a calendar integration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /integrations","href":"/api-reference/integrations/create-a-calendar-integration"},{"title":"Get a calendar integration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /integrations/{id}","href":"/api-reference/integrations/get-a-calendar-integration"},{"title":"Update a calendar integration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /integrations/{id}","href":"/api-reference/integrations/update-a-calendar-integration"},{"title":"Delete a calendar integration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /integrations/{id}","href":"/api-reference/integrations/delete-a-calendar-integration"},{"title":"List assistant integrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/integrations","href":"/api-reference/integrations/list-assistant-integrations"},{"title":"Replace assistant integrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /assistants/{id}/integrations","href":"/api-reference/integrations/replace-assistant-integrations"}]},{"group":"Bookings","pages":[{"title":"List booking event types","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /booking-event-types","href":"/api-reference/bookings/list-booking-event-types"},{"title":"Get standard booking email templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /booking-email-templates","href":"/api-reference/bookings/get-standard-booking-email-templates"},{"title":"Create a booking event type","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /booking-event-types","href":"/api-reference/bookings/create-a-booking-event-type"},{"title":"Get a booking event type","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /booking-event-types/{id}","href":"/api-reference/bookings/get-a-booking-event-type"},{"title":"List free slots","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /booking-event-types/{id}/slots","href":"/api-reference/bookings/list-free-slots"},{"title":"Update a booking event type","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /booking-event-types/{id}","href":"/api-reference/bookings/update-a-booking-event-type"},{"title":"Delete a booking event type","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /booking-event-types/{id}","href":"/api-reference/bookings/delete-a-booking-event-type"},{"title":"List bookings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /bookings","href":"/api-reference/bookings/list-bookings"},{"title":"Create a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /bookings","href":"/api-reference/bookings/create-a-booking"},{"title":"Look up upcoming bookings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /bookings/lookup","href":"/api-reference/bookings/look-up-upcoming-bookings"},{"title":"Get a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /bookings/{id}","href":"/api-reference/bookings/get-a-booking"},{"title":"Cancel a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /bookings/{id}/cancel","href":"/api-reference/bookings/cancel-a-booking"},{"title":"Reschedule a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /bookings/{id}/reschedule","href":"/api-reference/bookings/reschedule-a-booking"}]},{"group":"Automations","pages":[{"title":"List assistant-callable automations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assistants/{id}/automations","href":"/api-reference/automations/list-assistant-callable-automations"},{"title":"Create and connect an assistant automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assistants/{id}/automations","href":"/api-reference/automations/create-and-connect-an-assistant-automation"},{"title":"Disconnect an assistant automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /assistants/{id}/automations/{automationId}","href":"/api-reference/automations/disconnect-an-assistant-automation"},{"title":"List automations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /automations","href":"/api-reference/automations/list-automations"},{"title":"Create automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /automations","href":"/api-reference/automations/create-automation"},{"title":"List Milian AI automation actions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /automations/ai-actions","href":"/api-reference/automations/list-milian-ai-automation-actions"},{"title":"Preview or run a Milian AI automation action","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /automations/ai-actions","href":"/api-reference/automations/preview-or-run-a-milian-ai-automation-action"},{"title":"Get automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /automations/{id}","href":"/api-reference/automations/get-automation"},{"title":"Trigger automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /automations/{id}","href":"/api-reference/automations/trigger-automation"},{"title":"Update automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /automations/{id}","href":"/api-reference/automations/update-automation"},{"title":"Delete automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /automations/{id}","href":"/api-reference/automations/delete-automation"},{"title":"Tidy up an automation graph","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /automations/{id}/graph/layout","href":"/api-reference/automations/tidy-up-an-automation-graph"},{"title":"List automation runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /automations/{id}/runs","href":"/api-reference/automations/list-automation-runs"},{"title":"Get automation run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /automations/{id}/runs/{runId}","href":"/api-reference/automations/get-automation-run"},{"title":"List automation connections","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /automations/connections","href":"/api-reference/automations/list-automation-connections"},{"title":"Create automation connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /automations/connections","href":"/api-reference/automations/create-automation-connection"},{"title":"Import Agent Tool connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /automations/connections/import","href":"/api-reference/automations/import-agent-tool-connection"},{"title":"Get automation connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /automations/connections/{id}","href":"/api-reference/automations/get-automation-connection"},{"title":"Update automation connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /automations/connections/{id}","href":"/api-reference/automations/update-automation-connection"},{"title":"Delete automation connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /automations/connections/{id}","href":"/api-reference/automations/delete-automation-connection"},{"title":"List CRM syncs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /crm-syncs","href":"/api-reference/automations/list-crm-syncs"},{"title":"Create CRM sync","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /crm-syncs","href":"/api-reference/automations/create-crm-sync"},{"title":"Discover CRM objects and fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /crm-syncs/discover","href":"/api-reference/automations/discover-crm-objects-and-fields"},{"title":"Get CRM sync","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /crm-syncs/{id}","href":"/api-reference/automations/get-crm-sync"},{"title":"Update CRM sync","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /crm-syncs/{id}","href":"/api-reference/automations/update-crm-sync"},{"title":"Delete CRM sync","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /crm-syncs/{id}","href":"/api-reference/automations/delete-crm-sync"},{"title":"List CRM sync runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /crm-syncs/{id}/runs","href":"/api-reference/automations/list-crm-sync-runs"},{"title":"Run CRM sync","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /crm-syncs/{id}/runs","href":"/api-reference/automations/run-crm-sync"}]},{"group":"Milian Missions","pages":[{"title":"List missions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /routines","href":"/api-reference/milian-missions/list-missions"},{"title":"Create a mission","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /routines","href":"/api-reference/milian-missions/create-a-mission"},{"title":"Get a mission","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /routines/{id}","href":"/api-reference/milian-missions/get-a-mission"},{"title":"Update a mission","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /routines/{id}","href":"/api-reference/milian-missions/update-a-mission"},{"title":"Delete a mission","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /routines/{id}","href":"/api-reference/milian-missions/delete-a-mission"},{"title":"Run a mission now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /routines/{id}/run","href":"/api-reference/milian-missions/run-a-mission-now"},{"title":"List mission runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /routines/{id}/runs","href":"/api-reference/milian-missions/list-mission-runs"}]},{"group":"Dashboards","pages":[{"title":"List custom dashboards","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dashboards","href":"/api-reference/dashboards/list-custom-dashboards"},{"title":"Create a custom dashboard","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /dashboards","href":"/api-reference/dashboards/create-a-custom-dashboard"},{"title":"Get a custom dashboard","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dashboards/{id}","href":"/api-reference/dashboards/get-a-custom-dashboard"},{"title":"Update a custom dashboard","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /dashboards/{id}","href":"/api-reference/dashboards/update-a-custom-dashboard"},{"title":"Delete a custom dashboard","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /dashboards/{id}","href":"/api-reference/dashboards/delete-a-custom-dashboard"},{"title":"Get dashboard analytics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dashboards/{id}/analytics","href":"/api-reference/dashboards/get-dashboard-analytics"},{"title":"Preview a natural-language dashboard plan","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /dashboards/{id}/natural-language","href":"/api-reference/dashboards/preview-a-natural-language-dashboard-plan"},{"title":"Save a natural-language dashboard plan","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /dashboards/{id}/natural-language","href":"/api-reference/dashboards/save-a-natural-language-dashboard-plan"},{"title":"List dashboard widgets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dashboards/{id}/widgets","href":"/api-reference/dashboards/list-dashboard-widgets"},{"title":"Create or attach a dashboard widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /dashboards/{id}/widgets","href":"/api-reference/dashboards/create-or-attach-a-dashboard-widget"},{"title":"Update a dashboard widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /dashboards/{id}/widgets/{widgetId}","href":"/api-reference/dashboards/update-a-dashboard-widget"},{"title":"Detach a dashboard widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /dashboards/{id}/widgets/{widgetId}","href":"/api-reference/dashboards/detach-a-dashboard-widget"}]},{"group":"Catalog","pages":[{"title":"List models","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /models","href":"/api-reference/catalog/list-models"},{"title":"List languages","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /languages","href":"/api-reference/catalog/list-languages"},{"title":"List prompt templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /prompt-templates","href":"/api-reference/catalog/list-prompt-templates"}]},{"group":"Settings","pages":[{"title":"Get memory settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/memory","href":"/api-reference/settings/get-memory-settings"},{"title":"Update memory settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /settings/memory","href":"/api-reference/settings/update-memory-settings"},{"title":"List active account sessions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/sessions","href":"/api-reference/settings/list-active-account-sessions"},{"title":"Sign out an account session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /settings/sessions","href":"/api-reference/settings/sign-out-an-account-session"},{"title":"List passkeys","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/passkeys","href":"/api-reference/settings/list-passkeys"},{"title":"Delete a passkey","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /settings/passkeys","href":"/api-reference/settings/delete-a-passkey"},{"title":"Get consent compliance mode","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/consent-compliance","href":"/api-reference/settings/get-consent-compliance-mode"},{"title":"Update consent compliance mode","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /settings/consent-compliance","href":"/api-reference/settings/update-consent-compliance-mode"},{"title":"Get marketing integrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/marketing","href":"/api-reference/settings/get-marketing-integrations"},{"title":"Update marketing integrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /settings/marketing","href":"/api-reference/settings/update-marketing-integrations"},{"title":"Get Dark Windows settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/dark-windows","href":"/api-reference/settings/get-dark-windows-settings"},{"title":"Update Dark Windows settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /settings/dark-windows","href":"/api-reference/settings/update-dark-windows-settings"},{"title":"Get data retention settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/retention","href":"/api-reference/settings/get-data-retention-settings"},{"title":"Update data retention settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /settings/retention","href":"/api-reference/settings/update-data-retention-settings"},{"title":"Get outbound call limits","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/outbound-limits","href":"/api-reference/settings/get-outbound-call-limits"},{"title":"Request an outbound call limit increase","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /settings/outbound-limits/requests","href":"/api-reference/settings/request-an-outbound-call-limit-increase"},{"title":"List support requests","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /support/requests","href":"/api-reference/settings/list-support-requests"},{"title":"Create a support request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /support/requests","href":"/api-reference/settings/create-a-support-request"},{"title":"Get a support request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /support/requests/{reference}","href":"/api-reference/settings/get-a-support-request"},{"title":"Reply to a support request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /support/requests/{reference}/messages","href":"/api-reference/settings/reply-to-a-support-request"},{"title":"List email sender choices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email-senders","href":"/api-reference/settings/list-email-sender-choices"},{"title":"Get custom domain status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /custom-domain","href":"/api-reference/settings/get-custom-domain-status"},{"title":"Add custom domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /custom-domain","href":"/api-reference/settings/add-custom-domain"},{"title":"Remove custom domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /custom-domain","href":"/api-reference/settings/remove-custom-domain"},{"title":"Check custom domain DNS","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /custom-domain/verify","href":"/api-reference/settings/check-custom-domain-dns"},{"title":"Get AI inference settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /settings/ai-inference","href":"/api-reference/settings/get-ai-inference-settings"},{"title":"Update AI inference settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /settings/ai-inference","href":"/api-reference/settings/update-ai-inference-settings"}]},{"group":"Migrations","pages":[{"title":"Preview or import Famulor 1.0 data","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /migrations/famulor","href":"/api-reference/migrations/preview-or-import-famulor-10-data"},{"title":"Preview or import provider assistants","deprecated":null,"version":null,"sidebarTitle":"Migrate provider assistants","openapi":"/api-reference/openapi.json post /migrations/providers","href":"/api-reference/migrate-provider-assistants"}]},{"group":"White Label","pages":[{"title":"List platform users","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /platform/users","href":"/api-reference/white-label/list-platform-users"},{"title":"Register a platform user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /platform/users","href":"/api-reference/white-label/register-a-platform-user"},{"title":"Get a platform user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /platform/users/{user_id}","href":"/api-reference/white-label/get-a-platform-user"},{"title":"Get customer password permissions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /platform/users/{user_id}/password","href":"/api-reference/white-label/get-customer-password-permissions"},{"title":"Set a customer password or send a reset email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /platform/users/{user_id}/password","href":"/api-reference/white-label/set-a-customer-password-or-send-a-reset-email"},{"title":"Create a platform user token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /platform/users/{user_id}/token","href":"/api-reference/white-label/create-a-platform-user-token"},{"title":"Log in a platform user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /platform/users/login","href":"/api-reference/white-label/log-in-a-platform-user"},{"title":"Log out a platform user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /platform/users/{user_id}/logout","href":"/api-reference/white-label/log-out-a-platform-user"},{"title":"Transfer credits to or from a platform user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /platform/users/{user_id}/balance","href":"/api-reference/white-label/transfer-credits-to-or-from-a-platform-user"},{"title":"Review a customer managed plan","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /platform/users/{user_id}/plan","href":"/api-reference/white-label/review-a-customer-managed-plan"},{"title":"Assign a customer managed plan or update renewal settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /platform/users/{user_id}/plan","href":"/api-reference/white-label/assign-a-customer-managed-plan-or-update-renewal-settings"},{"title":"End a customer managed plan","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /platform/users/{user_id}/plan","href":"/api-reference/white-label/end-a-customer-managed-plan"},{"title":"Get platform registration and prepaid defaults","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /platform/default-limits","href":"/api-reference/white-label/get-platform-registration-and-prepaid-defaults"},{"title":"Update platform registration and prepaid defaults","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /platform/default-limits","href":"/api-reference/white-label/update-platform-registration-and-prepaid-defaults"},{"title":"Get platform welcome-credit settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /platform/welcome-credits","href":"/api-reference/white-label/get-platform-welcome-credit-settings"},{"title":"Update platform welcome-credit settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /platform/welcome-credits","href":"/api-reference/white-label/update-platform-welcome-credit-settings"},{"title":"Get reseller financial overview or activity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /reseller/billing","href":"/api-reference/white-label/get-reseller-financial-overview-or-activity"},{"title":"List customer plans and inclusions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /reseller/plans","href":"/api-reference/white-label/list-customer-plans-and-inclusions"},{"title":"Update included plan services","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /reseller/plans/{id}/inclusions","href":"/api-reference/white-label/update-included-plan-services"},{"title":"Update plan knowledge source access","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /reseller/plans/{id}/knowledge-sources","href":"/api-reference/white-label/update-plan-knowledge-source-access"}]},{"group":"Shopify","pages":[{"title":"Famulor Shopify app — stores","openapi":"GET /shopify/installations","href":"/api-reference/shopify/stores"},{"title":"Famulor Shopify app — disconnect","openapi":"DELETE /shopify/installations/{id}","href":"/api-reference/shopify/disconnect"},{"title":"Famulor Shopify app — actions","openapi":"GET /shopify/actions","href":"/api-reference/shopify/actions"},{"title":"Famulor Shopify app — history","openapi":"GET /shopify/installations/{id}/history","href":"/api-reference/shopify/history"},{"title":"Associated net payments","openapi":"GET /shopify/installations/{id}/revenue","href":"/api-reference/shopify/revenue"},{"title":"Read Shopify setup","openapi":"GET /shopify/setup","href":"/api-reference/shopify/setup"},{"title":"Read Shopify widget choices","openapi":"GET /shopify/installations/{id}/widgets","href":"/api-reference/shopify/widgets"},{"title":"Synchronize Shopify widget choices","openapi":"POST /shopify/installations/{id}/widgets","href":"/api-reference/shopify/synchronize-widgets"},{"title":"Configure Shopify capabilities","openapi":"PATCH /shopify/installations/{id}/capabilities","href":"/api-reference/shopify/capabilities"},{"title":"Famulor Shopify app — tools","openapi":"GET /shopify/installations/{id}/tools","href":"/api-reference/shopify/tools"},{"title":"Famulor Shopify app — provision-tools","openapi":"POST /shopify/installations/{id}/tools","href":"/api-reference/shopify/provision-tools"},{"title":"Famulor Shopify app — requests","openapi":"GET /shopify/installations/{id}/requests","href":"/api-reference/shopify/requests"},{"title":"Famulor Shopify app — resolve-request","openapi":"PATCH /shopify/installations/{id}/requests","href":"/api-reference/shopify/resolve-request"},{"title":"Shopify — call","openapi":"GET /shopify/installations/{id}/calls/{callId}","href":"/api-reference/shopify/call"},{"title":"Shopify — privacy-exports","openapi":"GET /shopify/installations/{id}/privacy-exports","href":"/api-reference/shopify/privacy-exports"},{"title":"Shopify — privacy-export","openapi":"GET /shopify/installations/{id}/privacy-exports/{exportId}","href":"/api-reference/shopify/privacy-export"}]}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk/overview"}]},{"tab":"API 1.0 (Legacy)","pages":[{"title":"API 1.0 (Legacy)","href":"/api-v1/introduction"}]},{"tab":"What's New","pages":[{"title":"What's New","href":"/changelog"}]}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/api-reference/integration-examples"}]},{"language":"es","pages":[{"title":"es","href":"/es/api-reference/integration-examples"}]},{"language":"de","pages":[{"title":"de","href":"/de/api-reference/integration-examples"}]}]},"title":"API integration examples - Famulor","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["10e4515597"],"chunks":["BannerMarkdown-Og7hgu7u.js","dist-BaREnp3o.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-CefdjKz2.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}