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).
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Path Parameters
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"}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.