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

Upload opt-in form proof for an appeal

Hosts a screenshot (or PDF) of your SMS opt-in form and returns its public URL. Carrier reviewers reject campaigns whose consent can't be verified and ask for a "link/screenshot of the opt-in form". The registry has no attachment field, so include the returned URL inside the messageFlow you submit with the appeal (POST /v1/sms/registrations/{id}/appeal).


POST
/v1/sms/registrations/{id}/opt-in-proof

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

multipart/form-data

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.uploadSmsOptInProof({  path: {    id: 'abc123',  },});console.log(data);
{  "url": "string"}
Was this page helpful?

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.

Upload opt-in form proof

Hosts a screenshot (or PDF) of your SMS opt-in form and returns its public URL. Include that URL in the campaign's `messageFlow` (the opt-in workflow text). The carrier registry has no attachment field, so reviewers verify consent by opening links in that answer. Works before a registration exists (use it when registering) and for appeals. `/v1/sms/registrations/{id}/opt-in-proof` is an alias.

file*file

PNG, JPG, WebP, GIF or PDF, max 4MB.

Formatbinary