Platform · Tools, APIs & transfers

Call your APIs mid-conversation. Hand off with context.

Define a tool once and agents call it on voice and chat alike. A REST API covers the platform, and the transfer engine dials your team in order, briefs the human, then bridges the call.

Start free

Get started for free. Pay as you go. Or talk to sales

What it does

Custom tools agents call mid-conversation

Define a tool with a name, a description the model reads, JSON Schema parameters, an endpoint, method, and headers. The agent picks it mid-turn, the platform calls your endpoint with contact and call context attached, and the response lands back in the model for the same reply.

  • One tool registry serves voice and chat conversations
  • Headers interpolate contact, assistant, and call IDs
  • GET tools send arguments as a query string
  • Upstream errors carry a no-fabrication instruction

A REST API that covers the platform

28 resource groups under /api/v1: contacts, calls, assistants, campaigns, numbers, knowledge, appointments, and more. Scoped keys separate sandbox from production, and the in-app reference documents endpoints with copyable curl examples.

  • 28 resource groups under /api/v1
  • Key scopes: read only, read write, admin
  • sk_test_ and sk_live_ keys, hashed at rest, shown once
  • In-app API reference with curl examples

Warm transfers with ordered fallbacks

The transfer node dials your targets in order and hunts the next number when one fails, capped at six dial attempts. The caller hears an announcement and hold music while the agent leg rings. Cold transfer is one command; warm transfer confirms a human before any bridge.

  • Targets hunted in order, capped at 6 dial attempts
  • Hold music plays while the agent leg rings
  • Ring timeout defaults to 25 seconds per attempt
  • Connected, voicemail, no-answer, and failed route branches

A briefing before the human picks up

Answering-machine detection confirms a person answered, then the AI speaks a private briefing to the agent before bridging. Briefing, announcement, and joint intro lines can be static text or generated from the last 12 turns of the live transcript.

  • AMD screens the agent leg before any briefing
  • Briefings generate from the live call transcript
  • A joint intro plays once both parties are bridged
  • Voicemail drop waits for the machine greeting to end

Webhooks and async tool callbacks

Flows fire a webhook when a conversation ends, hydrate variables from your endpoint on turn one, and hand long-running tools a callback URL. Posted results land in session history for the next turn. Flow webhook and flow tool URLs pass an SSRF egress guard.

  • Async tools post results to a per-session callback URL
  • End-of-conversation webhooks with custom headers
  • A variables webhook hydrates flow state on turn one
  • Egress guard re-checks every redirect hop

Failure handling that keeps the caller

When a transfer cannot connect, you choose: the AI resumes the call and speaks a line generated from the transcript, or the call ends. A cron sweeps stale transfer parks every minute so a caller never sits on hold waiting for a webhook that got lost.

  • Resume or hangup, configured per outcome
  • The resume line is generated from the call transcript
  • A minutely cron force-resolves stale transfer parks

At scale

Built for the agent lifecycle.

01 · Deploy

A tool is one registry row: name, JSON Schema parameters, endpoint, headers. Attach it to an assistant and it loads for voice calls and chat conversations with no per-channel setup.

02 · Test

Run flows against the working draft over POST /api/run/:flowId before publishing, with real tool execution. Sandbox keys keep test traffic separate from production data.

03 · Scale

The tool proxy is stateless and shared by every channel. Transfer state lives in the database and advances on webhooks, with a minutely sweeper as the backstop, so no call depends on one server staying up.

04 · Observe

Transfers stamp destination and type onto the call record, and call analytics count them. Tool failures return explicit error messages to the model instead of failing silently.

Under the hood

  • ENGINE

    Raw Telnyx Call Control runs cold and warm transfers, branching on real call outcomes

  • FALLBACKS

    Ordered target hunting with configurable retries, capped at 6 dial attempts

  • AMD

    Answering-machine detection on the agent leg; voicemail drop waits for the greeting to end

  • ENVELOPE

    Tool calls wrap arguments with contact, assistant, and call context; verbatim mode by opt-in

  • API

    28 resource groups under /api/v1 with scoped sandbox and production keys

  • CALLBACKS

    Long-running tools post results to a per-session callback URL

  • EGRESS

    SSRF guard on flow webhook and flow tool URLs, re-validated on every redirect hop

FAQ

How does an agent call my API during a conversation?

You define the tool with JSON Schema parameters and an endpoint. When the model invokes it, the platform POSTs the arguments wrapped in an envelope carrying contact, assistant, and call IDs; GET tools receive arguments as a query string. The response returns to the model inside the same turn.

What happens when my endpoint errors or times out?

Non-2xx responses are surfaced to the model with the upstream body and an instruction to relay the reason and never invent values to satisfy a validator. Transport failures tell the agent to offer a retry or a callback. Validator hints that reveal PII formats are redacted before the model sees them.

How does a warm transfer work end to end?

The AI announces the transfer, holds the caller with music, and dials your targets in order. Answering-machine detection confirms a human, the AI speaks a private briefing to the agent, bridges the legs, and speaks a joint intro. If no one answers, the AI resumes the call or hangs up, per your configuration.

What are the requirements and limits?

Transfer destinations must be E.164 phone numbers. Hunting is capped at six dial attempts per transfer, and the ring timeout defaults to 25 seconds per attempt. Flow webhook and flow tool endpoints must be public HTTP or HTTPS; the egress guard blocks private and internal hosts.

What does the API cost?

There is no separate platform fee for API access. Usage is billed at $0.07 per minute for voice and $0.02 per message, and signup is free pay-as-you-go.

The end of one
conversation at a time.

Sign up today and get a free local number, $10 in calling credit, and your first assistant built for you. Or book a 30-minute walkthrough tailored to your stack.

Get started for free · Pay as you go · Voice from $0.07/min