Speko Docs
SMS

Consent, suppression, and quiet hours

Record proof, enforce campaign-scoped consent, and honor organization-wide opt-outs.

Proactive SMS requires an active consent record for the workspace, recipient, and the sender's current 10DLC campaign. A direct reply may use the 24-hour recipient-initiated conversation exception, but suppression always wins.

Create one record with POST /v1/sms/consents or import up to 1,000 JSON records with POST /v1/sms/consents/import:

{
  "recipient": "+12025550123",
  "campaign_id": "campaign_...",
  "source": "webform",
  "proof_reference": "signup/form-submission-982",
  "proof": "Consent checkbox text and captured form payload",
  "timezone": "America/New_York",
  "captured_at": "2026-09-01T13:00:00Z"
}

Speko stores a SHA-256 proof hash rather than returning raw proof. Sources are inbound, api, keyword, webform, paper, verbal, and import. Revoke with POST /v1/sms/consents/{id}/revoke.

Keywords

Exact normalized STOP-family keywords create an organization-wide suppression, revoke applicable active consents, pause automation, and emit sms.opted_out. START/UNSTOP lifts suppression and creates consent for the receiving number's current campaign. HELP does not alter consent.

Telnyx Advanced Opt-Out sends the carrier acknowledgement. Speko does not send a duplicate STOP/START/HELP response.

Read the current state through GET /v1/sms/consents and GET /v1/sms/suppressions. Consent and opt-out audit facts are retained for seven years. Message text follows the configurable 30–3,650 day retention policy (730 days by default).

Precedence

  1. Active organization-wide suppression blocks every sender.
  2. Proactive traffic requires campaign-scoped active consent and a timezone.
  3. A normal inbound message opens the 24-hour conversational reply window.
  4. Quiet hours shift proactive traffic to the next 08:00–21:00 recipient-local window, including daylight-saving transitions.

On this page