FlowRunner
PricingContact
Theme
Start Free

Place outbound AI voice calls and manage agents, contacts, and workspaces with the Nedzo REST API. Agents run phone conversations and read the outcome back into the pipeline.

14 actions API key available
Nedzo AI website ↗ Platform Documentation ↗ Capability data verified 2026-08-01
Nightly sync run against the accounts that changed in the CRM today
Agent reads each changed record's phone, email, timezone, tags, and custom fields
Agent compares the incoming values against the current Nedzo contact resolved by phone, then by email
Agent isolates the records where an existing non-empty value would be replaced rather than filled
Agent posts that subset with the old and new value side by side
The data owner picks overwrite or preserve for the contested fields, and the agent runs Upsert Contact with that choice

What This Integration Enables

Nedzo AI is deliberately small, and that is the point of it. Fourteen actions: dial a number or a stored contact with a chosen AI agent, manage the agents, manage the contacts, list the workspaces. There is no campaign engine, no analytics suite, no knowledge base. Nedzo assumes the surrounding process lives somewhere else and that the phone call is one step inside it. For anyone building on Orchestration as a Service, that is the right shape: the platform coordinating the work is FlowRunner, and Nedzo is the thing that talks.

Two details make it more capable than the action count suggests. The API key is scoped, either to one workspace or to the whole account, and an account-scoped key returns agents grouped by workspace. Agencies and multi-brand teams can run one flow that provisions and tunes agents across every client workspace from a single connection. And agent types are not all voice: Voice agents place and answer calls, while Chat and Widget agents handle text conversations from the same configuration surface, so the prompt, the language, and the post-conversation webhook are managed in one place regardless of which channel the customer chose.

Nedzo publishes no call listing endpoint and no manageable event surface, so this connector ships no trigger and makes no claim to listen. Its only event hook is postConversationWebhookUrl, a field on your own agent record that carries the transcript and summary when a conversation ends. Writing to that field from a flow would overwrite your own configuration, so connectors like this one leave it alone by design. Flows here start from a schedule or from the system that owns the lead.

Without FlowRunner

Sync overwrites quietly A bulk update replaces phone numbers and custom fields with no record of what was there
Dialing is a separate errand Someone exports a list, opens the voice tool, and starts calls by hand
Agent config drifts per workspace Each client workspace ends up with a slightly different prompt nobody can account for

With FlowRunner

Contested fields surfaced The records where a real value would be replaced are shown before anything is written
The call is one step A qualifying call runs inside the same flow that read the lead and wrote the outcome
Config applied deliberately Agents are created and tuned from the flow, so every workspace matches on purpose

Use Case Scenarios

New Lead Dialed While It Is Still Warm

A lead reaches a qualifying score in HubSpot. The agent reads the contact record, calls Upsert Contact in Nedzo so the phone number, timezone, and custom variables the prompt needs are all present, and then Make Call with the qualifying voice agent. Because the target type accepts either a stored contact or a raw E.164 number, the flow does not need to keep a separate identity map. The conversation identifier comes back immediately, the post-conversation webhook delivers the transcript and summary to FlowRunner when the call ends, and the outcome is written back onto the lead. The window between a lead going hot and a voice reaching them closes to the length of the sync interval.

One Agent Definition, Every Client Workspace

An agency runs the same reception agent for a dozen clients, each in its own Nedzo workspace, with only the business name, opening line, and language varying. With an account-scoped key, one flow reads List Workspaces, iterates, and calls Create Agent or Update Agent per workspace from a single template held in the flow. When the script changes, the change reaches every client in one run rather than in twelve browser sessions. Update Agent changes only the fields supplied, so a copy change does not silently reset a client's voice or maximum call duration.

Timezone-Aware Callbacks Without a Scheduler

Nedzo contacts carry a timezone. A flow that has a backlog of callbacks groups the queue by that field, waits until each group's local window opens, and calls Make Call with the right agent for the language on the record. No separate scheduling system is involved, because the data that decides when to dial is already on the contact. Contacts whose timezone is missing do not get called at a guess. They are routed to a person to fill in, which is a smaller and more honest task than apologizing for a 6am phone call.

Human-in-Loop Highlight

The operation to watch on Nedzo is not Make Call. It is Upsert Contact.

