Migration guide

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) to https://api.46elks.com/a1/sms. Telnyx expects an explicit POST of a JSON body to https://api.telnyx.com/v2/messages, so you must set Content-Type: application/json and serialize your payload.
  • Authentication. 46elks uses HTTP Basic auth — the API username and password passed with -u. Telnyx uses a Bearer API key in the Authorization: Bearer YOUR_API_KEY header. 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 uses message, Telnyx uses text. Note the sender format too — 46elks accepts an alphanumeric sender ID (CurlyElk), while the Telnyx example uses an E.164 number.

Migration checklist

  1. Create a Telnyx account and generate an API key in the dashboard; there is no username to store, only the key.
  2. Map the request fields: keep to and from, rename message to text, and confirm your sender ID or number is valid on Telnyx.
  3. Switch your sending code from form-encoded Basic auth to a JSON POST with the Authorization: Bearer header — or adopt one of the seven official SDKs.
  4. Re-point the base URL from https://api.46elks.com/a1/sms to https://api.telnyx.com/v2/messages.
  5. Re-test. Telnyx has no sandbox, so validate with a low-volume live send to a number you control rather than a test environment.
  6. Update your delivery/status webhooks and callback handlers to parse Telnyx’s payload format instead of 46elks’.
  7. 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 message to text and 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.