How to migrate from 46elks to Telnyx
A developer-focused guide to moving SMS and voice traffic from 46elks to Telnyx, covering channel gains, request-format changes, and a step-by-step migration checklist.
46elks is a Swedish telecom API platform, run from Uppsala, for sending SMS and MMS, making and receiving calls, and managing virtual numbers. Telnyx is a licensed telecom carrier offering a broader CPaaS platform that adds messaging channels on top of voice, all over its own private IP network. On the messaging.dev Score, 46elks rates 33/100 and Telnyx 78/100 — treat that as a data point on breadth and certification, not a verdict on your specific use case.
What changes when you move
Channels. You keep SMS, MMS and voice, and you gain RCS, WhatsApp and email. You lose nothing: 46elks does not offer those three channels. Neither provider offers Viber, Facebook Messenger, Telegram, or Apple Messages for Business, so those remain unavailable on both.
Compliance. Both are GDPR-aligned. Telnyx additionally holds ISO 27001, SOC 2, and HIPAA, which 46elks does not list.
Data residency. 46elks keeps personal data on EU servers only, with no region choice. Telnyx offers both EU and US servers, lets you choose the data residency region, and additionally lists Asia-Pacific and South America.
Pricing. Both are pay-as-you-go billed per message part from a prepaid model; Telnyx adds volume discounts and custom contracts for high-volume accounts. Neither offers a free developer credit, so that is unchanged.
Tooling. 46elks ships no official SDKs (raw REST); Telnyx ships seven — Node.js, Python, Ruby, Go, Java, .NET, and PHP. Docs quality goes from medium to high. Both expose REST; Telnyx also offers SMPP.
Everything else is broadly similar: both support self-onboarding and both are prepaid pay-as-you-go.
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"
Telnyx:
curl -X POST https://api.telnyx.com/v2/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"from": "+15551234567",
"to": "+15559876543",
"text": "Hello, world!"
}'
Three things change concretely:
- Endpoint and encoding. 46elks posts form-encoded fields (
-d) tohttps://api.46elks.com/a1/sms. Telnyx expects an explicitPOSTof a JSON body tohttps://api.telnyx.com/v2/messages, so you must setContent-Type: application/jsonand serialize your payload. - Authentication. 46elks uses HTTP Basic auth — the API username and password passed with
-u. Telnyx uses a Bearer API key in theAuthorization: Bearer YOUR_API_KEYheader. There is no username; the key alone authenticates the request. - Payload fields. The recipient (
to) and sender (from) keep the same names. The message body is renamed: 46elks usesmessage, Telnyx usestext. Note the sender format too — 46elks accepts an alphanumeric sender ID (CurlyElk), while the Telnyx example uses an E.164 number.
Migration checklist
- Create a Telnyx account and generate an API key in the dashboard; there is no username to store, only the key.
- Map the request fields: keep
toandfrom, renamemessagetotext, and confirm your sender ID or number is valid on Telnyx. - Switch your sending code from form-encoded Basic auth to a JSON
POSTwith theAuthorization: Bearerheader — or adopt one of the seven official SDKs. - Re-point the base URL from
https://api.46elks.com/a1/smstohttps://api.telnyx.com/v2/messages. - Re-test. Telnyx has no sandbox, so validate with a low-volume live send to a number you control rather than a test environment.
- Update your delivery/status webhooks and callback handlers to parse Telnyx’s payload format instead of 46elks’.
- Run both providers in parallel, compare delivery results, then cut over once Telnyx matches your expectations.
For a from-scratch walkthrough of the target, see how to start with Telnyx, and for a field-by-field breakdown see the 46elks vs Telnyx comparison.
Watch out for
- No sandbox. 46elks provides a test environment; Telnyx does not. You will validate against live traffic, so guard your first sends carefully.
- Narrower country coverage. 46elks lists 215 countries covered versus 130 for Telnyx — check that your key destinations are supported before cutting over.
- New payload shape. The rename of
messagetotextand the move from form-encoding to JSON are silent breakers: a request that “looks” right can fail if you keep the old field name or content type.