Skip to main content
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.

Keep the API key off the client

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.
The frontend never sees FAMULOR_API_KEY — it only talks to /api/trigger-call on your own domain.

Retry with backoff

A 429 or a 5xx is usually worth retrying, not failing on immediately. Back off between attempts instead of hammering the API:
Each failed attempt roughly doubles the wait (500ms, 1s, 2s…) with a little random jitter so parallel callers don’t all retry in lockstep.

Receive webhooks

A workspace-level webhook signs every delivery with X-Famulor-Signature: sha256=<hex digest> — an HMAC-SHA256 of the raw request body using your webhook secret. (Assistant-level webhook URLs are unsigned and assistant-specific; see Post-call webhooks for the difference and the full payload.) Verify the signature before trusting the payload:
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.

Batch-call a CSV

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.
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.