Zernio
Zernio
API Reference

SMS

Messaging

Send an SMS/MMSPOSTLook up carrier + line typeGETList SMS opt-outsGET

Number Setup

Enable SMS on a numberPOSTDisable SMS on a numberDELETEAdd number to SMS registrationPOST

Registrations

List carrier registrationsGETPre-check a carrier registrationPOSTStart a carrier registrationPOSTGet a carrier registrationGETCreate a registration share linkPOSTDeactivate a brand/campaign registrationDELETE

Registration Review

Appeal a rejected campaignPOSTReply to a change requestPOSTUpload opt-in form proof for an appealPOSTUpload opt-in form proofPOSTRe-send the sole-prop OTPPOSTSubmit the sole-prop OTPPOST

Sender IDs

List alphanumeric sender IDsGETCreate an alphanumeric sender IDPOSTDelete an alphanumeric sender IDDELETERequest a higher sender ID daily limitPOST
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources
SMS

Start a carrier registration

Starts the US carrier registration that a number needs before SMS delivers: 10DLC (standard company or sole-proprietor) or toll-free verification. 10DLC needs brand + campaign; toll-free needs tollFree. Approval is asynchronous; poll GET /v1/sms/registrations/{id} (sole-prop registrations first need the OTP step: a code is texted to the brand's mobile number, submit it via /verify-otp).

Already have an approved registration? Add another number to it with POST /v1/phone-numbers/{id}/sms/reuse-registration instead of registering (and paying the carrier brand fee) again.

Rather have your client fill in the legal business details? Create a share link with POST /v1/sms/registrations/share.


POST
/v1/sms/registrations

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.sms.startSmsRegistration({  body: {    registrationType: 'standard_10dlc',  },});console.log(data);
{  "registrationId": "string",  "status": "pending",  "awaitingOtp": true}
Was this page helpful?

Pre-check a carrier registration

Dry-run of `POST /v1/sms/registrations` for 10DLC: validates and composes the exact brand/campaign payloads a submission would store (branding, disclosures, auto-replies), runs deterministic compliance lints plus an AI reviewer over them, and returns the findings WITHOUT creating anything. Use it to fix issues before submitting; `block` severity findings indicate a near-certain carrier rejection.

Get a carrier registration

Poll this for approval progress after starting a registration.

registrationType*string

Value in

  • "standard_10dlc"
  • "sole_prop_10dlc"
  • "toll_free"
phoneNumbers?array<string>

Your numbers this registration covers. When omitted or empty on a 10DLC registration, defaults to your active SMS-enabled US local numbers not already covered by another registration.

brand?

Required for 10DLC. The legal entity behind the traffic (TCR brand).

campaign?

Required for 10DLC. What you'll send and how recipients opt in/out. The opt-in/opt-out/help auto-responses (optinMessage, optoutMessage, helpMessage) are optional: when omitted, a compliant, brand-named template with the carrier-required disclosures is generated for you. If you do send them, they must name the registered brand and carry the disclosures. Submissions that don't are rewritten to the compliant template before the campaign is filed.

messagingBrandName?string

DBA / trade name used to brand message content (samples and auto-replies) when it differs from the legal name, e.g. a sole proprietor texting under a business name. The legal brand.displayName is still what the carrier vets.

Length2 <= length <= 60
wizardValues?

Raw dashboard-wizard answers, stored only to prefill edit-and-resubmit. API integrators can omit.

resubmitRequestId?string

Resubmit a registration that was returned for changes. Updates it in place instead of creating a new one.

tollFree?

Required for toll_free.