How to migrate from SlickText to Sinch
A developer-focused guide to moving SMS, MMS, and RCS sending from SlickText to Sinch, covering channels, compliance, pricing, and request-format changes.
SlickText is a US and Canada SMS, MMS, and RCS marketing platform built around mass-texting campaigns, automation, and a REST API. Sinch is a broader cloud communications platform exposing messaging, voice, and email APIs across 150 countries. On the messaging.dev Score, SlickText rates 38/100 and Sinch 92/100; this guide covers what actually changes at the API level when you move between them.
What you gain and what you lose
Channels. You keep SMS, MMS, and RCS. You gain WhatsApp, Viber, Facebook Messenger, Telegram, Apple Messages for Business, voice, and email — all on one account. No channel that SlickText supports is lost in the move.
Compliance and data residency. Both providers carry SOC 2 and HIPAA, so neither certification is lost. Sinch adds GDPR and ISO 27001. SlickText runs on US servers only, with no region choice; Sinch offers both US and EU servers, data-residency choice, and additional APAC, Australia, and Brazil regions.
Pricing model. This is the biggest operational change. SlickText sells monthly subscription plans that bundle a fixed pool of message credits (one credit equals one SMS segment) with rollover, from $29/month for 500 credits (~$0.058 per credit). Sinch is pay-as-you-go per message with volume and committed-use pricing — roughly $0.0075 per US SMS segment plus carrier fees. You move from a predictable bundled-credit model to metered usage.
Developer experience. Sinch ships free trial credit, official SDKs for Java, Python, C#, Node.js, and PHP, a sandbox test environment, and high-quality docs. SlickText offers no free developer credit, no published SDKs, and no sandbox, with mid-tier docs. Sinch also supports SMTP and SMPP alongside REST; SlickText is REST-only.
How the request format differs
SlickText quickstart:
curl -X POST https://dev.slicktext.com/v1/brands/BRAND_ID/campaigns/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Send From API",
"body": "Welcome to ACME",
"status": "send",
"audience": { "contact_lists": [21] }
}'
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 / base URL. SlickText posts a campaign to
https://dev.slicktext.com/v1/brands/{brand_id}/campaigns/, scoped by yourbrand_id. Sinch posts a batch tohttps://us.sms.api.sinch.com/xms/v1/{service_plan_id}/batches, scoped by yourservice_plan_id. The Sinch host is region-pinned (us.here), so pick the host that matches your chosen data region. - Authentication. Both use a Bearer token in the
Authorizationheader, so the mechanism is unchanged — you swap one header value for the other. SlickText tokens are generated under Settings > API & Webhooks > API Keys; Sinch uses an API token tied to your service plan. - Payload mapping. The message text field is
bodyon both. The recipient differs most: SlickText targets a stored audience viaaudience.contact_lists(list IDs), while Sinch takes explicit E.164 numbers in atoarray. Sinch also requires an explicitfromsender number, which the SlickText campaign call does not send. SlickText’snameandstatusfields have no Sinch equivalent and are dropped.
Migration checklist
- Create a Sinch account, grab your API token, and note your
service_plan_id. - Map each SlickText field to Sinch:
bodytobody, contact-list targeting to an explicittoarray of E.164 numbers, and add afromsender. - Re-point your sending code to the regional
batchesendpoint and swap the Bearer token value. - Re-test against the Sinch sandbox before sending live traffic.
- Rebuild your delivery/webhook callbacks against Sinch’s delivery-report format.
- Run both integrations in parallel and reconcile delivery results.
- Cut over once the Sinch path matches your expected delivery.
Watch out for
- Pricing shifts from bundled credits to metered usage. There is no rollover pool; you pay per message plus carrier fees, so low-volume budgeting works differently than a fixed monthly plan.
- You manage recipients yourself. SlickText’s saved
contact_lists/ campaign abstraction has no direct Sinch equivalent — the batch API expects raw E.164 numbers and an explicit sender on every request. - Region-pinned host. Because Sinch supports data-residency choice, the base URL varies by region; sending to the wrong regional host is an easy mistake to make.
For a full walkthrough of the target, see how to start with Sinch, or the side-by-side Sinch vs SlickText comparison.