Send an SMS/MMS
Sends an SMS (or MMS when mediaUrls is set) from one of your
SMS-enabled numbers. At least one of text / mediaUrls is required.
Both numbers are normalized to E.164, so from matches regardless of
formatting and replies thread into the same inbox conversation.
US numbers must have an approved carrier registration
(/v1/sms/registrations) before messages deliver.
Idempotency: send an Idempotency-Key header to make retries safe:
same key + same body replays the original response instead of sending a
second message; same key + different body returns 422; a key still in
flight returns 409.
API key authentication - use your Zernio API key as a Bearer token
In: header
Header Parameters
Optional client-generated unique key (e.g. a UUID) that makes send retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409.
length <= 255One of your SMS-enabled numbers (E.164; formatting is normalized).
Recipient number (E.164).
Message body. Required unless mediaUrls is set. Max 10 SMS segments (1530 GSM-7 or 670 unicode characters).
Public media URLs to attach (sends as MMS). Max 10.
items <= 10Optional. Schedule the send for a future time (ISO 8601 with offset, e.g. 2026-08-01T12:00:00Z). Must be in the future. The message is queued and the message.delivered webhook fires when it actually sends.
date-timeResponse Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.sms.sendSms({ body: { from: 'string', to: 'string', },});console.log(data);{
"id": "string",
"conversationId": "string",
"status": "sent"
}{
"error": "Unauthorized"
}Add number to SMS registration POST
Attaches this number to your existing approved 10DLC campaign instead of running a fresh registration: the number inherits the campaign's approval (no new brand or campaign, no extra carrier fee). Enable SMS on the number first (`POST /v1/phone-numbers/{id}/sms`; its response tells you whether a reusable registration exists).
Create a registration share link POST
Creates a single-use, expiring link (valid 7 days) that lets someone else (whoever has the legal business details) fill in the carrier registration form for one of your numbers, without a Zernio login. The registration is created under your account once the form is submitted.