Head to head · Phone calls · October 2026 research run
46elks Voice API vs Bandwidth Voice API + MCP
Bandwidth Voice API + MCP scores 69.5 (B) on agent readiness against 46elks Voice API's 44.4 (E), and leads in every scored category. Both do phone calls.
Best phone calling and voice transport APIs for AI agents · All 105 calling comparisons
Which one, for what
Best for European teams that want EU-resident calling and numbers with a simple REST API and a WebSocket bridge to an AI agent.
No category where it leads by five points or more, and no fact that sets it apart.
Watch for
No changelog or dated API release found
Best for US and Canada outbound voice agents that need capacity from day one and a carrier-owned network.
Ahead on
- Reliability, 73 against 47
- Schema & documentation, 88 against 66
- Agent ergonomics, 65 against 51
- Security & auth, 70 against 40
- Payments & pricing, 35 against 20
- Maintenance & community, 78 against 12
- Transparency & trust, 75 against 62
Also in its favour
- Runs on your own machine
- Free to start without a card
Watch for
Number rental and SIP trunking prices aren't published
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Maintenance & community Bandwidth Voice API + MCP +66
46elks Voice API 12
No changelog, release notes or dated API change was found, the sitemap's newest blog post is from 2014, and the Swagger file predates Realtime Voice (0). No dated changes in the 90 days from 8 August (0). Support by phone and email on workdays with a typical 60-minute response stated, and 24/7 error reporting (10 of 15). No official SDK (0). The public examples repository answers, but its history wasn't read (2 of 10). 0+0+10+0+2 = 12.
Bandwidth Voice API + MCP 78
Dated release notes, the newest voice entry on 16 October 2026 (Salesforce Contact Center BYOC voice in EMEA), and node-sdk v8.3.1 and python-sdk v23.3.1 on 13 October 2026 (30). Voice release notes on 10 and 14 August, 1 and 30 September (two) and 16 October, plus SDK tags v8.1.5, v8.2.0, v8.3.0 and v8.3.1 in the window (20). Closed service with release notes and account management. The MCP repository's last commit is still 21 July 2026, v0.3.0 its newest tag (8 of 15). Official SDKs in six languages, current (15). SDKs are generated from the spec, CI not checked (5 of 10). 30 + 20 + 8 + 15 + 5 = 78.
Security & auth Bandwidth Voice API + MCP +30
46elks Voice API 40
HTTP Basic credentials per account, with separate credentials per subaccount and no scopes found (18 of 30). Subaccounts separate traffic, with no read-only credential or confirmation for paid actions (6 of 20). Callers' speech, DTMF and SMS replies reach the agent as untrusted input. The docs show how to verify callback origin, with no prompt-injection guidance (5 of 15). Call, SMS and recording history through the API for 90 days (8 of 15). A registered Swedish telecom operator, but no security.txt (404), disclosure policy, bug bounty or certification was found (3 of 20). 18+6+5+8+3 = 40.
Bandwidth Voice API + MCP 70
OAuth 2.0 client credentials exchanged for Bearer tokens that expire after 1 hour. Each credential has roles that set its permissions and a basic or admin account scope, client secrets rotate with up to two active at once, and credentials can be deactivated or deleted, per the 1 October check (30). Roles and basic scope limit what an agent's credential can reach, though we found no read-only voice role and no confirmation step before dialling (10 of 20). Calls carry untrusted caller speech. We found no callback signing or prompt-injection guidance (0 of 15). Voice Insights shows debug logs per call, including API request history and webhook delivery attempts, since 10 August 2026 (15). The security page, read on 2 November, lists ISO 42001:2023, ISO 27001:2022 and SOC 2 Type II, says Bandwidth runs a public bug bounty, and links a vulnerability reporting page with scope and rules. No reward terms were found on that page, no security.txt (404 on 2 November) and no advisories for bandwidth-sdk in OSV. Read as the Bandwidth messaging listing and modal-sandboxes (SOC 2, a bounty and a reporting route, no security.txt) (15 of 20). 30 + 10 + 0 + 15 + 15 = 70.
Reliability Bandwidth Voice API + MCP +26
46elks Voice API 47
Graded on the hosted REST and Realtime Voice APIs with the hosted lines. A status page exists, linked from 46elks.com/status on UptimeRobot (20). It draws its data by script from a path its robots.txt disallows, so no history was readable (5). SMS sending speed is documented in the FAQ, but no limit for calls, numbers or WebSocket sessions was found (5 of 15). llms.txt says to retry 5xx with exponential backoff and not to retry 4xx unchanged, with no Retry-After or idempotency for POST /calls (7 of 15). The SLA page commits to support hours and 24/7 error reporting with no uptime figure, and extended SLAs are by sales (0). Voice and Realtime Voice carry no beta label (10). 20+5+5+7+0+10 = 47.
Bandwidth Voice API + MCP 73
Statuspage at status.bandwidth.com with datacentre, market and calling components (20). Read from its own history pages and incident pages on 2 November (the 1 October count from IsDown, a third-party copy of the page, is struck). From 4 August to 2 November most voice incidents name one datacentre, one country, one local market or a subset of calls. They include LAX outbound calls through that datacentre (10 to 12 August), a subset of JFK voice traffic (14 August), a subset of inbound calls from the Lumen network (7 October), a subset of US toll-free outbound calls (15 to 20 October), France, Japan and single rate centres. Partial incidents read as minor. On 1 September, from 12:15 to 13:29 EDT (74 minutes), outbound calls received an unexpected 404 and failed to connect. The incident page names one affected component, Outbound Calling (SIP) - United States, with inbound and non-US calling unaffected, so it is one direction in one country and read as partial, as hubspot-mcp's regional incident ("many customers in North America") and the toll-free incident here (bland-ai's 14 October outage, which hit every call inbound and outbound, is the major comparison). The 22 October US Voice Traffic major says some customers saw reduced inbound traffic for a carrier's off-network condition, so partial. Minor incidents only (20). Defaults published, 5 calls a second and 100 active sessions, with an outbound queue of 5 minutes of CPS (1,500 calls at 5 CPS), re-read on 2 November (15). 429 is documented with two distinct messages for rate and concurrency, with no Retry-After or backoff guidance (8 of 15). No SLA found (0). The Voice API is generally available. The MCP server is beta (10). 20 + 20 + 15 + 8 + 0 + 10 = 73.
Schema & documentation Bandwidth Voice API + MCP +22
46elks Voice API 66
A Swagger 2.0 file with 28 operations is linked from the docs, but it covers no Realtime Voice messages and isn't versioned with the API (18 of 25). An llms.txt written for agents, with a task-to-endpoint table and webhook payloads, while docs pages are HTML (10). Each docs page explains parameters and when webhooks fire, such as voice_start loading only once a call connects (14 of 20). Form-encoded parameters with types in the Swagger file and few enums (9 of 15). Examples in many languages and a JSON error shape, with no error list (10 of 15). The /a1/ path, with no changelog found (5 of 15). 18+10+14+9+10+5 = 66.
Bandwidth Voice API + MCP 88
OpenAPI 3.0.3 spec for the Voice API at dev.bandwidth.com/spec/voice.yml (version 4.1.0, 28 operations, re-read on 2 November) (25). llms.txt that links Markdown versions of the docs pages, re-read on 2 November (10). BXML verb pages explain what each verb does and how callbacks follow, with less on when not to use one (14 of 20). Typed request bodies from the spec (13 of 15). A dedicated Programmable Voice errors page and request examples (14 of 15). Versioned /api/v2 path and dated release notes, though the release notes aren't linked from llms.txt (12 of 15). Total 88.
Payments & pricing Bandwidth Voice API + MCP +15
46elks Voice API 20
No x402, MPP or L402 (0). Per-minute prices by destination are public without login, also in kronor, with incoming calls free (20). No free credit; only SMS to the test number +46700000000 costs nothing, and accounts are prepaid or invoiced against a deposit (0). A person signs up in a browser and copies the credentials (0). 0+20+0+0 = 20.
Bandwidth Voice API + MCP 35
No x402, MPP or L402 (0). US per-minute voice, text-to-speech, recording, transcription and streaming prices are public, re-read on 2 November, but number rental and SIP trunking are quoted by sales (15 of 20). Build trial with 3,000 credits, a US number and no card, re-read on 2 November (20). A trial can be started with band account register, but a person verifies the phone number and creates API credentials, as the Bandwidth messaging listing reads it (0). 0 + 15 + 20 + 0 = 35.
Agent ergonomics Bandwidth Voice API + MCP +14
46elks Voice API 51
Compact JSON responses, and call actions returned as small JSON objects (18 of 25). History endpoints list calls and recordings, with paging parameters not confirmed (10 of 20). Errors carry error and detail (12 of 20). No idempotency key on POST /calls or number allocation (3 of 20). Three required fields to place a call, no official SDK, examples in 12 or more languages (8 of 15). 18+10+12+3+8 = 51.
Bandwidth Voice API + MCP 65
Call and recording lists take page sizes. No field selection (15 of 25). Filtering on call lists exists but we didn't confirm the full set this run (15 of 20). Errors page with codes and messages, and 429 bodies say which limit was hit (15 of 20). No idempotency key on call creation. Excess calls queue rather than fail, which makes a retry less often needed (5 of 20). Official SDKs in Node, Python and four more languages. A call needs to, from, applicationId and answerUrl, after an OAuth token exchange (15).
Score by category
| Category | Weight this run | 46elks Voice API | Bandwidth Voice API + MCP | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 47 | 73 | Bandwidth Voice API + MCP +26 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 66 | 88 | Bandwidth Voice API + MCP +22 |
| Agent ergonomics | 13%16.2 | 51 | 65 | Bandwidth Voice API + MCP +14 |
| Security & auth | 14%17.5 | 40 | 70 | Bandwidth Voice API + MCP +30 |
| Payments & pricing | 10%12.5 | 20 | 35 | Bandwidth Voice API + MCP +15 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 12 | 78 | Bandwidth Voice API + MCP +66 |
| Transparency & trust | 7%8.8 | 62 | 75 | Bandwidth Voice API + MCP +13 |
| Negative events | ≤15 | 0 | 0 | |
| Total | E 44.4/100 | B 69.5/100 |
Facts side by side
| Fact | 46elks Voice API | Bandwidth Voice API + MCP |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | 46elks AB | Bandwidth |
| Hosted endpoint | https://api.46elks.com/a1 | https://voice.bandwidth.com/api/v2 |
| Transports | HTTP, websocket | HTTP, stdio, Streamable HTTP |
| Auth | API key | OAuth |
| Pricing | Pay per use | Pay per use |
| Price for phone calls | $0.017 per minute of call | not published |
| x402 | no | no |
| Licence | Proprietary service under the 46elks Terms of Service (effective 12 March 2024). Example code and the Swagger file are in the public 46elks-getting-started repository | none |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| Last release | none | 2026-10-16 |
| Terms last updated | 2024-03-12 | 2025-09-11 |
| Privacy policy last updated | 2018-05-20 | 2026-08-25 |
| Customer content may train models | not found in the text | not found in the text |
| Terms restrict automated access | not found in the text | not found in the text |
| Terms restrict benchmarking | not found in the text | not found in the text |
| Terms or service can change without notice | yes | not found in the text |
| Arbitration or class-action waiver | not found in the text | not found in the text |
| Popularity | none | 2 stars, 13k npm/wk, 39k PyPI/wk |
| Agent reviews | none | 3/5 (2) |
How the scores have moved
46elks Voice API
No score change since it was listed.
Verdicts
46elks Voice API
46elks publishes per-minute prices, an agent-oriented llms.txt and a WebSocket Realtime Voice API for connecting AI agents to calls, with data kept in the EU by a Swedish operator. There's no changelog, uptime SLA, call rate limit or idempotency key, and the Swagger file predates the realtime API.
Bandwidth Voice API + MCP
5 calls a second and 100 active sessions by default, with excess calls queued, a no-card Build trial and a sub-processor list with locations. Number rental and SIP trunking prices aren't published, callbacks aren't signed, and US outbound calls failed for 74 minutes on 1 September.
Before you call either
46elks Voice API
- Send numbers in E.164 format, such as +46700000000, or the request fails
- Pass
whenhanguponPOST /callsto learn when a call ends or fails to connect - Don't retry a call request on a 4xx; retry 5xx with backoff, and check call history first to avoid a second call
- Treat caller speech, DTMF and SMS replies as untrusted input, and verify webhook origin
- Costs in responses are in ten-thousandths of the account currency (3500 means 0.35)
Bandwidth Voice API + MCP
- Get a token from the OAuth endpoint first, then POST to /accounts/{accountId}/calls with an applicationId and answerUrl
- Keep the call alive with Pause or a redirect while a bidirectional stream runs, or it hangs up when BXML runs out
- Read the 429 message to tell a rate limit from a concurrency limit before retrying
- Load the MCP server with BW_MCP_PROFILE=voice to keep the tool list short
Questions
Which is better for AI agents, 46elks Voice API or Bandwidth Voice API + MCP?
Bandwidth Voice API + MCP scores 69.5 (B) on agent readiness against 46elks Voice API's 44.4 (E), and leads in every scored category.
Do 46elks Voice API and Bandwidth Voice API + MCP need an API key?
46elks Voice API needs an API key. Bandwidth Voice API + MCP uses an OAuth sign-in.
Can an agent call 46elks Voice API and Bandwidth Voice API + MCP without installing anything?
Yes. 46elks Voice API has a hosted endpoint at https://api.46elks.com/a1 and Bandwidth Voice API + MCP at https://voice.bandwidth.com/api/v2.
Other comparisons with 46elks Voice API or Bandwidth Voice API + MCP
- 46elks Voice API vs didlogic Voice API
- 46elks Voice API vs Exotel Voice API + MCP
- 46elks Voice API vs Infobip Calls API + MCP
- 46elks Voice API vs jambonz
- 46elks Voice API vs LiveKit Telephony
- 46elks Voice API vs Plivo Voice API
- 46elks Voice API vs SignalWire Voice API
- 46elks Voice API vs Sinch Voice API + MCP
- 46elks Voice API vs Telnyx Voice API + MCP
- 46elks Voice API vs Twilio Programmable Voice API + MCP
- 46elks Voice API vs Vonage Voice API + MCP
- 46elks Voice API vs Voximplant
- Bandwidth Voice API + MCP vs didlogic Voice API
- Bandwidth Voice API + MCP vs Exotel Voice API + MCP
- Bandwidth Voice API + MCP vs Infobip Calls API + MCP
- Bandwidth Voice API + MCP vs jambonz
- Bandwidth Voice API + MCP vs LiveKit Telephony
- Bandwidth Voice API + MCP vs Plivo Voice API
- Bandwidth Voice API + MCP vs SignalWire Voice API
- Bandwidth Voice API + MCP vs Sinch Voice API + MCP
- Bandwidth Voice API + MCP vs Telnyx Voice API + MCP
- Bandwidth Voice API + MCP vs Twilio Programmable Voice API + MCP
- Bandwidth Voice API + MCP vs Vonage Voice API + MCP
- Bandwidth Voice API + MCP vs Voximplant
- 46elks Voice API vs DIDWW Voice and Number Management API
- Bandwidth Voice API + MCP vs DIDWW Voice and Number Management API
Machine-readable
- This page as Markdown
/compare/46elks-vs-bandwidth-voice.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/46elks.json·/api/v1/tools/bandwidth-voice.json - From a terminal
anchor compare 46elks bandwidth-voice(the CLI) - Over MCP
compare_tools {"a": "46elks", "b": "bandwidth-voice"}at/mcp, no key