PurpleCallio

New · AI Voice Agents

AI voice agents that talk to your users and get things done.

Put a natural-sounding AI agent inside your product. It answers questions, looks things up in your systems and takes actions through your APIs, in real time, in your users' language. You configure it in the dashboard; PurpleCallio runs the voice, the model connection, the tools and the billing.

Unlocks after your first verified credit purchase.

Live call · Order support agent01:12

Hi Priya, this is Ava from ShopCo. How can I help today?

My order hasn't arrived yet. It was supposed to come yesterday.

lookup_order · success · 412 ms

I see order 4821 is with the courier and out for delivery today, before 6 pm. Would you like an SMS when it's nearby?

Yes please.

enable_sms_alert · success · 230 ms

Done. You'll get a text when the driver is about 15 minutes away. Anything else?

Natural conversation

Users can interrupt mid-sentence, like a real call.

13 languages

English, Hindi, Spanish, French, German, Japanese and more.

Takes real actions

Looks up and updates data through your own APIs.

No ML work

Write instructions in plain language in the dashboard.

How it works

From idea to live agent in five steps

  1. 1

    Create an agent

    In the dashboard, give it a name, instructions, a greeting, a voice, a language and a maximum call length. Every change is saved as a new version.

  2. 2

    Add tools (optional)

    Point the agent at HTTPS endpoints on your server, like lookup_order or book_slot. PurpleCallio signs every request so you know it's genuine.

  3. 3

    Test it in the playground

    Talk to the agent from your browser, watch the live transcript and tool calls, and refine the instructions until it sounds right.

  4. 4

    Start sessions from your backend

    When a signed-in user wants to talk, your server creates a session with your API key and hands the browser a short-lived, single-use token.

  5. 5

    Your user talks to the agent

    The browser SDK or the drop-in React component streams their voice. The agent answers, calls your tools, and the call is billed per minute in credits.

Use cases

What teams build with AI voice agents

Anywhere your users would otherwise wait for a person, fill in a form, or search a help centre, an agent can talk them through it. Each example shows the tools it would connect to.

First-line customer support

A customer clicks “Talk to support” at 11 pm.

  • Answers common questions from your policies
  • Checks the customer's account or order
  • Hands off to a human with a summary when it can't help
get_accountcreate_ticket

Appointment booking

A patient or client wants the next free slot on Tuesday.

  • Finds open slots in your calendar
  • Books, moves or cancels after the user confirms
  • Reads back the date, time and location
find_slotsbook_slot

Lead qualification

A visitor on your pricing page has questions before buying.

  • Asks your qualifying questions naturally
  • Explains plans and answers objections
  • Saves the lead to your CRM and books a demo
save_leadbook_demo

Order and delivery status

A shopper asks, “Where's my order?”

  • Looks up the order and delivery tracking
  • Explains delays and next steps
  • Starts a return or refund only after the shopper approves
lookup_orderstart_return

Candidate screening

Hundreds of applicants need a first-round conversation.

  • Runs the same structured screening for everyone
  • Answers questions about the role and company
  • Saves answers to your applicant tracking system
get_jobsave_screening

Patient intake

A patient prepares for a telemedicine visit.

  • Collects symptoms, history and medications before the visit
  • Gives the doctor a structured summary
  • Never diagnoses; it follows your clinic's instructions
save_intake

Tutoring and language practice

A student wants to practise spoken Spanish for 10 minutes.

  • Holds a conversation at the student's level
  • Corrects pronunciation and grammar gently
  • Records progress against the lesson plan
get_lessonsave_progress

Reservations and hospitality

A guest wants a table for four at 8 pm.

  • Checks availability and special requests
  • Confirms the booking and sends the details
  • Answers questions about the menu and opening hours
check_tablereserve_table

Internal helpdesk

An employee needs to reset access or check a leave policy.

  • Answers HR and IT policy questions
  • Opens tickets with the right category
  • Checks the status of existing requests
search_policyopen_ticket

Capabilities

Everything you need to run voice AI in production

Real-time, interruptible voice

Low-latency speech in and out. When the user talks over the agent, it stops and listens.

Your instructions, your voice

Plain-language instructions, a greeting, a voice and a language per agent, with full version history.

Secure tools

HMAC-signed HTTPS calls to your endpoints, argument validation, timeouts, and protection against requests to private networks.

Confirm before acting

Mark risky tools (refunds, bookings) as “requires confirmation” so the user must approve each call in the browser.

Playground

Talk to any agent from the dashboard, with a live transcript, tool activity and a call timer.

Call history and analytics

Every call with its duration, outcome and credits, plus totals, success rate and peak usage.

Optional transcripts

Store transcripts per agent, with card numbers, keys and emails redacted, and delete them after 7, 30 or 90 days.

Gemini or OpenAI

Choose the voice model per agent. Provider keys stay on our servers and never reach the browser.

Built-in limits

Maximum call length per agent, concurrency and daily limits, and calls capped by the credits left.

Integrate

Two small pieces of code

Your server creates a session for a signed-in user, then your page renders the agent. The API key stays on your server; the browser only ever sees a short-lived token.

1. Your backend: create a session

server.ts
// Your backend: the API key never leaves the server.
import express from "express";
import { PurpleCallioClient } from "@purplecallio/sdk";

const client = new PurpleCallioClient({
  apiKey: process.env.PURPLECALLIO_API_KEY!,
  apiUrl: "https://purplecallio.com/api",
});

const app = express();

app.post("/api/ai-session", requireLogin, async (req, res) => {
  const session = await client.ai.createSession({
    agentId: process.env.PURPLECALLIO_AGENT_ID!,
    participant: { id: req.user.id, name: req.user.name },
    metadata: { plan: req.user.plan }, // optional, max 2 KB JSON
  });
  // Hand the browser only the short-lived bj_ai_ token.
  res.json({ token: session.token });
});

// Later, from your backend:
// await client.ai.getSession(sessionId);
// await client.ai.endSession(sessionId);

2. Your page: drop in the agent

SupportWidget.tsx
import { PurpleCallioAI } from "@purplecallio/react";

export function SupportWidget() {
  return (
    <PurpleCallioAI
      apiUrl="https://purplecallio.com" // required
      getToken={() => fetch("/api/ai-session", { method: "POST" }).then((r) => r.json())}
      className="my-agent"
      startLabel="Talk to support"
    />
  );
}

Prefer your own UI? Use the usePurpleCallioAI hook or the headless PurpleCallioAgentCall class from @purplecallio/sdk.

Simple per-minute pricing

  • AI calls are billed per minute in credits.
  • Unlocks after your first verified credit purchase.
  • One prepaid balance for video, audio and AI calls. Add credits any time.
  • A call can't run longer than your remaining credits cover, so there are no surprise bills.
  • Failed connections are never charged.
See plans and credit rates

Security and privacy

  • Create sessions only from your backend with your bj_live_ API key, and only after you have authenticated your own user. The browser receives a bj_ai_ token that works for one session and expires if unused.
  • Provider keys (Gemini, OpenAI) stay on PurpleCallio servers. Audio is relayed through PurpleCallio; the browser never talks to a model provider directly.
  • Verify the signature and timestamp on every tool request, and treat tool arguments as untrusted input from the model.
  • Turn on "requires confirmation" for tools with side effects (refunds, bookings), so the user must approve each call in the browser.
  • Keep secrets out of agent instructions and session metadata: both are sent to the model provider.

Frequently asked questions

Give your product a voice

Create an agent, talk to it in the playground, and embed it with a few lines of code.