Skip to main content
SMS is the pocket alarm: short text that reaches any phone, no internet or app required. Ideal for OTP, reminders, and urgent alerts.

What is SMS on Notifique?

It’s the channel to send short text (9 to 160 characters) straight to the recipient’s phone. You send from the dashboard or API; the platform handles queue, retries, and status for each message. You can:
  • Send verification codes (OTP) and one-time passwords
  • Remind about appointments, deliveries, and deadlines
  • Reach customers without WhatsApp or without an app installed
  • Schedule sends for a future date and time
  • Query history and status for each SMS
  • Receive customer replies (MO) and track them via webhook
Think of a note on a car windshield: few words, read immediately, no app needed.
Unlike WhatsApp, SMS does not use an instance (paired number). You only need an API Key with the right scope and recipients in international format (e.g. 5511999999999, no +).

When to use it?

It works very well for verification codes, urgent reminders, and customers without WhatsApp. For long text with images, prefer email. Mass campaigns are possible, but SMS uses more credits, weigh cost first.

How it works in practice

  1. Create an API Key with sms:send (and sms:read / sms:cancel if querying or canceling)
  2. Send to one or many numbers with POST /v1/sms/messages (up to 500 per call)
  3. The platform queues, sends, and updates status; your backend gets notifications if you set up webhooks
Each API Key belongs to one workspace. On v1 do not send x-workspace-id. If that header is present, the API returns 400 (WORKSPACE_HEADER_NOT_ALLOWED).

Message lifecycle

After send, an SMS moves through statuses like QUEUED (in queue), SENT (at the carrier), DELIVERED (confirmed on the phone), or FAILED (invalid number, block, etc.). Scheduled sends start as SCHEDULED; cancellations become CANCELLED. API cancellation works while status is QUEUED or SCHEDULED.

What you can do

  • Send to 1 to 500 international numbers per call
  • Schedule with schedule.sendAt
  • Query history or a send by id
  • Cancel queued or scheduled sends
  • Read inbound SMS (MO) with sms:read
  • Idempotency with Idempotency-Key header to avoid duplicates
  • Track clicks on short links (sms.clicked webhook)
  • Pick the send type with options.speed — see below

Send types (options.speed)

SMS is the only channel where you pick the carrier route. In the dashboard (SMS → New SMS → Send type), the labels are SMS Full, SMS Standard, and SMS Slow — in the API, use options.speed.
Omitting options.speed bills as standard. Invalid value → 400 (options.speed must be full, standard, slow).

Own number (from)

With from (id or E.164 of an active workspace number with SMS enabled), the message is sent from the line you purchased — recipients see your number, not the shared sender. Price is dynamic per destination country — see smsOwnNumber.rates[] in Pricing API. options.speed does not apply. Full guide: SMS with your own number.

speed is not priority

Billing details: Billing and pay-as-you-go. API examples: SMS referenceSend SMS (playground: Full, Slow, own number). Field and error details: API reference on the SMS tab.

Localization and variables

  • localization (mode: off | manual | ai, optional sourceLocale) and i18n translate text per recipient based on contact language.
  • Root variables substitute {{name}} placeholders in text (type: text).
  • For type: template, use payload.templateId and payload.variables.
  • The 202 response may include data.localization and, when some numbers are skipped, data.smsSkippedRecipients.
Shared localization fields: Localization and i18n. Send by template: Send by template. Variables and placeholders: Available variables.

After your first send

  • Track delivery and failure via webhooks (sms.sent, sms.delivered, sms.failed)
  • Process replies with sms.received and sms.replied, guide: Inbound messages
  • Test in Sandbox with sk_test_... before production

Next steps