← all adapters

twilio-style

simulates Twilio API 2010-04-01

restadapter v0.1.06 routes

verification

SDKverified with twilio-go v1.30.9verified with twilio-node 6.1.0 (floor)· surface 6 · not implemented 6 · differs 4

use it

# add to stunt.yaml
services:
  twilio:
    adapter: embedded:twilio-style

# then
$ stunt up

The embedded: source extracts this adapter from the binary — no git clone, fully offline.

how to mock the Twilio API locally

Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Twilio API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real Twilio API 2010-04-01 surface — the data is fake, the behavior is real.

backing stores

messagescallsverifications

api surface (6)

generated from the adapter manifest — exactly what boots, nothing more · covers 2% of the real API's 197 routes (derived from sdk twilio-node @ 6.1.0 (floor))

6 routes
POST/2010-04-01/Accounts/{account_sid}/Messages.json
GET/2010-04-01/Accounts/{account_sid}/Messages.json
GET/2010-04-01/Accounts/{account_sid}/Messages/{sid}
POST/2010-04-01/Accounts/{account_sid}/Calls.json
POST/v2/Services/{service_sid}/Verification
POST/v2/Services/{service_sid}/VerificationCheck

SDK-verified behaviors (8)

  • CreateMessage (SM sid assigned)
  • FetchMessage poll reaches terminal state
  • +15005550001 magic number -> failed
  • ListMessage To filter honored
  • status callbacks verify against Twilio's HMAC-SHA1 formula
  • Create + SDK fetches drive the lifecycle
  • Callbacks verified by twilio-node's own validateRequest
  • The magic invalid number -> failed

Not implemented (6)

  • No message redact/cancel or scheduled-send endpoints
  • Calls are create-only: no GET /Calls list, GET /Calls/{Sid}, or recordings
  • No Messaging Services, Phone Numbers, or Addresses management
  • No Verify services CRUD, verification listing, or attempts endpoints
  • No Media resource for MMS attachments (list/content fetch)
  • Call Url is never fetched; no TwiML execution is modeled

Differs from the real API (4)

  • Message status derives from the clock on read: sent at +1s, delivered at +3s after send
  • Verify codes are deterministic: last 6 digits of the To number, not a random SMS code
  • simulate_fail:true in the POST body is a simulator extension forcing undelivered (30007)
  • PageSize omitted returns all messages in one page; real Twilio defaults to 50
want more of the Twilio API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.

case study