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.
API key authentication - use your Zernio API key as a Bearer token
In: header
PNG, JPG, WebP, GIF or PDF, max 4MB.
binaryResponse 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.uploadSmsOptInProofFile();console.log(data);{
"url": "string"
}{
"error": "Unauthorized"
}Start a carrier registration POST
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`.
Upload opt-in form proof for an appeal POST
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`).