Skip to main content
Voice is the flagship channel: a published agent answers a real phone number over the public telephone network (PSTN), greets the caller, answers from its knowledge, runs its skills, and hands off to a person when needed. There is nothing to host — you buy a number, point it at an agent, and inbound calls just work.

Get a number, point it at an agent

1

Search availability

Browse purchasable numbers by area code, city, or vanity suffix. Filter by capability (require voice, and sms if you plan to text from it later).
2

Reserve (optional), then purchase

Hold a number for ~30 minutes so it can’t be sniped while you confirm, then purchase it. Purchase debits your prepaid wallet. Already own a number elsewhere? Import it instead — no wallet charge.
3

Assign it to an agent

Assigning sets the number’s default agent. Inbound calls to that number are routed to this deployment’s voice connection and reach your agent.
The agent must be published to take live calls — phone and chat always serve the last published version, never your draft. See Draft vs Published.

On the call

The agent opens with its configured greeting (spoken in the agent’s primary language), listens with real-time turn detection, and responds with the platform’s voice engine. Knowledge lookups, skills, and playbooks all run live. Per-agent call control governs the experience: a maximum call length, “are you still there?” idle reminders, and what to do on silence.

Transfer and handoff

When a caller needs a person, the agent transfers the call. You configure a default handoff destination plus a transfer-by-context table — plain-language rules that route specific situations (billing, Spanish line, a region) to specific numbers. A data-lookup skill can also supply a dynamic destination at call time (for example, route to the booked technician). The original caller ID is passed through to the receiving line.

Keypad input (DTMF)

Callers can press keypad digits during a call — useful for menus, account numbers, or confirmations. See DTMF / Keypad.

In the API

ActionEndpointScope
Search available numbersGET /numbers/searchnumbers:read
Reserve a numberPOST /numbers/reservenumbers:write
Purchase a numberPOST /numbers/purchasenumbers:write
Import a number you ownPOST /numbers/importnumbers:write
Assign to an agentPOST /numbers/{id}/assignnumbers:write
Unassign (keep, pool it)DELETE /numbers/{id}/assignnumbers:write
Release a numberDELETE /numbers/{id}numbers:write
Review call summariesGET /agents/{agentId}/callscalls:read
# Assign a purchased number to a published agent
curl -X POST https://builder.flowyte.com/api/v1/numbers/NUM_ID/assign \
  -H "Authorization: Bearer flowyte_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"agentId": "AGENT_ID"}'
DELETE /numbers/{id} permanently releases the number back to the carrier. To detach a number from an agent while keeping it, use DELETE /numbers/{id}/assign to move it to the pool.
Configure the greeting, transfer rules, and call control on the agent, then republish. Editing without republishing changes only the draft — the live phone line keeps serving the old version.