ThunderPhone v3 is live.Self-serve, from 2¢/min.Read the announcement

Using the dashboard

Leaving ThunderPhone

Export an agent as open files, rebuild it on LiveKit Agents, Pipecat, Vapi, or Retell with a coding-agent skill, and download your call history and recordings.

You can leave ThunderPhone whenever you want. Any agent exports as a zip of open files, free, and a skill helps your coding agent rebuild it on LiveKit Agents, Pipecat, Vapi, or Retell. This page covers what you can take, how to export it, and what you redo on the other side.

What you can take with you

WhatHow
An agent: instructions, tools, transfer numbers, steps, settings, number routing, and webhooksThe agent export, one zip per agent
The agent's knowledge filesInside the agent export
Call history and transcriptsThe calls export, up to 1,000 calls per request
RecordingsOne recording per request, by call
Phone numbers on your own carrierThey never left your carrier. See Phone numbers

Export an agent

In Zeus

Open the agent and go to its settings (Call handling in the agent's editor). At the bottom, under Export, copy or delete, choose Export. The zip downloads to your computer.

With the API

cURL
curl 'https://api.thunderphone.com/v1/agents/12/export' \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -o agent-12.zip

The zip is built when you ask for it. Anyone who can read the agent can export it. Knowledge, numbers, and webhooks are included only when the credential can read them: an OAuth token needs knowledge:read, numbers:read, and integrations:read, and webhooks also need an admin or owner. A part that is left out is listed under omitted in manifest.json. The API answers 429 above 30 exports a minute.

Query parameterDescription
include_url_pathstrue keeps the path of each URL in the export, such as a tool's endpoint. By default every URL is cut to its host. User names, passwords, and query strings are removed from URLs either way

Use include_url_paths=true when you are about to rebuild the agent somewhere else, because the tool endpoints are needed there. Leave it off for a copy you plan to share.

What the zip holds

FileContents
manifest.jsonThe format (thunderphone.agent-export/v1), what is included, and an omitted list that names anything left out and why
agent.jsonThe agent as GET /v1/agents/{agent_id} returns it, with credentials removed
prompt.mdThe live instructions
knowledge/index.json and the files beside itThe agent's knowledge. Each document is the original file where one is stored, otherwise its extracted text
numbers.jsonThe numbers routed to this agent, inbound and outbound, with any pinned version or variant
webhooks.jsonThe webhook endpoints scoped to this agent, without their secrets
README.mdWhat each file is

A knowledge file larger than 25 MB is left out, and so is anything past 100 MB for the whole export. Each one is listed in manifest.json with the endpoint that downloads it, GET /v1/knowledge/documents/{document_id}/original.

What is never included

  • Credential values. A tool's headers are listed by name only. Header values are write-only in ThunderPhone: no API response returns them, so no export can. You re-enter them on the other side. This covers credentials ThunderPhone stores as credentials. Your instructions and knowledge files are copied exactly as you wrote or uploaded them, so if a key was ever pasted into a prompt or a document, it is in the zip. Check before you share it.
  • Call history and recordings. They have their own exports; see Call history and recordings.
  • Version history. The export holds the agent as it is live now. Earlier versions stay listed at GET /v1/agents/{agent_id}/versions.
  • Other agents this one hands off to. Export each of them the same way.

Move to another platform

The migrate-off-thunderphone skill walks your coding agent through the move. Install the ThunderPhone skills:

npx skills add thunderphone/skills

Then ask your coding agent to move an agent off ThunderPhone and name the destination: LiveKit Agents, Pipecat, Vapi, or Retell. The skill downloads the export, asks you for each credential, rebuilds the agent from a mapping for that destination, and tests it there before any number moves. The conversion runs in your coding agent, with your own keys. ThunderPhone never writes to your account on another platform.

What carries over, as files the skill maps for you:

  • Instructions, including shared instructions and steps.
  • Tools: the same endpoint, method, and parameter schema. Each tool's request_format records the body shape your endpoint expects.
  • Transfer numbers and the end-call and keypad settings.
  • Knowledge files.
  • Voicemail, silence, and call-length settings.
  • Which numbers the agent answers and places calls from.

What you redo on the other side:

  • Speech, language-model, and voice providers. You choose them on the destination. Nothing guarantees that a voice, or how a call sounds, will match.
  • Credentials. Tool header values and webhook secrets.
  • Telephony. How numbers reach the agent is set up differently on every platform.
  • Steps and handoffs. A destination with a flow or handoff feature gets them rebuilt there. Elsewhere the skill folds the steps into the instructions and tells you.
  • ThunderPhone settings with no equivalent. Intelligence, hearing and reply-speed settings, the built-in email and text-message tools, and call grading, summaries, and outcome labels do not move unless you rebuild them.
  • Request signatures. ThunderPhone signs the tool requests and webhooks it sends. Another platform signs its own way, so an endpoint that verifies the ThunderPhone signature needs a new check.
  • Testing. Test the rebuilt agent on the destination before you move a number.

Leave the ThunderPhone agent in place until the new one has passed your tests. It is your way back.

Phone numbers

Move numbers last, after the new agent passes its tests.

  • A number on your own carrier (a VoIP connection) stays with that carrier. Point it at the new platform in your carrier's console. Then choose Release on the number in ThunderPhone and leave Also cancel this number in my … account unticked: the number is disconnected from ThunderPhone and stays in your carrier account. Through the API, release it with DELETE /v1/phone-numbers/{phone_number_id}?confirm=true and do not send release_at_provider.
  • A number ThunderPhone provided. Contact support before you release a number you want to keep. Releasing a ThunderPhone number is permanent: it returns to the pool and can go to another customer.

Call history and recordings

These are separate from the agent export.

  • Calls. GET /v1/calls/export returns up to 1,000 calls per request as CSV (metadata) or JSON (with transcripts). Filter by agent_id and page through your history with start_date and end_date. The X-Truncated response header is true when more calls matched than were returned.
  • Recordings. GET /v1/calls/{call_id}/audio returns a short-lived URL for one call's recording. There is no bulk recording download.
cURL
curl 'https://api.thunderphone.com/v1/calls/export?export_format=json&agent_id=12&start_date=2026-10-01T00:00:00Z&end_date=2026-11-01T00:00:00Z' \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -o calls-2026-10.json

What it costs

Nothing. The agent export, the calls export, and recording downloads are free. ThunderPhone is pay-as-you-go with no subscription and no seat fee. A ThunderPhone number stops billing when you release it.

After you leave

There is no fixed term. You may end the agreement by written notice to legal@thunderphone.com, sent from the account's administrative email or another verifiable channel. A lapse in payment may suspend service; by itself it never ends the agreement or triggers deletion of Customer Data. On data, the Terms say: "After formal termination, Provider will return or delete Customer Data within sixty (60) days, subject to Customer's export rights, backup cycles, legal holds, legally required retention, the DPA, and any executed BAA."

The full text is in the Terms of Service, under Service term; suspension; termination. The Terms govern; this is a summary.