How to migrate from 46elks to Vonage
A developer's guide to migrating messaging from 46elks to Vonage: channel gains, request-format and auth changes, and a step-by-step checklist.
46elks is a Swedish telecom API platform, run from Uppsala, for sending SMS and MMS, placing voice calls, and managing virtual numbers. Vonage is a larger, publicly traded communications-API provider (part of Ericsson) that covers those same channels and adds several chat apps on top. On the messaging.dev Score, 46elks rates 33/100 and Vonage 89/100; this guide covers what actually changes in your integration when you move from one to the other.
What you gain and what you lose
Channels. You keep SMS, MMS, and voice — every channel 46elks offers, Vonage also supports, so you lose nothing. You gain RCS, WhatsApp, Viber, and Facebook Messenger. Neither provider offers Telegram, Apple Messages for Business, or email, so those stay off the table.
Compliance. Both are GDPR-aligned. Vonage additionally holds ISO 27001, SOC 2, and HIPAA, so no certification is lost in the move.
Data residency. 46elks keeps data on EU servers only, with no region choice. Vonage runs EU and US servers (plus APAC and Australia) and lets you choose your data region — but that means EU residency becomes a setting you select, not a default.
Pricing and credit. Both bill pay-as-you-go per message/minute. 46elks draws from a prepaid balance with no startup fee or monthly minimum; Vonage adds volume discounts and €2 of free trial credit, which 46elks does not offer. Published starting prices aren’t directly comparable — €0.047 per SMS part to Sweden for 46elks versus roughly $0.0072 per US SMS segment (plus carrier fees) for Vonage — so price your own destinations.
SDKs and docs. 46elks lists no official SDKs (curl/REST only); Vonage ships SDKs for Node.js, Python, PHP, Java, C#, Ruby, and Kotlin, and its docs rate “high” versus “medium.” Both expose a REST API and both offer a sandbox, so your test-before-live workflow carries over. For a fuller walkthrough of the target, see how to start with Vonage, or the side-by-side 46elks vs Vonage comparison.
How the request format differs
46elks:
curl https://api.46elks.com/a1/sms \
-u <api_username>:<api_password> \
-d from=CurlyElk \
-d to=+46700000000 \
-d message="Bring a sweater, it's cold outside"
Vonage:
curl -X POST 'https://rest.nexmo.com/sms/json' \
-d 'api_key=YOUR_API_KEY' \
-d 'api_secret=YOUR_API_SECRET' \
-d 'from=Vonage' \
-d 'to=15551234567' \
-d 'text=Hello from Vonage'
Three things change. The endpoint moves from https://api.46elks.com/a1/sms to https://rest.nexmo.com/sms/json (the legacy SMS API) or https://api.nexmo.com/v1/messages (the Messages API). Authentication moves out of the HTTP header: 46elks uses HTTP Basic auth (-u username:password), while the Vonage SMS API expects api_key and api_secret as body parameters, and its Messages API uses JWT auth instead. The payload maps closely but with a renamed field: from (sender) stays from, to (recipient) stays to, but the message body field message becomes text. Keep numbers in E.164 format.
Migration checklist
- Create a Vonage account and generate your API key and secret (or a JWT/application for the Messages API) from the dashboard.
- Map the fields:
message→text, keepfromandto, and move credentials from the-uBasic-auth header intoapi_key/api_secretbody params. - Re-point your sending code to the new base URL and pick one API surface (SMS API or Messages API).
- Re-test in Vonage’s sandbox before sending live traffic.
- Update your delivery-receipt and webhook callbacks to Vonage’s format and payload.
- Run both integrations in parallel and compare delivery results.
- Cut over once Vonage delivery is verified, then retire the 46elks path.
Watch out for
- Auth lives in the body now. Copying your old call verbatim will fail — 46elks’ Basic-auth header has no equivalent; you must send
api_key/api_secret(or a JWT), and the body field istext, notmessage. - Two API surfaces. Vonage exposes both a legacy SMS API and a newer Messages API, with different auth (key/secret vs JWT). Choose one deliberately; it is more moving parts than 46elks’ single endpoint.
- EU residency is opt-in. 46elks kept all data in the EU by default. Vonage is US-headquartered and offers a data-region choice, so if EU residency matters, set it explicitly rather than assuming it.