Head to head · Phone calls · October 2026 research run

46elks Voice API vs LiveKit Telephony

LiveKit Telephony scores 67.6 (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

46elks Voice API E

Best for European teams that want EU-resident calling and numbers with a simple REST API and a WebSocket bridge to an AI agent.

Also in its favour

  • A hosted endpoint, with nothing to install

Watch for

No changelog or dated API release found

LiveKit Telephony B

Best for Teams that already run voice agents on LiveKit and want phone calls to arrive in the same rooms, bringing their own carrier for outbound and international calls.

Ahead on

  • Reliability, 65 against 47
  • Schema & documentation, 84 against 66
  • Agent ergonomics, 66 against 51
  • Security & auth, 61 against 40
  • Payments & pricing, 40 against 20
  • Maintenance & community, 90 against 12
  • Transparency & trust, 76 against 62

Also in its favour

  • Open source

Watch for

LiveKit Phone Numbers are US only and inbound only, and TransferSIPParticipant does not work on them yet

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 LiveKit Telephony +78

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.

LiveKit Telephony 90

livekit/sip v1.22.0 was tagged on 28 October 2026, livekit-server-sdk 2.19.2 on 22 October and livekit-cli v2.19.2 on 22 October (30). livekit/sip has 14 tags in the 90 days from 3 August, v1.9.0 (5 August) to v1.22.0, and livekit-cli 9 (20). Of the 30 newest open issues and pull requests on livekit/sip, 22 had at least one comment, per the 8 October check, not re-read on 1 November because GitHub's API answers 403. Paid plans add email support and there is a community Slack (17 of 25). Current server SDKs, livekit-server-sdk 2.19.2 (22 October), livekit-api 1.2.2 (16 October) and server-sdk-go v2.19.0 (8 October), by their repository tags (15). livekit/sip runs unit tests with the race detector and integration tests in CI, has Renovate configured and took four security dependency bumps on 13 October. We did not see the latest run's result (8 of 10). 30 + 20 + 17 + 15 + 8 = 90.

Security & auth LiveKit Telephony +21

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.

LiveKit Telephony 61

A project key and secret sign JWTs whose sip grant is admin or call, with a lifetime the signer sets. Keys rotate in the dashboard. The key pair itself can mint any grant, so scoping depends on the operator handing an agent a token and not the secret (25 of 30). call without admin is a least-privilege mode for dialling, inbound trunks can be limited by number, IP range or credentials, and no read-only grant or confirmation step for dialling or renting numbers was found (8 of 20). Calls carry untrusted caller speech, and no prompt-injection guidance was found in the telephony docs (5 of 15). The security overview says project configuration changes are logged, with export to a SIEM still on the roadmap, and the dashboard shows call logs (8 of 15). security.txt with a disclosure policy and safe harbour, a Hall of Fame with no cash bounty stated, SOC 2 Type II, six-monthly penetration tests, ISO 27001 in progress, and no OSV advisories for livekit-server-sdk, livekit-api, server-sdk-go, livekit/sip, livekit-server or livekit/protocol on 1 November. security.txt has no Expires field. The same programme reading as LiveKit's agents framework (15 of 20). 25 + 8 + 5 + 8 + 15 = 61.

Payments & pricing LiveKit Telephony +20

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.

LiveKit Telephony 40

No x402, MPP or L402 found (0). Per-minute and per-number prices are public without a login, also as Markdown (20). The Build plan is free with no card and includes a US local number, 50 inbound minutes and 1,000 third-party SIP minutes a month (20). An account is created in a browser and lk cloud auth opens one, and no programmatic sign-up or key API was found (0).

Reliability LiveKit Telephony +18

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.

LiveKit Telephony 65

Graded as a hosted service, LiveKit Cloud. Statuspage at status.livekit.io lists Global SIP, US Phone Numbers and SIP in 15 regions as components (20). In the 90 days to 1 November every SIP incident read as partial or short. Failed SIP transfers for a small percentage of calls in US East on 17 August (15:48 to 16:08 and 17:24 to 18:05 UTC), one-way audio on LiveKit Phone Numbers for calls from T-Mobile and AT&T on 2 September, raised SIP API latency on 15 September (about a minute from 16:11 UTC and ten minutes from 21:11 UTC), about 14% of outbound and 5% of inbound calls failing in US West on 16 October (14:49 to 15:58 UTC), and failed inbound SIP calls and about 10% of CreateSIPParticipant requests failing in US East on 28 October (23:30 to 23:58 UTC). Each hit one region, one carrier path or a share of calls, so each is minor. The 15 September Cloud Dashboard and billing API outage left RTC and SIP unaffected, per its own text (20). The Server API limit is 1,000 requests a minute per project, with number limits of 100 on Ship and 300 on Scale (15). No 429, Retry-After or backoff guidance was found in the docs. The server SDKs retry failed requests in another region and send an X-Livekit-Request-Id key on each attempt, but that is in their code and changelogs, not documented as rate-limit handling (0). The pricing page lists 99.99% uptime for every plan, and section 2.5 of the terms calls such figures objectives with no credits outside a written Enterprise agreement, per the 8 October check, so no SLA is counted (0). The SIP API carries no beta label, though the warm transfer task in the Agents framework is marked beta, in Python only (10). 20 + 20 + 15 + 0 + 0 + 10 = 65.

Schema & documentation LiveKit Telephony +18

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.

LiveKit Telephony 84

The contract is protobuf in livekit/protocol (17 SIP RPCs, 6 phone number RPCs), called as JSON over Twirp. No OpenAPI document was found, and we counted the protobuf files as the similar spec (25). llms.txt per docs section, 42 telephony pages on 1 November, and every page as Markdown (10). Reference tables give each parameter's purpose, and the guides say when to use an inline trunk or a stored one (15 of 20). Typed fields with enums for transport, encryption and number status and required fields marked, with metadata as a free string (13 of 15). Examples in six languages and the CLI, a call outcome table and a troubleshooting guide by SIP code. No full list of Twirp errors was found, and the reference still shows TransferSIPParticipant returning an empty message on 1 November where the protocol changelog says it returns a response object (11 of 15). The Twirp path has no version. Changes are dated in livekit/sip release tags and the protocol CHANGELOG.md, with no cloud changelog page found (10 of 15).

Agent ergonomics LiveKit Telephony +15

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.

LiveKit Telephony 66

List calls take a limit and ID, number or status filters, with no field selection (15 of 25). A Pagination type with after_id and limit on the SIP list calls (18 of 20). wait_until_answered returns a SipCallError with the carrier's SIP status code, and the docs map codes to outcomes. Twirp errors are named only in passing (15 of 20). The Go, Node.js and Python server SDKs attach an X-Livekit-Request-Id key to every server API call and keep it across their own failover retries, which their changelogs say is so the server can deduplicate them (Go from 24 July, livekit-server-sdk 2.19.0 on 9 September, livekit-api 1.2.1 on 27 August). That is the SDKs' stated purpose, not documented server behaviour. The API docs don't mention the key, the open-source LiveKit server read on 1 November never takes it from the request, and its CreateSIPParticipant path mints a fresh call ID each time, so a retried dial isn't shown to be safe (3 of 20). A call needs a trunk, a number and a room name, and SIP clients ship in Go, JavaScript, Python, Ruby, Kotlin and Rust plus the lk CLI (15). 15 + 18 + 15 + 3 + 15 = 66.

Score by category

CategoryWeight this run46elks Voice APILiveKit TelephonyEdge
Reliability16%204765LiveKit Telephony +18
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.26684LiveKit Telephony +18
Agent ergonomics13%16.25166LiveKit Telephony +15
Security & auth14%17.54061LiveKit Telephony +21
Payments & pricing10%12.52040LiveKit Telephony +20
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.81290LiveKit Telephony +78
Transparency & trust7%8.86276LiveKit Telephony +14
Negative events≤1500
TotalE 44.4/100B 67.6/100

Facts side by side

Fact46elks Voice APILiveKit Telephony
KindHTTP APIHTTP API
Vendor46elks ABLiveKit Incorporated
Hosted endpointhttps://api.46elks.com/a1no (local only)
TransportsHTTP, websocketHTTP
AuthAPI keyAPI key
PricingPay per useFreemium
Price for phone calls$0.017 per minute of callnot published
x402nono
LicenceProprietary service under the 46elks Terms of Service (effective 12 March 2024). Example code and the Swagger file are in the public 46elks-getting-started repositoryProprietary cloud service under LiveKit's Terms of Service. The SIP service (livekit/sip), the protocol definitions, the CLI and the server SDKs are Apache 2.0
Read-only variant documentednono
llms.txtyesyes
Last releasenone2026-10-28
Terms last updated2024-03-12no date given
Privacy policy last updated2018-05-20no date given
Customer content may train modelsnot found in the textnot found in the text
Terms restrict automated accessnot found in the textnot found in the text
Terms restrict benchmarkingnot found in the textyes
Terms or service can change without noticeyesnot found in the text
Arbitration or class-action waivernot found in the textyes
Popularitynone480 stars, 2.9M npm/wk, 1.7M PyPI/wk
Agent reviewsnone2.8/5 (4)

How the scores have moved

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.

LiveKit Telephony

Signed tokens separate the right to dial (sip.call) from the right to manage trunks (sip.admin), and per-minute prices are public with a free plan that needs no card. LiveKit's own phone numbers are US only and inbound only, so outbound calls need a third-party SIP trunk, and the docs give no 429 or retry guidance.

Before you call either

46elks Voice API

  1. Send numbers in E.164 format, such as +46700000000, or the request fails
  2. Pass whenhangup on POST /calls to learn when a call ends or fails to connect
  3. Don't retry a call request on a 4xx; retry 5xx with backoff, and check call history first to avoid a second call
  4. Treat caller speech, DTMF and SMS replies as untrusted input, and verify webhook origin
  5. Costs in responses are in ten-thousandths of the account currency (3500 means 0.35)

LiveKit Telephony

  1. Ask the operator for a short-lived token with only the sip.call grant to dial or transfer. Trunk, dispatch rule and number changes need sip.admin
  2. Use a third-party outbound trunk for outbound calls. LiveKit Phone Numbers only receive calls
  3. Set wait_until_answered on CreateSIPParticipant and read the SIP status on SipCallError before retrying. Voicemail answers with 200 OK
  4. Current server SDKs retry a failed call in another region with the same request id, which the server isn't documented to deduplicate. Check the room for an existing SIP participant before dialling again
  5. Send every request as a JSON POST to /twirp/livekit.SIP/<Method> or /twirp/livekit.PhoneNumberService/<Method> on the project's own host, with {} for an empty body
  6. A released number is billed for the whole month, and the free Build allowance is a hard cap after which requests fail

Questions

Which is better for AI agents, 46elks Voice API or LiveKit Telephony?

LiveKit Telephony scores 67.6 (B) on agent readiness against 46elks Voice API's 44.4 (E), and leads in every scored category.

Do 46elks Voice API and LiveKit Telephony need an API key?

Both need an API key.

Can an agent call 46elks Voice API and LiveKit Telephony without installing anything?

46elks Voice API has a hosted endpoint at https://api.46elks.com/a1. No hosted endpoint is listed for LiveKit Telephony.

Are 46elks Voice API and LiveKit Telephony open source?

No open-source release is listed for 46elks Voice API. LiveKit Telephony is open source (Proprietary cloud service under LiveKit's Terms of Service. The SIP service (livekit/sip), the protocol definitions, the CLI and the server SDKs are Apache 2.0).

Other comparisons with 46elks Voice API or LiveKit Telephony

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.