Starter
- Outbound
- 1.40×
- Inbound
- 1.40×
- Conferences
- 1.40×
- Streaming
- 1.40×
- Spend cap
- $50/day
One API. One balance.
Place a call from a curl command. Hold a conference in code. Pay by the second. Read the ledger while the call is still in progress.
POST /v1/calls places a call. You give us a destination, a caller ID you own, and a webhook URL. We dial. Your endpoint hears call.initiated, then call.answered or call.failed. The call object stays around after the call ends, so duration, end-reason, recordings, and cost all read off the same id without a second request.
Inbound is the same shape in reverse. Point a phone number at a webhook and we deliver each call with the caller's number, the dialed number, and the metadata we have. Answer it, route it, transfer it, drop it onto a conference, or reject it — every choice is one HTTP call back to /v1/calls/{id}/actions/.... No proprietary markup language sits between your code and the carrier.
You top up a balance with a card. Stripe handles the charge. Every call, recording, transcription, conference minute, and number rental draws from that balance by the second. When the balance crosses a threshold you set, you get an email from noreply@voepy.com. When it hits zero, we stop placing calls — the API returns a 402 and the dashboard shows the empty balance until the next top-up.
Spend caps are hard, not advisory. Set a daily cap, a monthly cap, both, or neither. If a call would push past the cap, we don't dial it; the API returns a 403naming the cap that blocked the call. That's the cap doing its job.
The ledger is append-only and per-tenant. Every charge gets a row with the call id, the duration in seconds, the underlying carrier cost, and the markup applied. When a call attempt fails on our side after the balance was debited, a refund row posts back automatically. Top-up receipts and monthly invoices arrive by email and stay in the dashboard for the life of the account.
All prices in USD. Direct per-minute carrier rates plus a flat plan multiplier — 1.40× on Starter, 1.25× on Pro, 1.10× on Enterprise. Every charge shows up line by line in the ledger. No premium routes hidden in fine print, no per-API-call surcharges, no annual commit to unlock the price you see.
Per-country, per-minute rates and number-leasing prices live on the full pricing page → /pricing
1.40× / 1.25× / 1.10× for Starter / Pro / Enterprise). The full rate sheet is at /pricing.403 naming the cap.owner, admin, billing, or member — or a custom role you build from a permissions checklist. Every action they take lands in the audit log with their email and the timestamp.Signup, key, top-up, call. The whole loop is one tab.