Migration guide

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 your brand_id. Sinch posts a batch to https://us.sms.api.sinch.com/xms/v1/{service_plan_id}/batches, scoped by your service_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 Authorization header, 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 body on both. The recipient differs most: SlickText targets a stored audience via audience.contact_lists (list IDs), while Sinch takes explicit E.164 numbers in a to array. Sinch also requires an explicit from sender number, which the SlickText campaign call does not send. SlickText’s name and status fields have no Sinch equivalent and are dropped.

Migration checklist

  1. Create a Sinch account, grab your API token, and note your service_plan_id.
  2. Map each SlickText field to Sinch: body to body, contact-list targeting to an explicit to array of E.164 numbers, and add a from sender.
  3. Re-point your sending code to the regional batches endpoint and swap the Bearer token value.
  4. Re-test against the Sinch sandbox before sending live traffic.
  5. Rebuild your delivery/webhook callbacks against Sinch’s delivery-report format.
  6. Run both integrations in parallel and reconcile delivery results.
  7. 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.