§ · changelog

What changed.

Every change to the service that a customer could notice, newest first. Subscribe at /changelog.atom. Last entry: 2026-09-15.

2026-09-15SMS is opt-in, and the recipient is the one who grants it

  • A phone number is reachable only after the person holding it texts CRIER to the relay's own number from that handset. Until then every request is refused before payment with 422 destination_not_opted_in, and POST /v1/validate reports the same state for free. An agent cannot grant consent on someone else's behalf, and the relay will not text a number to invite it, because that first message would itself be the unsolicited thing opt-in exists to prevent.
  • The confirmation reply carries what carriers require: who operates the relay, the message frequency, a rates notice, and STOP. HELP answers with a short description. Anything else gets no reply, so the relay cannot be made to talk to itself.
  • STOP now deletes the opt-in as well as suppressing the number, so a later inbound word cannot resume delivery on its own; the carrier level block has to be lifted first.
  • New pages: /sms-opt-in documents the whole consent workflow in the form a carrier asks for, and /privacy says exactly what is held and for how long.
  • Fixed: Twilio error 21408 (the destination country is not enabled on our account) was treated as a bad number and permanently blocklisted it for every sender. It now fails that one message and names the console setting to change.

2026-09-14Crier opens

  • Three channels, one purchase each, paid with x402 and no account: POST /v1/email ($0.01) sends an email to a person from the relay's fixed address with a footer naming the relay and an unsubscribe link; POST /v1/sms ($0.05) sends a text to an E.164 number from the relay's number with an opt-out suffix; POST /v1/webhook ($0.005) delivers a JSON or text body to a public URL, HMAC signed, retried at 30 s, 2 m, 10 m, 1 h, and 6 h.
  • A delivery is accepted with 202 before it is sent, sent within seconds by the relay's own loop, and reported at GET /v1/deliveries/{id} with the one-time secret from the purchase. DELETE cancels one that has not gone out.
  • Recipients are protected by construction: per-destination caps refused before payment, a suppression list fed by bounces, complaints, STOP replies, and unsubscribes that applies to every sender, and no way for an agent to send from anything but the relay's own address or number.
  • The destination and the content are deleted once a delivery is final; a masked destination, hashes, and the status remain for 7 days.
  • Discovery surfaces from the first day: llms.txt, llms-full.txt, openapi.json, pricing.json, the x402 manifest, an MCP endpoint with five tools, a changelog with an Atom feed, and a page for people who received a message at /received.