Skip to main content
This guide walks you through the four REST calls it takes to answer your first phone call with an AI agent.
You’ll need a ThunderPhone account. Sign up is free and takes under a minute. Prefer clicking to curling? The dashboard quickstart reaches the same first call without writing any code.

Step 1: Get an API key

2

Navigate to Keys

Go to Organization → Keys in the dashboard.
3

Create a key

Click Create key, give it a name, and copy the sk_live_... value. The raw key is shown only once — store it in your secret manager immediately.
Stuck? Create a server API key walks this flow in step-by-step detail, and the in-app copilot can spotlight each control for you live.
Throughout this guide, swap sk_live_YOUR_API_KEY with the value you just copied. The key identifies your organization automatically, so you never need to put an org id in URLs.

Step 2: Create an agent

An agent defines how the AI handles conversations — prompt, voice, product tier, tools, and widget eligibility.
Product tiers: spark is optimized for cost, bolt for speed, and storm-base / storm-extra for intelligence on complex prompts. See Agents for the full comparison.

Step 3: Provision a phone number

This call asks ThunderPhone’s demo pool for a number and assigns your new agent as the inbound handler. (To bring your own number from a VoIP provider, see VoIP connections instead.)
Your new number starts in status="provisioning" and transitions to active within a few seconds; by the time you hang up your browser the number is ready to take calls.

Step 4 (optional): Set up a webhook

For real-time events (dynamic call routing, post-call processing) add a webhook endpoint. Subscribe only to the events you need.
The response contains a one-shot secret — copy it to your secret manager. Use that secret to verify the X-ThunderPhone-Signature header on incoming requests (see Webhooks overview).

Step 5: Test your agent

Call the number you just provisioned. The agent picks up, introduces itself, and follows your prompt. Inspect the call after it ends:
Drill into a specific call to fetch the transcript and recording URL:

Next steps

Add function tools

Let your agent call your APIs during a conversation.

Place outbound calls

Trigger calls from your own code.

Handle webhooks

React to call events in real time.

Full API reference

Every public endpoint, documented.