sms-opt-in

Submit Consent

Record an individual's affirmative SMS opt-in consent.

THE ROW IS THE RECORD NOW, not the email. This used to only email a proof-of-consent artifact to support@ — consent existed solely in an inbox, queryable by nobody. It now persists an sms_consent row as pending_review (a web submission is NOT bound to a site contact and authorizes nothing until an owner reviews and links it), commits, answers, and only then emails.

NO-FAIL-AFTER-PERSIST, AND IT IS A DELIBERATE BEHAVIOR CHANGE: the email is best-effort AFTER the commit, so an SES outage no longer 502s a submission whose consent we have already durably recorded. Telling someone their opt-in failed when it did not is worse than a missing notification email.

ALSO A BEHAVIOR CHANGE: numbers are canonicalized with the shared US-only to_e164, so a non-NANP number is now a 422 instead of a stored record we could never text. Both changes affect the live verdun.ai form.

consent_version is optional for exactly as long as verdun.ai does not send it: missing means legacy_web_v1 (the live copy), while a version we do not recognize is a 422 — a key we cannot resolve to words looks like evidence and isn't.

The response body is ALWAYS the same generic {"status": "ok"}. It never echoes the row: an unauthenticated endpoint that reflected stored consent details back would be an oracle for whether a number has opted in.

post/sms-opt-in/consent

Request

  • Base URL
    https://api.verdun.ai (the document declares no server; this is the origin it was published from)
  • URL
    https://api.verdun.ai/sms-opt-in/consent
  • Auth
    none declared

Request body application/x-www-form-urlencoded

full_namestring required
phonestring required
consentstring required
emailstring nullable
organizationstring nullable
companystring nullable
consent_versionstring nullable
idempotency_keystring nullable

Response

Successful Response

unknown required

Changes

No recorded changes to this operation across all 2 revisions of this API.