How to migrate from GatewayAPI to Sinch
A developer-focused guide to migrating from GatewayAPI to Sinch, covering channel and compliance differences, request-format changes, a migration checklist, and data-backed gotchas.
GatewayAPI is a Danish SMS gateway and messaging platform by ONLINECITY.IO, offering SMS, RCS and email APIs on EU-hosted infrastructure. Sinch is a larger cloud communications platform spanning messaging, voice and email across many channels. On the messaging.dev Score, GatewayAPI rates 54/100 and Sinch 92/100 — this guide covers what moving between them actually involves, presented as data rather than endorsement.
What changes when you move
Channels you gain: MMS, WhatsApp, Viber, Facebook Messenger, Telegram, Apple Messages for Business and Voice. SMS, RCS and email exist on both providers, so you lose no channel by switching.
Compliance: both are GDPR-aligned. Sinch additionally lists ISO 27001, SOC 2 and HIPAA, none of which GatewayAPI carries in the dataset.
Data residency: both offer EU servers and a data-residency choice. Sinch also runs US servers and lists APAC, Australia and Brazil regions.
Tooling and docs: GatewayAPI ships no official SDKs and has no sandbox, and its docs quality is rated medium. Sinch ships SDKs for Java, Python, C#, Node.js and PHP, provides a sandbox, and its docs quality is rated high. Both support REST and SMPP; GatewayAPI adds Email-to-SMS, Sinch adds SMTP.
Pricing and credit: both are pay-as-you-go per message and both offer free developer/test credit (GatewayAPI on request; Sinch a trial credit). Sinch adds volume and committed-use pricing; GatewayAPI uses prepaid credit with no monthly fees.
How the request format differs
GatewayAPI:
curl https://gatewayapi.com/rest/mtsms \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sender": "ExampleSMS", "message": "Hello World", "recipients": [{"msisdn": 4512345678}]}'
Sinch:
curl -X POST 'https://us.sms.api.sinch.com/xms/v1/YOUR_SERVICE_PLAN_ID/batches' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"from":"+15005550006","to":["+15551234567"],"body":"Hello from Sinch"}'
Endpoint: you move from a single fixed URL (https://gatewayapi.com/rest/mtsms) to a region-specific host with your service plan in the path (https://us.sms.api.sinch.com/xms/v1/{service_plan_id}/batches), so you must now supply a service_plan_id.
Auth: both send an Authorization header, but the scheme keyword changes from Token to Bearer.
Payload mapping: sender → from, message → body, and recipients: [{"msisdn": 4512345678}] → to: ["+15551234567"]. GatewayAPI takes recipients as objects with a bare numeric msisdn; Sinch takes a flat array of E.164 strings (with a leading +). GatewayAPI’s example uses an alphanumeric sender (ExampleSMS), while Sinch’s uses a numeric +E.164 from-number.
Migration checklist
- Create a Sinch account, then copy your API token and service plan ID from the dashboard.
- Map the request fields:
sender→from,message→body, andrecipients[].msisdn→to[]as+E.164strings. - Swap the endpoint to your region host and insert your
service_plan_idin the path; change the auth scheme fromTokentoBearer. - Re-point your sending code, optionally adopting one of the official SDKs.
- Re-test in Sinch’s sandbox before sending live traffic.
- Update delivery/status webhooks and callbacks to Sinch’s format.
- Run both providers in parallel and reconcile delivery reports.
- Cut over once volumes and delivery match.
Watch out for
- Country coverage: the dataset lists Sinch at 150 countries versus GatewayAPI’s 200 — confirm your destinations are supported before cutting over.
- Default region is US: the quickstart host is
us.sms.api.sinch.com. If you need EU data residency, select the matching EU region/host — Sinch offers a residency choice, but the sample endpoint does not use it. - Service plan in the path: every Sinch request needs a
service_plan_idin the URL, a step GatewayAPI’s single endpoint doesn’t have. - Sender format: Sinch’s example uses a numeric from-number, so verify alphanumeric sender-ID support and any registration requirements for your destinations.
For a step-by-step setup, see how to start with Sinch, or review the full GatewayAPI vs Sinch comparison.