MeetGrade MeetGrade

How to Use Call Webhooks & API for Automation

In short: A call recording API and webhooks let you automate workflows around your calls: webhooks push real-time events (like "analysis completed") to your systems the moment they happen, while the REST API lets you pull call data, QA scores, and transcripts on demand. Together they connect your call platform to your CRM, Slack, data warehouse, or coaching tools without manual exports — the webhook tells you something happened, and the API fetches the details.

If you record and analyze sales or support calls, the data is only useful when it reaches the systems your team actually works in. Manually exporting transcripts or copy-pasting QA scores into a CRM does not scale. The fix is a two-part automation pattern: webhooks to react instantly when something happens, and a REST API to read the data when you need it. This guide explains how both work, when to use each, and how to wire them up safely.

Webhooks vs. API: which one for which job

People often confuse the two, but they solve opposite problems.

A good rule of thumb: use webhooks to trigger a workflow, and the API to fetch the details. The webhook says "call 12345 was just scored 82/100"; your handler then calls the API to retrieve the criteria, strengths, and issues before writing them to HubSpot or Salesforce.

Step 1: Set up an outbound webhook

In most platforms you register a webhook by giving it three things: a destination URL (must be HTTPS and publicly reachable), the events you care about, and an optional signing secret. In MeetGrade, for example, you can register an outbound webhook on the qa_completed event. When a call's analysis finishes, it POSTs a compact JSON payload to your endpoint with fields like bot_id, source (zoom / meet / phone), manager_email, score, key_result_achieved, checklist_id, and a direct call_url link back to the recording.

Your endpoint should do three things and nothing more: verify the signature, return a 2xx status quickly, and hand the work to a background job. Long processing inside the handler causes timeouts and unnecessary retries.

Step 2: Verify the signature

An exposed webhook URL is a public endpoint — anyone who finds it could POST fake events. Always verify authenticity before trusting a payload. The standard approach is HMAC-SHA256: the sender computes a hash of the raw request body using your shared secret and sends it in a header.

MeetGrade signs the body and sends it as X-StudyLess-Signature: sha256=<hex>, with the event name in X-StudyLess-Event. On your side, recompute the HMAC over the exact raw bytes you received (not a re-serialized version — whitespace and key order matter) and compare using a constant-time check. If it does not match, return 401 and drop the request. Never log the secret.

Step 3: Handle retries and ordering

Networks fail, and well-behaved senders retry. A common pattern — and the one MeetGrade uses — is to retry only on 5xx and network errors with exponential backoff (typically up to 3 attempts), and to not retry on 4xx, since a client error means the request itself is wrong. Two consequences for your design:

Step 4: Pull details with the REST API

Once a webhook tells you a call is ready, fetch the full record over the API. MeetGrade exposes a read-only /api/v1/ REST API authenticated with a per-organization Bearer token (format mg_live_<keyid>_<secret>). Core endpoints:

Keys are scoped to a single tenant, so the API only ever returns your own data. Expect rate limits (e.g. 120 requests per minute per key) and a 429 when you exceed them — batch your reads and respect backoff.

Real automations you can build

Quick checklist before you ship

Webhooks plus a clean REST API turn call recordings from a static archive into a live data source your whole stack can react to. If you want a platform where the QA scoring, talk metrics, outbound webhooks, and a per-tenant API ship together — and pricing is pay-as-you-go — MeetGrade is worth a look as one option to prototype your first automation against.

Frequently asked questions

What is the difference between a call webhook and a call API?

A webhook is push-based: the platform sends an HTTP POST to your URL the moment an event happens, so you react in real time. The API is pull-based: your code requests data when it needs it. In practice, a webhook triggers your workflow (e.g. 'call scored') and the API fetches the full details (criteria, transcript, summary).

How do I verify that a webhook actually came from the platform?

Use the signature header. The sender computes an HMAC-SHA256 of the raw request body with a shared secret and sends it in a header (in MeetGrade, X-StudyLess-Signature: sha256=<hex>). Recompute the HMAC over the exact bytes you received and compare with a constant-time check. If it does not match, reject the request with 401. Never reprocess or log the secret.

What happens if my endpoint is down when a webhook fires?

Most platforms retry on server (5xx) and network errors with exponential backoff — MeetGrade retries up to 3 times — but do not retry on 4xx, since that means the request itself was rejected. Because the same event can arrive more than once, your handler must be idempotent: key processing on a stable id so duplicates do not create duplicate records.

Can I pull call scores and transcripts through the API?

Yes. MeetGrade's read-only /api/v1/ REST API, authenticated with a per-organization Bearer token, lets you list calls (GET /calls), fetch a single call's full QA object including per-criterion scores, summary, strengths and issues (GET /calls/{bot_id}), and list your scoring checklists (GET /checklists). Keys are tenant-scoped, so you only ever see your own data, and the API is rate-limited.

Do I need both webhooks and the API, or just one?

It depends on latency needs. For real-time automations (CRM updates, Slack alerts the instant a call is scored), use webhooks. For batch reporting, backfills, or syncing history into a warehouse on a schedule, use the API. Most production setups combine them: the webhook signals an event, then the API retrieves the detailed payload.

Related reading

See MeetGrade on your own calls

AI notetaker + scoring for Zoom, Google Meet & phone. Pay-as-you-go, free minutes to start.

Try MeetGrade free