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

Appeal a rejected campaign

Appeals a rejected 10DLC campaign with the carrier registry. Only a registration that reached campaign creation can be appealed; a brand-level rejection should be fixed and re-verified instead. On success the registration returns to pending.

Content rejections (e.g. an opt-in flow without a verifiable form link, or unrealistic samples) should be FIXED in the same call: pass the corrected messageFlow / sample1 / sample2 and the campaign is updated before the appeal is filed, so the reviewer sees the new content. The current content is on GET /v1/sms/registrations/{id} (campaignContent).


POST
/v1/sms/registrations/{id}/appeal

Authorization

bearerAuth
AuthorizationBearer <token>

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

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response 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.appealSmsRegistration({  path: {    id: 'abc123',  },  body: {    appealReason: 'string',  },});console.log(data);
{  "status": "pending"}
Was this page helpful?

Deactivate a brand/campaign registration

Terminates the campaign with the carrier registry so the recurring monthly campaign fee stops (carriers bill the first 3 months of a campaign regardless). Numbers covered by it can no longer SEND texts (receiving is unaffected) until they're registered under a new brand. Irreversible: a deactivated campaign cannot be restored; texting again later requires a new registration (new one-time and review fees). Idempotent.

Reply to a change request

Replies to a reviewer change request on a registration in `changes_requested` state: a note, hosted document URLs (from `POST /v1/sms/opt-in-proof`), or both, sent together. When the request was written as points (`reviewRequest` on the registration), send one entry in `answers` per point. The registration returns to `requested` (back in review), and you do not need to resubmit the whole registration. A `rejected` registration can also be answered when we asked for changes to fix it (`reviewRequest` set); it stays `rejected`. To change the submitted brand/campaign fields themselves, resubmit via `POST /v1/sms/registrations` with `resubmitRequestId` instead.

appealReason*string

Goes verbatim to the carrier reviewer. Address the decline reason directly.

Length10 <= length <= 2000
messageFlow?string

Corrected opt-in flow; include a link to the opt-in page/form.

Length40 <= length <= 2048
sample1?string
Length20 <= length
sample2?string
Length20 <= length