Migration guide

How to migrate from Apifon to Vonage

A developer-focused guide to migrating from Apifon to Vonage, covering channel and compliance differences, request-format mapping, and a step-by-step cutover checklist.

Apifon is a Greek business-messaging platform offering SMS, Viber, WhatsApp, RCS, Messenger and email over REST and SMPP APIs. Vonage is a publicly traded, Ericsson-owned communications-API provider covering SMS, voice, video and messaging. On the messaging.dev Score, Apifon rates 52/100 and Vonage 89/100 — this guide covers what actually changes when you re-point an existing Apifon integration at Vonage.

What you gain and lose

Channels. Both providers cover SMS, RCS, WhatsApp, Viber and Facebook Messenger, so those flows keep working unchanged. Moving to Vonage you gain MMS and Voice. You lose Email — Apifon sends email, Vonage does not — so any email flows will need a separate provider. Neither supports Telegram or Apple Messages for Business.

Compliance and residency. Both hold GDPR and ISO 27001. Vonage additionally carries SOC 2 and HIPAA. On data residency, both run EU servers; Vonage also offers US servers, a data-residency region choice, and APAC/Australia regions, whereas Apifon is EU-only with no region choice.

Pricing and credit. Apifon is prepaid pay-as-you-go — you top up a euro balance and per-message rates are quoted per account (not published). Vonage is also pay-as-you-go, with volume discounts, and publishes a starting rate (approx. $0.0072 per US SMS segment, plus carrier fees). Both offer free trial credit: an Apifon verification bonus, or €2 on Vonage.

Tooling. Both ship high-quality docs and SDKs for Java, PHP, C#, Python and Node.js; Vonage adds Ruby and Kotlin. Vonage provides a sandbox test environment; Apifon does not. One capability you lose: Apifon exposes both REST and SMPP, while Vonage is REST-only.

How the request format differs

Apifon (source):

curl -X POST "https://ars.apifon.com/services/api/v1/sms/send" \
  -H "Content-Type: application/json" \
  -H "X-ApifonWS-Date: $(date -u '+%a, %d %b %Y %H:%M:%S GMT')" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -d '{"message":{"text":"Hello There!","sender_id":"Apifon"},"subscribers":[{"number":"306999999999"}]}'

Vonage (target):

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:

  • Endpoint. Swap https://ars.apifon.com/services/api/v1/sms/send for Vonage’s SMS API at https://rest.nexmo.com/sms/json (or the Messages API at https://api.nexmo.com/v1/messages).
  • Authentication. Apifon signs requests with HMAC (Authorization: ApifonWS <api-key>:<signature> plus an X-ApifonWS-Date header) or an OAuth2 Bearer token, passed as headers. The Vonage SMS API instead takes an api_key and api_secret in the request body (the Messages API uses JWT). Drop the X-ApifonWS-Date and Authorization headers.
  • Payload. Apifon sends JSON: message.text, message.sender_id, and a subscribers array of {number} objects. Vonage’s SMS API sends flat, form-encoded fields. Map them: message.texttext, message.sender_idfrom, and each subscribers[].numberto.

Migration checklist

  1. Create a Vonage account and generate your API key and secret (or a JWT application for the Messages API).
  2. Map the fields: sender_idfrom, texttext, and each subscribers[].numberto.
  3. Re-point your sending code to the Vonage endpoint and move credentials out of headers into the request body (or JWT).
  4. Re-test in Vonage’s sandbox before sending live traffic.
  5. Update delivery-receipt and webhook callbacks to Vonage’s format.
  6. Run both providers in parallel and compare delivery results.
  7. Cut over, then decommission the Apifon path once metrics match.

For a fuller walkthrough of the target, see how to start with Vonage, and the side-by-side Apifon vs Vonage comparison.

Watch out for

  • No email channel. Apifon sends email; Vonage does not. Keep or replace that channel with a separate service.
  • No SMPP. Vonage is REST-only, so any Apifon SMPP binds must be rewritten as REST calls.
  • Legacy SMS API puts credentials in the body. The quickstart uses rest.nexmo.com with api_key/api_secret as parameters; consider the Messages API with JWT for tighter auth.
  • Headline SMS price excludes carrier fees. Budget above the ~$0.0072-per-segment figure, since carrier surcharges are added on top.