Migration guide

How to migrate from GMS to Infobip

A developer-focused guide to moving from GMS to Infobip, covering channel, compliance, and residency differences plus the exact API request and auth changes.

GMS is an enterprise CPaaS and A2P messaging provider offering SMS, WhatsApp, Viber, RCS and email through a single API. Infobip is a global omnichannel communications platform covering those same channels plus MMS, voice, and several additional chat apps. On the messaging.dev Score, GMS rates 36/100 and Infobip 96/100; this guide walks through the concrete capability and API changes involved in moving from one to the other, as a factual reference rather than a recommendation.

What you gain and what you lose

Channels. Every channel GMS supports — SMS, RCS, WhatsApp, Viber, and email — is also supported by Infobip, so you lose no channels in the move. You gain MMS, Facebook Messenger, Telegram, Apple Messages for Business, and voice, none of which GMS offers.

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

Data residency. GMS runs EU servers only, with no US option and no region choice. Infobip offers both EU and US servers, lets you choose data residency, and additionally operates in APAC, Latin America, the Middle East, and Africa.

Onboarding, pricing, tooling. GMS requires account activation (no self-onboarding), offers no free developer credit, ships SDKs for iOS (Swift) and Android (Kotlin) only, exposes a REST API, has no sandbox, and rates “med” on docs quality. Infobip supports self-service onboarding with free trial credit, ships server-side SDKs for Java, C#, Python, PHP, Go, and Node.js, exposes REST plus SMPP and SMTP, provides a sandbox, and rates “high” on docs. Both use quote/contract-based pricing with no public price list, though Infobip also advertises some pay-as-you-go options.

How the request format differs

GMS quickstart:

curl -X POST 'https://api-v2.hyber.im/{client_id}' \
  -u 'CLIENT_ID:API_PASSWORD' \
  -H 'Content-Type: application/json' \
  -d '{
    "phone": "380631010100",
    "channels": ["sms"],
    "sms": {
      "sender": "MyBrand",
      "text": "Hello from GMS",
      "ttl": 300
    }
  }'

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

Three things change. Endpoint: GMS posts to https://api-v2.hyber.im/{client_id}, with your client ID embedded in the path and the channel selected inside the body. Infobip posts to https://{base_url}.api.infobip.com/sms/2/text/advanced, where {base_url} is your account-specific subdomain and the channel is fixed by the path. Authentication: GMS uses HTTP Basic auth (Authorization: Basic base64(client_id:password), sent here via curl’s -u flag); Infobip uses an API-key header, Authorization: App YOUR_API_KEY. Payload: GMS takes a single top-level phone string, a channels array, and a nested sms object with sender, text, and ttl. Infobip takes a messages array; each entry has from (sender), a destinations array of { "to": ... } objects (recipient), and text (body). So phone maps to destinations[].to, sms.sender to from, and sms.text to text, shifting from a channel-envelope shape to a messages-array shape.

Migration checklist

  1. Create an Infobip account and generate an API key from the dashboard.
  2. Note your account base_url subdomain for the endpoint.
  3. Map the request fields: phone to destinations[].to, sms.sender to from, sms.text to text.
  4. Swap authentication from HTTP Basic (-u) to the Authorization: App header.
  5. Re-point your sending code to /sms/2/text/advanced on your base URL.
  6. Re-test against Infobip’s sandbox before sending live traffic (GMS has none, so this is a new safety net).
  7. Re-register delivery-report and inbound webhooks/callbacks on Infobip.
  8. Run both integrations in parallel and reconcile delivery reports.
  9. Cut over once results match.

Watch out for

  • Multi-channel is not one endpoint. GMS selects the channel inside a single request body; Infobip’s SMS quickstart uses a channel-specific path (/sms/2/...). WhatsApp, Viber, RCS, and the other channels use different endpoints and payloads, so re-check the Infobip quickstart per channel.
  • Recipient is now an array of objects, not a single phone string, so a field rename alone will not work.
  • Pricing still needs a sales quote. Infobip’s SMS starting price is not publicly listed; the free trial credit and pay-as-you-go options let you start, but firm rates come from sales.

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