How to migrate from SMSAPI to Vonage
A developer's guide to migrating messaging from SMSAPI to Vonage: channel and compliance differences, request-format mapping, and a step-by-step checklist.
SMSAPI is a Polish business-messaging platform (a brand of LINK Mobility Poland) offering SMS, MMS, RCS, WhatsApp and voice through a REST API. Vonage is a broader communications-API provider (part of Ericsson) covering the same channels plus additional ones. On the messaging.dev Score the two sit far apart — SMSAPI rates 44/100 and Vonage 89/100 — so this guide walks through what actually changes when you move your sending code across.
What changes at a glance
Channels you gain, channels you lose. SMSAPI supports SMS, MMS, RCS, WhatsApp and voice. Vonage supports every one of those and adds Viber and Facebook Messenger, so you lose no channel by migrating. Neither provider offers Telegram, Apple Messages for Business or email, so nothing changes there.
Compliance and data residency. Both are GDPR-compliant and ISO 27001 certified. Vonage additionally holds SOC 2 and HIPAA, so you gain certifications rather than losing any. On residency, SMSAPI runs EU servers only with no region choice; Vonage offers EU and US servers, plus APAC and Australia, with an explicit data-residency choice.
Pricing and free credit. SMSAPI uses prepaid pay-as-you-go credit (minimum top-up around €30, from ~€0.04 per SMS). Vonage is pay-as-you-go per message/minute with volume discounts (approx. $0.0072 per US SMS segment plus carrier fees). Both give free credit to start — SMSAPI a free test SMS on signup, Vonage €2 of trial credit.
Tooling. Both self-onboard, offer a sandbox, and rate high on docs quality. SDK coverage overlaps on PHP, Python, Java and C#; SMSAPI also ships Go and Bash, while Vonage adds Ruby and Kotlin (and Node.js in place of SMSAPI’s generic JavaScript). One integration-type difference: SMSAPI exposes both REST and an SMTP interface, whereas Vonage is REST-only.
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"
Vonage quickstart:
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 / base URL. You move from the single
https://api.smsapi.com/sms.doto Vonage’shttps://rest.nexmo.com/sms/json(legacy SMS API) orhttps://api.nexmo.com/v1/messages(Messages API). - Authentication. SMSAPI passes an OAuth 2.0 token in the header (
Authorization: Bearer <token>). Vonage’s SMS API instead takes an API key + API secret as request fields, while the Messages API uses JWT auth. The credential moves out of the header and into the body (or into a signed token). - Payload fields. The recipient (
to) and sender (from) keep the same names. SMSAPI sends parameters in the query string and names the bodymessage; Vonage sends form-encoded fields and names the bodytext. So the main mapping ismessage→text, delivered as-dform data rather than URL query parameters.
Migration checklist
- Create a Vonage account and copy your API key and secret (or set up a JWT/application for the Messages API) from the dashboard. See how to start with Vonage.
- Map the request fields: point at the new endpoint, move credentials from the
Authorizationheader toapi_key/api_secret(or JWT), and renamemessagetotext. - Re-point your sending code — swap in a Vonage SDK (Node.js, Python, PHP, Java, C#, Ruby or Kotlin) or adjust your raw HTTP client.
- Re-test in Vonage’s sandbox before sending live traffic — the sandbox is available.
- Update webhooks and delivery callbacks to the fields and status codes Vonage returns.
- Run both providers in parallel, comparing delivery on real numbers.
- Cut over once delivery and callbacks match your baseline.
Watch out for
- No SMTP interface. SMSAPI offered an SMTP path alongside REST; Vonage is REST-only, so any email-to-SMS/SMTP sending must move to the API.
- SDK gaps. If you relied on SMSAPI’s Go or Bash SDK, Vonage doesn’t list those — you’ll use another SDK or hand-write HTTP calls.
- Two SMS products. Vonage splits a legacy SMS API (key + secret) from the Messages API (JWT); choose one deliberately, as their auth and endpoints differ.
- Silent field rename. Leaving the body as
messageinstead oftextwill produce empty or rejected messages.
For a full side-by-side, see the SMSAPI vs Vonage comparison.