Automations
Connect Semarize to your automation stack. Step-by-step flows for Zapier, Make, n8n, and Clay - using each platform's native blocks and terminology.
How automation works with Semarize
Every automation follows the same core pattern: a trigger fires when a new conversation is available, the transcript is sent to the Semarize API, and the structured output (scores, flags, evidence) is routed to downstream tools. All requests go through POST /v1/runs. Add "mode": "sync" for platforms that need an inline response, or use async mode with polling or workspace webhooks for completion events.
Which mode to use
All runs use a single endpoint: POST /v1/runs. Set the mode field to control execution behavior.
"sync"Synchronous
Blocks until evaluation completes. Returns 200 with full run detail. If the run doesn't complete in time, returns 202 with sync_fallback: true. Best for Zapier, Make, and Clay.
"async"defaultAsynchronous
Returns 202 immediately with a run_id. Poll GET /v1/runs/:runId or configure workspace webhooks to receive terminal status events without a polling loop.
Semarize-Delivery-Id (or Semarize-Event-Id). If a webhook payload is too large, Semarize sends a thin event and you can fetch full details via GET /v1/runs/:runId.Semarize + Zapier
Zapier organizes automations as Zaps - each Zap has a Trigger (what starts it) and one or more Action steps (what happens next). Zapier doesn't support native loops, so use POST /v1/runs with "mode": "sync" which returns results directly in the response.
Setup steps
Create a new Zap. Choose your call recording app (Gong, Fireflies, Recall.ai) as the Trigger and select "New Call Recording" as the event.
Add an Action step: search for "Webhooks by Zapier" and choose "Custom Request". Set method to POST, URL to https://api.semarize.com/v1/runs, and add your Authorization header.
In the request body, map the transcript from Step 1 into the input.transcript field. Set kit_code to your Kit's code and mode to "sync".
Add a "Formatter by Zapier" Action to parse the JSON response. Extract each brick value you need (e.g. bricks.overall_score.value).
Add a Salesforce (or HubSpot, Sheets, etc.) Action to write the extracted brick values to your CRM record.
Optionally add a Slack Action to notify your team. Map the brick values into the message template.
Test each step, then turn on the Zap.
Semarize + Make
Make (formerly Integromat) organizes automations as Scenarios built from Modules. Each module performs one operation - HTTP requests, JSON parsing, routing, or app actions. Use POST /v1/runs with "mode": "sync" for simple flows, or the default async mode with a Repeater module for polling.
Setup steps
Create a new Scenario. Add a Webhooks module (Custom webhook) as the trigger. Define the incoming data structure with transcript and call_id fields.
Add an HTTP module ("Make a request"). Set method to POST, URL to https://api.semarize.com/v1/runs. Add Authorization and Content-Type headers. Set body type to Raw and paste the JSON payload with mode set to "sync", mapping {{1.transcript}} from the webhook.
Add a JSON module ("Parse JSON") to parse the response from the HTTP module. Create a data structure matching the Semarize output format.
Add a Router module. Create Branch 1 with a filter: 3.bricks.risk_flag.value equals true. Leave Branch 2 as a fallthrough (no filter).
On Branch 1, add a Slack module ("Create a Message") to alert your team when risk is detected. Map brick values into the message.
On Branch 2, add a Salesforce module ("Update a Record") to write all brick values to the Opportunity. Map each field from the parsed JSON.
Set the scenario schedule (e.g., every 15 minutes or immediately via webhook). Activate the scenario.
Semarize + n8n
n8n organizes automations as Workflows built from Nodes. Each node performs one operation - receiving webhooks, making HTTP requests, transforming data, or branching logic. n8n natively supports loops, making it ideal for the async /v1/runs endpoint with a polling pattern using Wait and IF nodes. Alternatively, use a workspace webhook as the trigger to avoid polling entirely.
Setup steps
Add a Webhook node as the workflow trigger. Set HTTP Method to POST and define a path (e.g., /semarize-eval). Your system will POST transcripts to this URL.
Add an HTTP Request node. Set method to POST, URL to https://api.semarize.com/v1/runs. Under Authentication, select Header Auth and set name to Authorization, value to Bearer smz_live_your_key.
In the request body, set Body Content Type to JSON and map the transcript from the Webhook node using {{$json.transcript}}. Add your kit_code.
Add a Wait node. Set Resume to "After Time Interval" and set the interval to 2 seconds. This pauses before each poll.
Add another HTTP Request node to poll the run status. Set method to GET, URL to https://api.semarize.com/v1/runs/ and append the run_id from Node 2 using an expression.
Add an IF node. Set condition: {{$json.status}} is not equal to "succeeded". Connect the True output back to the Wait node (creating the loop). Connect the False output forward.
Add a Code node to extract and reshape the brick values from the completed run. Map each brick's value, confidence, reason, and evidence into your desired format.
Add a final node (Postgres, HTTP Request, Slack, etc.) to write the transformed signals to your database or notify your team.
Semarize + Clay
Clay organizes enrichment as Tables with Columns. Each column can be a source column (your input data), an Enrichment column (runs an integration per row), or a Formula column (transforms data with expressions). The HTTP Enrichment column calls the Semarize API once per row and returns the response directly into the table.
Setup steps
Create a new Clay table. Import your data via CSV upload or connect directly to Salesforce/HubSpot. Ensure you have columns for call_id and transcript.
Add an Enrichment column. Choose "HTTP / API" as the enrichment type. Set URL to https://api.semarize.com/v1/runs and method to POST.
Under Headers, add Authorization: Bearer smz_live_your_key and Content-Type: application/json.
In the Body field, write the JSON payload. Reference the transcript column using Clay's /Column Name/ syntax: { "kit_code": "YOUR_KIT_CODE", "input": { "transcript": /Transcript/ } }
Run the enrichment. Clay sends one request per row and stores the full JSON response in the enrichment column.
Add Formula columns to extract individual brick values. Use dot notation on the enrichment column: {{HTTP Enrichment}}.bricks.overall_score.value for the score, .bricks.risk_flag.value for the flag, etc.
Add more formula columns for any additional brick values your Kit returns - confidence scores, reasons, evidence arrays, categorical labels.
Export the enriched table back to your CRM, or download as CSV for further analysis.
What you get back
Regardless of which platform you use, the Semarize API returns the same structured JSON. Each brick in your Kit produces a typed value. Depending on configuration, bricks may also include confidence, reason, and evidence fields.
Map each output.bricks.*.value field to a CRM field, spreadsheet column, or Slack message in your automation.
Ready to automate?
Get your API key and connect Semarize to your automation platform in minutes.