Developers
Trigger an AI Voice Agent Call From n8n With RizzDial
Trigger a RizzDial AI voice call from n8n: HTTP Request node on the REST API, or MCP Client Tool node on the OAuth server. Real endpoints and setup steps.
By James Hill, Founder, RizzDial ·
TL;DR: Trigger a RizzDial AI voice call from n8n with an HTTP Request node that calls
GET /api/ai/agent/call-endpointfor a per-agent URL, then a second HTTP Request node that POSTs the caller's phone number to it. Start the workflow from n8n's Webhook node, a Form Trigger, or a GoHighLevel Custom Webhook action on a stage change. An MCP Client Tool node against RizzDial's OAuth MCP URL is the other path, better suited to an AI Agent node deciding what to do than an unattended trigger.
We get this question from agencies already running their GoHighLevel pipeline through n8n, wondering why the AI calling step still happens by hand. n8n has no dedicated RizzDial node: an HTTP Request node against a documented REST API, or, for an agent that should reason about the call instead of running a fixed script, an MCP Client Tool node against a remote server.
This demand is not just ours. n8n's own community forum has an open thread titled "Voice AI agents as an n8n node, trigger a real phone call from any workflow", and n8n's workflow library lists a published template, "Automated lead qualification voice agent with OpenAI GPT, Twilio, ElevenLabs and Gmail", on a different calling stack. This guide covers the RizzDial side, verified against n8n's own node documentation and RizzDial's OpenAPI spec.
If you run ads or have a sales team, RizzDial is our pick. We make RizzDial. Its direct GoHighLevel integration helps call fresh form fills fast, direct carrier access to AT&T, Verizon and T-Mobile with number rotation keeps numbers off spam labels, and iMessage follow up closes the loop once a call ends. RizzDial's proprietary voicemail detection runs in 0.66 milliseconds and is built to connect reps to live humans faster. Those are RizzDial product facts, not a result of this n8n setup.
What Are the Two Ways to Trigger a RizzDial Call From n8n?
n8n reaches RizzDial through the same two doors every other client in this series uses: a documented REST API, or a remote MCP server with browser based OAuth. What changes from client to client is which n8n node does the talking.
| HTTP Request node | MCP Client Tool node | |
|---|---|---|
| What it calls | RizzDial's REST API, documented in an OpenAPI 3.0.3 spec at app.rizzdial.com/api/docs/spec | RizzDial's remote MCP server, the same URL shown on the dashboard's Connect MCP page |
| Auth | A bearer token in the Authorization header, set once as an n8n credential |
RizzDial authorizes over browser based OAuth for every MCP client documented so far |
| Good for | A trigger that must run the same way every time, unattended | An AI Agent node reasoning about which RizzDial tool to call from free text |
| Where the logic lives | In the workflow you build, step by step | In the model's choice of tool, with you reading the result |
| Our recommendation | Use this for the actual trigger | Use this to explore tools, or inside a node that needs judgment |
Build the trigger on the HTTP Request node first. Reach for the MCP Client Tool node once that trigger works and you want an AI Agent node deciding whether a reply should start a call, search a number, or leave the contact alone.
How Do You Trigger a Call With n8n's HTTP Request Node?
This path calls RizzDial's REST API directly, the same endpoints our Claude tool-calling guide wraps for a coding agent, except n8n is the one making the request.
- Generate a personal access token in your RizzDial dashboard, and note your agent's
agent_idfromGET /api/ai/agent/list. - In n8n, create a Header Auth credential named
Authorizationwith valueBearer YOUR_TOKEN. n8n's HTTP Request node docs list Header auth as the generic method for this token shape. - Add an HTTP Request node: GET
https://app.rizzdial.com/api/ai/agent/call-endpoint, query parameteragent_id, and the credential from step 2. This returnsdata.endpoint, a standing, reusable URL under/webhooks/ai/create-phone-call/for that agent. - Add a second HTTP Request node: POST to
{{$json.data.endpoint}}, with authentication off. The token lives in the path itself, which is why RizzDial's docs treat that URL as a credential, not just an address. - Send JSON in the body:
phone_numberin E.164 format,call_modeset tooutbound, plusfirst_nameandlast_namewhere your workflow has them. - Run the workflow once manually against your own number before connecting it to a live trigger.
- Confirm the call landed against
GET /api/ai/call-history?agent_id=YOUR_AGENT_ID&per_page=5.
Treat that /webhooks/ai/create-phone-call/ URL like a password. Anyone who has it can place a call through your agent with no further login, so store it in an n8n credential, not a plain text node parameter, and avoid printing it in logs.
A copy-paste starting point for step 5's body, once your field names are mapped:
{
"phone_number": "{{$json.phone}}",
"call_mode": "outbound",
"first_name": "{{$json.first_name}}",
"last_name": "{{$json.last_name}}"
}
How Do You Connect n8n's MCP Client Tool Node to RizzDial Instead?
The MCP Client Tool node lets an AI Agent node call tools on an external MCP server, per n8n's own documentation for the node. Its endpoint field is still labeled "SSE Endpoint," even though RizzDial's remote server speaks Streamable HTTP, the newer MCP transport. Paste the dashboard's MCP URL into it anyway and test the connection; whether it completes depends on which transport your n8n version negotiates, not on the field's name.
Authentication is the harder part. The node offers Bearer Auth, Header Auth, Multiple Headers Auth, OAuth2, or none. RizzDial's dashboard does not publish a client ID, secret, authorization URL, or token URL for third party OAuth2 setup the way Claude, Cursor, Gemini CLI and Codex handle it with a built in browser popup. Until RizzDial documents those fields for n8n, treat the OAuth2 option as unverified, and do not assume Bearer or Header auth substitutes for a real OAuth handshake just because the dropdown offers it.
Add an AI Agent node, connect a chat model credential you already use, and attach an MCP Client Tool node as a tool. Set Authentication to None, the endpoint field to the dashboard's MCP URL, and run one test asking the agent to list your AI agents. Read the actual tool result, not the agent's sentence back to you, since a silent connection failure can still produce a plausible, wrong answer. If it fails, ask RizzDial support for n8n specific OAuth2 fields and use the HTTP Request node path for the real trigger meanwhile.
Screenshot: the MCP Client Tool node's parameter panel in n8n, showing the "SSE Endpoint" field with RizzDial's dashboard URL pasted in, the Authentication dropdown expanded to show all five options, and the connected AI Agent node above it.
What Can the Agent Do Once n8n Is Connected?
Whichever node you connect, the same account capabilities are on the other side of it.
| Ask for... | What it calls |
|---|---|
| A list of your AI voice agents, or a new one | GET /api/ai/agent/list, POST /api/ai/agent/create |
| An available number in an area code, then assign it | GET /api/ai/number/search, POST /api/ai/number/assign |
| Recent call history and transcripts | GET /api/ai/call-history, filtered by agent_id, start_date and end_date; check for call_transcript before assuming every record has it |
| A campaign started or paused | The campaign controls behind the same account; confirm the exact path in the live OpenAPI spec rather than assuming a name |
Campaign start and pause show up as an MCP tool in every client documented so far; the REST side exists on the same account, but we are not naming a path here we have not confirmed against the live spec. A wrong endpoint name is worse than none.
How Do You Trigger the Workflow From a Webhook, Form, or CRM Stage Change?
The call-placing nodes above do nothing until something starts the workflow. n8n gives you three realistic starting points.
A Webhook node is the most direct. Per n8n's Webhook node docs, it generates a test URL for development and a separate production URL once active, and later nodes read the incoming request as $json.body, $json.headers and $json.query. Point any system that can fire a webhook, including GoHighLevel's own workflow builder, at that production URL.
A Form Trigger suits a lead capture page with no CRM behind it: n8n hosts the form, and a submission starts the workflow with the fields it collected.
A CRM stage change is a Webhook node wearing a different hat. If your pipeline runs on GoHighLevel, add a Custom Webhook action to the workflow that fires on the stage change, the same action type our GoHighLevel webhook guide uses to call RizzDial directly, except now the webhook points at n8n's production URL instead. n8n sits in between, free to also update a spreadsheet or post a Slack message before the call reaches RizzDial.
Numbered test procedure before any trigger touches a live number:
- Fire the trigger with a test contact and your own number, and confirm the run appears in n8n's Executions tab with the fields you expect.
- Check that the
call-endpointnode returns a 200 and a realdata.endpointvalue, not a cached or empty response. - Confirm the POST returns success, then verify the call actually rang your test number within a minute.
- Fire the same trigger again with the same contact and confirm it does not place a second call, in case the source retries on a slow response.
- Only then point the trigger at a live GoHighLevel stage, a real form, or a real webhook source.
How Do You Pull Call History and Transcripts Back Into n8n?
A workflow that only starts calls leaves the result sitting in RizzDial's dashboard. Add a second n8n workflow, or a later branch in the same one, that reads GET /api/ai/call-history filtered by agent_id and start_date, and does something with call_summary, call_transcript and hangup_reason once the call ends: write it to a GoHighLevel contact field, post it to Slack for a closer, or hold it for a follow up decision. Our transcript retrieval guide covers the field names and the gaps between a documented filter and what a given record actually returns in more depth than fits here.
Confirm these in writing before this branch runs unattended: which call outcome counts as a reason to write back to the CRM, where the transcript or summary lands and who reads it, what happens when call_transcript is missing from a record, how the workflow avoids writing the same call twice on a retry, and who gets notified if the call-history request itself fails.
When Should n8n Trigger the Call Instead of RizzDial's Native GoHighLevel Workflow?
RizzDial already has a direct GoHighLevel integration, and a Custom Webhook action inside a GoHighLevel workflow can call RizzDial's endpoint with no n8n step at all, as our GoHighLevel webhook guide shows. Add n8n when the trigger needs logic the GoHighLevel workflow builder lacks: pulling a field from a second system first, branching past a single condition, or updating a spreadsheet and posting to Slack in the same run as the call. If the whole job is "this stage change starts this call," skip n8n; it is one fewer system that can fail quietly between the stage change and the dial.
How Do You Keep This Safe Once n8n Can Place Real Calls?
A working n8n workflow is a real system the moment you activate it, not a draft. Four habits worth setting first:
Store the token and the call-endpoint URL as n8n credentials, never as plain text in a node parameter that shows up in an execution log. Add an error branch on every HTTP Request node that can place a call, so a bad phone number or an expired token produces a visible failure instead of a silently skipped lead. Test idempotency before trusting a retry-prone trigger: a webhook that fires twice for one event should not place two calls. Revoke access from the RizzDial dashboard, not just n8n, if this workflow is ever decommissioned; deactivating the n8n workflow stops new runs, but it does not revoke a token that is still valid elsewhere.
Calls placed through this workflow are still regulated the same as any call your team places by hand. A February 2024 FCC declaratory ruling treats AI generated voices as "artificial" voices under the TCPA, so prior express consent rules apply; see the ruling at fcc.gov. Verify consent and suppression checks before any trigger goes live; this guide is not legal advice.
What Are the FAQs About Triggering RizzDial Calls From n8n?
Does triggering RizzDial calls from n8n cost anything beyond my RizzDial plan?
RizzDial's AI minutes run from $0.06 to $0.20 per minute, billed for talk time only. n8n itself is a separate subscription with its own plan and execution limits. Confirm both with the team before connecting; this guide does not establish separate automation pricing.
How long does it take to connect n8n to RizzDial?
Getting a bearer token and calling the REST API from an HTTP Request node can work inside one sitting once you already have an agent and a number set up. The MCP Client Tool node takes longer to confirm, since you are also testing whether n8n's authentication options complete RizzDial's browser based OAuth sign in.
Should I use the HTTP Request node or the MCP Client Tool node for a production workflow?
Use the HTTP Request node for anything that runs on a trigger with nobody watching, since it calls the exact same endpoint the same way every time. Save the MCP Client Tool node for an AI Agent node that should reason about which RizzDial action to take from free text, with a human reviewing the result.
Can n8n trigger a RizzDial call automatically from a GoHighLevel stage change?
Yes. Add a Custom Webhook action to the GoHighLevel workflow that fires on the stage change, point it at your n8n Webhook node's production URL, and have that n8n workflow call RizzDial's call endpoint with the contact's phone number. Test the stage change in a sandbox pipeline before connecting it to a live one.
What happens if n8n sends RizzDial a phone number it can't dial?
The POST to the agent's call endpoint fails or returns an error status instead of placing a call. Add an error output check in n8n so a bad number produces a visible failure in the Executions tab, not a silently skipped lead.
Where Can You Find More RizzDial Agent Connection Guides?
This installment covers n8n; the full client by client breakdown, including Claude Code, Cursor, Codex, Grok and Gemini CLI, lives on Give Your AI Agent a Phone, and the original walkthrough for wrapping these endpoints as agent tools is Add Phone Calls to Your AI Agent with MCP. If the same stage change should also send a text, Beam's iMessage API covers that side from n8n or any other automation client. Check RizzDial's integrations page for everything else RizzDial already connects to, including the native GoHighLevel sync this path sits alongside.
About RizzDial
RizzDial is the AI outbound sales workspace for teams on GoHighLevel. Power dialing, AI voice agents, SMS automation, and CRM workflows in one platform. Book a demo.