Upsert matches an incoming record against active contacts by phone first, falling back to email, and by default the values supplied overwrite the existing scalar and custom field values on whatever it matches. Enabling Preserve Existing flips that to filling only empty fields. Tags are always additive. So one flag decides whether a nightly CRM sync tops up gaps in the Nedzo address book or replaces it, and a bulk run started with the wrong flag will quietly rewrite the mobile numbers and custom variables of thousands of contacts. Nedzo returns 201 for a create and 200 for an update, which tells you a record was touched but not what it used to hold. There is no undo, and soft-deleted contacts are ignored by matching, so a stale record surfaces as a brand new one.

A FlowRunner sync agent therefore does the comparison itself before writing anything. It resolves each incoming record with Get Contact, and separates the harmless majority, where the incoming value fills a blank, from the contested minority, where a real stored value would be replaced. The harmless majority is written without ceremony. The contested minority stops the flow: "17 contacts would have an existing mobile replaced by this sync, including 4 where the current number has a completed call in the last 30 days. Overwrite, or preserve existing and fill only blanks?" Human-in-the-loop here costs one message and protects the phone numbers the whole outbound motion depends on.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via email
Human decides
Agent resumes with decision

Agent Capabilities

14 actions

Calls

1
  • Make Call Places an outbound AI voice call to either a stored contact or a raw E.164 number using the selected agent, and returns the conversation identifier. The agent must have a phone number assigned in Agent Builder under Settings, because calls fail with a 400 when the number is missing, not synced to the voice engine, or not active. Worth checking that assignment once in a provisioning flow rather than discovering it on a live lead.

Agents

5
  • List Agents Retrieves the AI agents reachable with the configured key. A workspace-scoped key returns a flat array; an account-scoped key returns workspace groups, each with its own agents array. Each record includes type, direction, prompt, voice, language, and post-conversation webhook settings.
  • Get Agent Retrieves a single agent by UUID with its full configuration: type, call direction, system prompt, voice, language, voicemail settings, maximum call duration, and post-conversation webhook URL. Used to capture the current state before an update so the flow holds a rollback copy.
  • Create Agent Creates a new agent in a workspace. Voice agents place and answer phone calls; Chat and Widget agents handle text conversations and ignore the call direction setting. Configures the system prompt, opening line, voice, language, voicemail behaviour, maximum call duration, speaking speed, and the webhook that receives the transcript and summary.
  • Update Agent Updates an existing agent by UUID, changing only the fields supplied and leaving the rest untouched. The agent type cannot be changed after creation, so a Voice agent stays a Voice agent.
  • Delete Agent Permanently deletes an agent and its configuration from the workspace. This cannot be undone, and the prompt, voice, and webhook settings go with it, so capture them with Get Agent first if there is any chance of rebuilding.

Contacts

6
  • List Contacts Retrieves the contacts in a workspace, each with name, email, phone, timezone, tags, and custom field values. Account-scoped keys must supply a workspace; workspace-scoped keys list their own.
  • Get Contact Retrieves a single contact by UUID with its name, email, phone number, timezone, tags, custom field values, and workspace details. This is the read that lets a sync flow compare before it writes.
  • Create Contact Creates a new contact record with a phone number, name, email, timezone, tags, and custom field values. Tags that do not exist yet are created automatically, and custom field keys must match the custom variable names shown in the dashboard.
  • Update Contact Updates an existing contact by UUID, changing only the fields supplied. Safer than upsert when the flow already knows exactly which record it means.
  • Upsert Contact Creates a contact or updates the matching one in a single request, matching on phone first and falling back to email. By default the supplied values overwrite existing scalar and custom field values, while Preserve Existing fills only empty fields. Tags are always additive and never removed, and unknown custom field keys are rejected. The overwrite default is why this action deserves a decision rather than a default.
  • Delete Contact Permanently deletes a contact by UUID along with its associated data. This cannot be undone, and soft-deleted contacts are ignored by upsert matching, so a later sync will create a fresh record rather than restoring the old one.

Workspaces

2
  • List Workspaces Retrieves the workspaces reachable with the configured key. Account-scoped keys return every workspace on the account, which is what makes a single flow able to manage many clients.
  • Get Workspace Retrieves a single workspace by UUID with its name, description, timezone, owning account identifier, and creation details. The workspace timezone is useful as the fallback when a contact has none.

Frequently Asked Questions

What can FlowRunner do with Nedzo AI?

FlowRunner agents can run Make Call, List Agents, and Get Agent in Nedzo AI, plus 11 more actions.

Does connecting Nedzo AI to FlowRunner require OAuth?

No. Nedzo AI connects to FlowRunner with an API key, no OAuth flow required.

Can Nedzo AI trigger a FlowRunner workflow automatically?

Nedzo AI doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with Nedzo AI

$100 in credits. No card required. Connect in minutes.