Demo: 15-minute trial numbers
Reserve a temporary phone number for 15 minutes — perfect for prospect demos, hackathons, and 'try before signup' flows. The shortest path from idea to a ringing phone.
Updated May 6, 2026
Demo numbers are the platform's "try it before you sign up" surface. A prospect clicks a button, gets called by your agent within seconds, hears the experience. No signup, no card, no friction.
When to use a demo number
| Use case | Why this fits |
|---|---|
| Marketing page "Call me" button | Live demo > recorded video |
| Hackathon / quickstart | Skip the signup-and-provisioning loop |
| Sales demo | Show the actual product, not slides |
| First-call onboarding | Existing user's first taste of voice AI |
For real production traffic you provision actual numbers — see Phone Numbers.
Getting a demo number
curl -X POST https://api.call2me.app/v1/demo/call \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+905551234567",
"name": "Ali"
}'
The platform:
- Picks an available number from the demo pool
- Reserves it for 15 minutes
- Places a call from that number to the phone you supplied
- Routes the call through a default demo agent (Turkish + English)
The recipient's phone rings within seconds. The agent introduces itself, explains it's a demo, and runs through a short interactive script.
Limits & anti-abuse
To keep the pool fair:
- One call per
phone_numberper day — repeats return the same reservation if it's still active, otherwise refused - 60-second cap — the call ends automatically; demos are designed to be short
- Per-IP rate limit — bursts are throttled at the edge
These limits don't apply to provisioned numbers on paid accounts.
Wiring it into your site
The pattern:
<form onsubmit="callMe(event)">
<input id="phone" placeholder="+90 555 ..." required />
<button type="submit">Call me now</button>
</form>
<script>
async function callMe(e) {
e.preventDefault();
const phone = document.getElementById('phone').value;
const r = await fetch('https://api.call2me.app/v1/demo/call', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ phone_number: phone })
});
if (r.ok) {
alert('Your phone will ring in a few seconds.');
} else {
const err = await r.json();
alert(err.error?.message ?? 'Try again in a moment.');
}
}
</script>
That's the entire integration. The endpoint is rate-limited and self-protecting; you can ship it on a public page.
Demo agent customization
By default the demo agent runs the platform's standard introduction. If you want your own demo (different prompt, different voice, your brand), the dashboard's Demo → Agent page lets workspace admins override which agent the demo flow uses.
For a fully custom flow with no shared pool, mint your own agent and
use the regular calls API (POST /v1/calls) — that's the production path.
What's next
- Quickstart — the post-demo signup flow
- Phone Numbers — provisioning real numbers
- Calls — the underlying API the demo uses
Frequently asked
Q.What's a demo number?
A phone number reserved from a shared pool for 15 minutes. Calls placed to or from it route to a demo agent you configure. After 15 minutes the number returns to the pool.
Q.Do I need an account to use a demo number?
No — that's the point. Demo numbers exist so prospects can experience a voice agent before signing up. They're typically wired into a 'Call me' button on a marketing page.
Q.Is there a usage limit?
Yes. One demo call per phone number per day, max 60 seconds per call. The limit is anti-abuse, not commercial — paid accounts have no such caps.
Q.What happens after 15 minutes?
The reservation expires. The number returns to the pool and may be used by someone else. The recipient phone, if they call back, gets a not-in-service signal.