From Zero to Phone Number in 5 Minutes
You have an idea for an app that needs SMS, voice, or phone verification. You don't want to spend a week configuring Twilio, setting up webhooks, and figuring out carrier quirks. You want a phone number, an API, and working code now.
New accounts receive a one-time 72-hour live trial with one US/Canada local number, 300 managed inbound AI seconds (five minutes) total, and five SMS send attempts to verified destinations. Card verification is required before number allocation; the clock starts when allocation succeeds. There is no monthly reset or automatic paid subscription. Live OTP extraction and outbound calls require Pro. Existing Free accounts retain their assigned monthly allowances. Read the account's offerVersion, trial and limits rather than assuming every Free account has the same offer. Only describe a monthly reset when the account response supplies a non-null resetsAt.
Step 1: Sign Up (30 seconds)
Create an account at agentcall.co/sign-up. Email and password, or sign in with Google. Verify a card before allocating your trial number. Activation may take additional time.
Once signed in, grab your API key from the dashboard. It looks like ac_live_xxxxxxxxxxxxxxxx.
Step 2: Install the SDK (10 seconds)
npm install agentcallThe SDK is a lightweight TypeScript/JavaScript client. It works in Node.js, Deno, Bun, and any runtime that supports fetch.
Step 3: Provision a Phone Number (1 API call)
import AgentCall from 'agentcall';
const client = new AgentCall('ac_live_...');
const number = await client.numbers.provision({
country: 'US',
type: 'local',
label: 'my-mvp',
});
console.log(`Your number: ${number.number}`);
// Your number: +15551234567That's it. You now have a real phone number. It can receive calls within your trial allowance and send trial SMS to verified destinations. Outbound calls and live OTP extraction require Pro.
Step 4: Send an SMS (1 API call)
const message = await client.sms.send({
from: number.number,
to: '+14155559999',
body: 'Hello from my MVP! Built with AgentCall.',
});
console.log(`Message sent: ${message.id}`);Step 5: Receive SMS via Webhook
// Set up a webhook to receive incoming messages
await client.webhooks.create({
url: 'https://my-mvp.com/webhook',
events: ['sms.inbound'],
});
// In your server:
app.post('/webhook', (req, res) => {
const { event, data } = req.body;
if (event === 'sms.inbound') {
console.log(`New SMS from ${data.from}: ${data.body}`);
// If it contains an OTP, it's already extracted:
if (data.otp) {
console.log(`OTP code: ${data.otp}`);
}
}
res.json({ received: true });
});Step 6: Make a Voice Call (Bonus)
const call = await client.calls.initiate({
from: number.number,
to: '+14155559999',
});
console.log(`Call initiated: ${call.id}`);
// Outbound calls require Pro; check account status before calling.A plain call carries no live audio: the person who answers hears a short automated line and then silence. For a real conversation, use client.calls.initiateAI() with a system prompt (Pro, $0.40/min managed).
The Complete MVP Script
Here's everything in one file: provision a number, send an SMS, set up a webhook, and wait for a reply:
import AgentCall from 'agentcall';
import express from 'express';
const client = new AgentCall(process.env.AGENTCALL_API_KEY);
const app = express();
app.use(express.json());
async function main() {
// Provision a number
const number = await client.numbers.provision({
country: 'US',
type: 'local',
label: 'my-mvp',
});
console.log(`Number: ${number.number}`);
// Set up webhook for incoming messages
await client.webhooks.create({
url: 'https://my-mvp.com/webhook',
events: ['sms.inbound', 'sms.otp'],
});
// Send a test SMS
await client.sms.send({
from: number.number,
to: '+14155559999',
body: 'Hello! Reply to test two-way SMS.',
});
console.log('SMS sent. Waiting for replies...');
}
// Handle incoming messages
app.post('/webhook', (req, res) => {
const { event, data } = req.body;
console.log(`Event: ${event}`, data);
res.json({ received: true });
});
app.listen(3000, () => {
console.log('Webhook server running on :3000');
main();
});Live Trial and Pro
New accounts receive a one-time 72-hour live trial with one US/Canada local number, 300 managed inbound AI seconds (five minutes) total, and five SMS send attempts to verified destinations. Card verification is required before number allocation; the clock starts when allocation succeeds. There is no monthly reset or automatic paid subscription. Live OTP extraction and outbound calls require Pro.
Existing Free accounts retain their assigned monthly allowances. Read the account's offerVersion, trial and limits rather than assuming every Free account has the same offer. Only describe a monthly reset when the account response supplies a non-null resetsAt.
Pro is $19.99/month plus number rental and usage: local/mobile numbers $2/month each, toll-free $2.50/month, outbound SMS $0.015/message, standard outbound voice $0.035/min, managed AI voice $0.40/min, BYOK voice $0.10/min plus your AI provider's charges, or Premium Voice $0.59/min. AI calls round up to whole minutes per call. New-account destination/business verification can still apply after upgrading.
Why AgentCall Over Twilio for MVPs?
Twilio is the industry standard, but it's built for enterprise applications. For MVPs, the difference matters:
- Setup time: Twilio requires account verification, regulatory bundles, and phone number configuration. AgentCall: sign up, get API key, provision number, 2 minutes.
- Trial destinations: AgentCall live trials include five SMS attempts to verified destinations. Paid accounts can also have destination and business verification requirements.
- OTP extraction: Twilio delivers raw SMS. You parse codes yourself. AgentCall extracts OTP codes automatically and includes them in webhook payloads.
- Agent-native: If you're building AI agents, AgentCall's per-agent model means less glue code. Twilio is general-purpose; AgentCall is purpose-built.
Related Reading
- Add Phone Numbers to Your SaaS: A Multi-Tenant Guide
- Use the AgentCall MCP Server with Claude Code
- 5 Best Phone Number APIs for Developers Compared
- AgentCall vs Twilio: No Inbound Webhook Needed
FAQ
Do I need a credit card to start?
For new accounts, yes: a card is verified before your trial number is allocated, and nothing is charged or upgraded automatically. New accounts receive a one-time 72-hour live trial with one US/Canada local number, 300 managed inbound AI seconds (five minutes) total, and five SMS send attempts to verified destinations. Card verification is required before number allocation; the clock starts when allocation succeeds. There is no monthly reset or automatic paid subscription. Live OTP extraction and outbound calls require Pro. Existing Free accounts retain their assigned monthly allowances. Read the account's offerVersion, trial and limits rather than assuming every Free account has the same offer. Only describe a monthly reset when the account response supplies a non-null resetsAt.
Can I upgrade later without losing my number?
Yes. Upgrading to Pro keeps your existing numbers, webhooks, and configuration, including during the 48-hour hold after a trial ends. You also unlock outbound calls, live OTP extraction, call recording, and additional numbers.
What languages does the SDK support?
The official SDK is TypeScript/JavaScript (npm install agentcall). The REST API works with any language that can make HTTP requests: Python, Go, Ruby, PHP, or curl.