Migration guide

How to migrate from Apifon to Infobip

A developer's guide to moving SMS and multichannel messaging from Apifon to Infobip, covering channel and compliance differences, request-format changes, and a step-by-step migration checklist.

Apifon is a Greek business-messaging platform offering SMS, RCS, WhatsApp, Viber, Facebook Messenger and email through a web console plus REST and SMPP APIs. Infobip is a global omnichannel communications platform that covers the same channels and adds MMS, Telegram, Apple Messages for Business and voice. On the messaging.dev Score, Apifon rates 52/100 and Infobip 96/100; this guide walks through what actually changes at the API level when you migrate.

What changes when you move

Channels. Every channel Apifon supports — SMS, RCS, WhatsApp, Viber, Facebook Messenger and email — is also available on Infobip, so you lose no channel by moving. You gain MMS, Telegram, Apple Messages for Business and voice.

Compliance. Both providers are GDPR- and ISO 27001-aligned. Infobip additionally holds SOC 2 and HIPAA, which Apifon does not list.

Data residency. Apifon hosts on EU servers only, with no region choice. Infobip offers both EU and US servers, a data-residency choice, and additional regions (APAC, Latin America, Middle East, Africa).

Pricing. Apifon is prepaid pay-as-you-go: you top up a euro balance by card, PayPal or bank transfer and messages draw it down, with per-message rates quoted per account. Infobip is primarily quote/contract-based (contact sales), with some pay-as-you-go options. Neither publishes a starting SMS price, and both offer free trial credit and self-service onboarding.

Tooling. SDK coverage overlaps on Java, C#, Python, PHP and Node.js; Infobip adds Go. Both document at a high quality. Infobip also provides a sandbox (Apifon has none) and an SMTP interface alongside REST and SMPP.

How the request format differs

Apifon quickstart:

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"}]}'

Infobip quickstart:

curl -X POST 'https://xxxxxx.api.infobip.com/sms/2/text/advanced' \
  -H 'Authorization: App YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{"messages":[{"from":"InfoSMS","destinations":[{"to":"15551234567"}],"text":"Hello from Infobip"}]}'

Endpoint. Apifon posts to a fixed host, https://ars.apifon.com/services/api/v1/sms/send. Infobip posts to an account-specific base URL, https://{base_url}.api.infobip.com/sms/2/text/advanced — you take your personal subdomain from the dashboard.

Authentication. Apifon accepts either HMAC-signed requests (Authorization: ApifonWS <api-key>:<signature> plus an X-ApifonWS-Date header) or an OAuth2 Bearer token (scope smsGateway); the quickstart above uses the Bearer token. Infobip uses a single API-key header, Authorization: App {api_key} — there is no date header or signature to compute.

Payload mapping. Apifon sends one message object plus a separate subscribers array. Infobip wraps everything in a messages array where each entry carries its own recipient, sender and body:

  • Body: message.textmessages[].text
  • Sender: message.sender_idmessages[].from
  • Recipient: subscribers[].numbermessages[].destinations[].to

Migration checklist

  1. Create an Infobip account and generate an API key from the dashboard; note your personal base URL. See how to start with Infobip.
  2. Map the request fields as above (texttext, sender_idfrom, numberdestinations[].to).
  3. Re-point your sending code to https://{base_url}.api.infobip.com/sms/2/text/advanced and swap the auth header to Authorization: App {api_key}, dropping the X-ApifonWS-Date header.
  4. Re-test in Infobip’s sandbox before sending live traffic — Apifon had none, so this is a new safety net.
  5. Update delivery/webhook callbacks to Infobip’s format so status reports keep flowing.
  6. Run both providers in parallel and compare delivery.
  7. Cut over once you are confident, arranging top-up or a contract as needed.

Watch out for

  • Account-specific base URL. Unlike Apifon’s fixed host, Infobip’s endpoint includes your own subdomain — a hardcoded host will fail.
  • Pricing model. Apifon’s self-serve prepaid balance gives way to Infobip’s primarily quote/contract-based model, so budget for a sales conversation to lock in rates.
  • Payload shape. The move to messages[] / destinations[] arrays is a structural change, not a field rename.
  • No published SMS price on either side, so validate rates against your own account before cutover.

For a full side-by-side, see the Apifon vs Infobip comparison.