How to migrate from SMSAPI to Sinch
A developer-focused, data-backed guide to moving your messaging integration from SMSAPI to Sinch, covering channels, compliance, request format and a step-by-step checklist.
SMSAPI is a Polish business-messaging platform (a brand of LINK Mobility Poland) offering bulk SMS, MMS, VMS voice, RCS and WhatsApp Business messaging over a REST API. Sinch is a larger cloud-communications platform covering messaging, voice and email APIs from a single account. On the messaging.dev Score, SMSAPI rates 44/100 and Sinch 92/100 — the sections below lay out what actually differs so you can plan the move as data, not marketing.
What changes when you move
Channels you gain, none you lose. Both providers cover SMS, MMS, RCS, WhatsApp and voice. Moving to Sinch adds Viber, Facebook Messenger, Telegram, Apple Messages for Business and email — five channels SMSAPI does not offer. No channel you rely on today disappears.
Compliance. SMSAPI is GDPR and ISO 27001 aligned. Sinch keeps both and adds SOC 2 and HIPAA, so you gain certifications rather than losing any.
Data residency. SMSAPI hosts within the EU only, with no region choice. Sinch offers both EU and US data residency, a residency choice, and additional regions (APAC, Australia, Brazil).
Pricing. SMSAPI uses prepaid pay-as-you-go credit (minimum top-up around €30, from ~€0.04 per SMS). Sinch is pay-as-you-go per message with volume and committed-use pricing (approx. $0.0075 per US SMS segment). Both include free developer credit and self-service onboarding.
Tooling that stays the same. Both ship high-quality docs and a sandbox test environment, and both expose REST and SMTP (Sinch adds SMPP). Official SDKs overlap on PHP, Python, Java and C#; SMSAPI’s JavaScript SDK maps to Sinch’s Node.js SDK, but SMSAPI’s Go and Bash SDKs have no official Sinch equivalent.
For a fuller side-by-side, see Sinch vs SMSAPI.
How the request format differs
SMSAPI quickstart:
curl -X POST -H "Authorization: Bearer YOUR_API_TOKEN" "https://api.smsapi.com/sms.do?to=48500000000&from=SenderName&message=Hello+world&format=json"
Sinch quickstart:
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"}'
Three things change:
- Endpoint. You swap
https://api.smsapi.com/sms.doforhttps://us.sms.api.sinch.com/xms/v1/{service_plan_id}/batches. Sinch embeds aservice_plan_idin the URL path; SMSAPI has no equivalent. - Auth. Both use a Bearer token in the
Authorizationheader, so the header itself is unchanged — only the token value differs. SMSAPI describes it as an OAuth 2.0 API token; Sinch as an API token. - Payload. SMSAPI passes fields as URL query parameters:
to(a single number),from(the sender name) andmessage(the URL-encoded body). Sinch sends a JSON body instead:tobecomes an array of numbers,fromis the sender, and the message text moves tobody. You also add aContent-Type: application/jsonheader.
Migration checklist
- Create a Sinch account, then copy your API token and note the
service_plan_idfrom the dashboard. - Map each SMSAPI field to Sinch:
to→to[],from→from,message→body. - Re-point your sending code from
sms.doquery strings to a JSONPOSTagainst the Sinch batches endpoint. - Re-test in Sinch’s sandbox before sending any live traffic.
- Update your delivery-report webhooks and callbacks to Sinch’s format.
- Run both providers in parallel and compare delivery results.
- Cut over once Sinch matches your baseline; the new-provider walkthrough is in how to start with Sinch.
Watch out for
- The default endpoint is the US region. The quickstart uses
us.sms.api.sinch.com. Sinch supports EU residency, but you must select the EU cluster and endpoint explicitly if EU data residency matters to you. - No official Go or Bash SDK. If your SMSAPI integration relies on the Go or Bash SDK, you will drop to raw REST or another supported language on Sinch.
- A new required
service_plan_id. It is part of every request path — a concept SMSAPI does not have. - Recipients become an array and the body moves into JSON. Any code that builds SMSAPI query strings needs rewriting to construct a JSON payload.