First-party app
Synthflow AI

Synthflow AI

Place single and batch voice AI calls, read call transcripts, and manage contacts, chats and the agent, phone-number, voice and knowledge-base catalogs on Synthflow AI.

stable AI & Machine LearningCommunication

About

Synthflow AI ships in the w6w first-party pack. It declares 26 actions, 2 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.synthflow
Version
0.1.0
Author
w6w
Licence
MIT
Categories
AI & Machine Learning · Communication

Overview

Synthflow builds voice AI agents that answer and place phone calls. The unit this app moves around is the call: start an outbound call or a whole batch against an existing agent, watch a batch’s progress (pause, resume, cancel), and pull a finished call’s transcript and metadata. Around that sit the catalogs a workflow picks from — agents, phone numbers, voices, knowledge bases — plus contacts (create, update, delete) and text chat sessions.

Agent, action, knowledge-base, simulation and subaccount authoring is deliberately not covered: those are deeply nested configuration objects meant to be built once in the Synthflow dashboard and then referenced by id. A workspace lives in exactly one cluster (Global, US or EU) and a key only works there, so the connection asks for the region and the app reaches only that cluster’s host.

Health checks track the Synthflow API and End to End calling components of status.synthflow.ai alongside the derived credential check; Synthflow publishes no usage or rate-limit surface, so quota is declared unavailable.

Build with Synthflow AI

Three routes to the same 26 actions. The Workflow tab is generated from Synthflow AI's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

Delete Agent

assistant-delete

Permanently delete an agent.

Get Agent

assistant-get

Read one agent's full configuration by id.

List Agents

assistant-list

List the agents (assistants) in the workspace.

Cancel Batch Call

batch-call-cancel

Cancel a batch so no further recipients are dialed.

Create Batch Call

batch-call-create

Create a batch of outbound calls, or append recipients to an existing batch.

Get Batch Call

batch-call-get

Read a batch's status and dispatch counters.

List Batch Calls

batch-call-list

List batch calls in the workspace.

List Batch Call Recipients

batch-call-list-recipients

List a batch's recipients, optionally by dispatch status.

Pause Batch Call

batch-call-pause

Suspend dialing; queued recipients stay queued. Allowed while scheduled or in progress.

Resume Batch Call

batch-call-resume

Resume a paused batch; it returns to scheduled.

Get Call

call-get

Read a call's transcript, status and metadata by id.

List Calls

call-list

List calls placed or received by an agent, newest first, with optional filters.

Make Call

call-make

Start an outbound phone call from an outbound agent to one recipient.

Create Chat

chat-create

Open a text chat session with an agent. The chat id is a UUID: supply one, or leave it blank to have one generated.

Get Chat

chat-get

Read a chat session with its conversation history and transcript.

Send Chat Message

chat-send-message

Send a message in a chat and receive the agent's reply.

Create Contact

contact-create

Create a contact.

Delete Contact

contact-delete

Delete a contact.

Get Contact

contact-get

Read one contact by id.

List Contacts

contact-list

List contacts, optionally searching by phone number.

Update Contact

contact-update

Update a contact; only the fields you set are sent.

Get Knowledge Base

knowledge-base-get

Read one knowledge base by id.

List Knowledge Bases

knowledge-base-list

List the workspace's knowledge bases.

Get Phone Number

phone-number-get

Read one phone number by slug (the number without the leading +).

List Phone Numbers

phone-number-list

List the workspace's phone numbers.

List Voices

voice-list

Browse the voices available to agents.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying Synthflow AI's real ids.

{
  "manifestVersion": "2",
  "name": "synthflow-example",
  "steps": [
    {
      "id": "assistant-get",
      "uses": {
        "app": "io.w6w.synthflow",
        "action": "assistant-get",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "model_id": "<model_id>"
      }
    }
  ]
}

Here are some of the things you can do

  • Get Agent

    read
    assistant-get
  • List Agents

    search
    assistant-list
  • Create Batch Call

    perform
    batch-call-create
  • Get Batch Call

    read
    batch-call-get
  • List Batch Calls

    search
    batch-call-list

+21 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for Synthflow AI, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to Synthflow AI. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "assistant-get",
  payload: {
    model_id: "<value>",
    // include_actions: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action assistant-get --payload '{"model_id":"<value>"}'

Give an AI agent Synthflow AI — without giving it Synthflow AI's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.synthflow#assistant-get",
    "input": {
      "model_id": "<model_id>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's Synthflow AI connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

Synthflow AI's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. Synthflow AI itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

Synthflow AI declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

Synthflow platform status

The `Synthflow API` and `End to End calling` components on status.synthflow.ai (incident.io).

quota

Capacity headroom